PokerBot Uses FPGA For Card Calculating Horsepower

Played against humans, Poker is a game as much about reading your opponent as it is about the cards you’re dealt. That doesn’t mean there aren’t certain mathematical ways to aid your decision making based on probabilities. In this vein, a group of students from Cornell’s ECE 5760 class built a pokerbot on an FPGA.

The bot uses the principle of Monte Carlo simulation to calculate the probabilities of an individual winning a hand of Limit Texas Hold’em. Calculating the entire set of possible hands is impractical, so in a Monte Carlo simulation a sample is calculated instead. By accelerating these calculations on an FPGA, the pokerbot is able to calculate 300,000 possible hands in just 150 ms, and present a probability of winning to the human player. This same calculation method is then used to make decisions for the computer players in the game, too.

The team report that the FPGA’s processing power brought a 10x speed up compared to their C++ program running on an Intel i7-6700HQ. The strong statistical calculations help to make the computer players engaging and realistic to play against.

It’s another great example of a project from Bruce Land’s classes, which are somewhat of a hotbed of development each year. Video after the break.

12 thoughts on “PokerBot Uses FPGA For Card Calculating Horsepower

    1. IMHO: No way you should start with the big guns. ZYNQ (Xilinx ARM+FPGA combo) offers incredible possibilities, but the learning curve is insane and the complexity of interfacing with the built in ARM is not for beginners. You’d best start with the simplest FPGA you can find. The TinyFPGA looks nice.

      1. You can surely start with a xlinx. My first dev board was an arty a7 board with a xilinx artix-7.
        Using the free SDK and a good (e)-book for verilog You can easily start with FPGA.

    2. Doesn’t matter. The arm core adds a bit complexity over a pure fpga, but you don’t need to use it if you don’t want to.

      Otoh having a larger fabric will help when learning as optimization is less critical.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.