Technical details

System requirements:

  • 4+GB of free RAM for comfortable usage (full single-raised-pot with 2/3 pot bets everywhere takes about  1.2GB of RAM for wide 6max ranges and 1.9GB for wide HU ranges (90% vs 70%)); you need more for trees with multiple bet sizes (25bb HU tree with 2 sizes everywhere (30%-60%) is 5.9GB, 100bb tree with 2 sizes everywhere and 6max ranges is 7.8GB; the trees are proportionally smaller with smaller ranges).
  • modern 64-bit CPU (for comfortable usage i5/i7 quad or equivalent is recommended but we tested on older quads as well and it will work just slower (anywhere from 2x to 5x slower))
  • modern Windows (7 or newer) (but see next point)
  • Mac works. Our customers run the solver using Parallels or Bootcamp. If you would like to give it a shot, try the free-version first.
  • modern .Net Framework (available for free on Microsoft's website, already present on most modern computers)

Solution trees:

  • A typical tree takes anywhere from 500MB to 4GB of RAM if you use one bet size. Once you start adding bet-sizes you can build as big tree as your RAM can handle. If you are curious about specific trees, feel free to drop us an email. In general 16GB of RAM is almost never a limitation while 8GB sometimes is for really big trees with multiple bet sizes.
  • It's possible to save a tree and resume execution later. If you decide you want better quality of the solution you can always resume solving for a little more time
  • Quality of the solutions is expressed as exploitability per hand. If the solution is "exploitable" for x It means that perfect adversary (one knowing our exact strategy and employing best possible counter strategy) would expect to win x/hand. For example if the solution is exploitable by 0.25 with 5$/10$ blinds and 65$ starting pot (typical postflop spot) it means perfect adversary could win 0.25$/hand = 2.5bb/100. With PioSOLVER it's easy to get this kind of quality (I usually solve to something like 1bb/100). To put those numbers in perspective, rake in typical MSNL game these days is about 15-30bb/100 per player (remember that we are talking about postflop situations).

User input required for the solver to start:

  • Starting ranges of both players
  • Starting pot and stack
  • Bet sizes, raise sizes and other optional settings to customize the tree
  • Additional optional input: required accuracy, required solving time, number of threads to use, flop donkbet allowed/disallowed.

Text interface:

  • PioSOLVER is a standalone console program which communicates with outside world via text, human readable interface. This architecture makes it easy to integrate with other software (first of which is PioVIEWER) and to write scripts for it. This is very similar (and inspired by) to how chess engines work. Users who prefer to use GUI don't need to know about it. It's possible to queue the trees for solving using our graphical interface only.
  • See documentation of text interface of PioSOLVER


  • PioSOLVER implements benchmark command to measure how good your hardware is for solving big trees. It measures how many seconds it takes to do a few iterations on a sizeable tree (2.2GB). To see your benchmark time start PioSOLVER and type "bench". On my 3 years old quad (i7-3770 @ 3.4 GHz) I get 10 seconds as of today (PioSOLVER 1.4.1 July 10th 2015). Here are some logs for solving typical spots using this hardware, every test run until 0.25% of the pot accuracy is reached. The solver doesn't have problems getting it down to 0.1% but it's very rarely practical as the solution doesn't change much at that point (even 0.25% is a bit of an overkill). The solver is significantly faster on suited or paired boards and 3x faster on monotone (or same-rank) ones. Out of 1755 flops in Holdem 286 are rainbow unpaired, 1170 are either paired or suited and 299 are monotone or same rank. Average flop is about 1.64x faster than rainbow unpaired one.
  1. 3-bet pot with wide HU ranges: CLICK TO SEE
  2. Single raised pot with 25bb with a typical small flop c-bet, full tree: CLICK TO SEE.
  3. Typical CO vs BB 6max spot with 100bb: CLICK TO SEE
  4. 100BB HU pot with very wide ranges: CLICK TO SEE.
  5. SB vs BB (6max) case with very wide ranges : CLICK TO SEE
  6. 20bb CAP CO vs BB with 2 sizes everywhere (30% or 50% on the flop, 30%, 55% on the turn, 65% + shove on the river); flop donk-bet removed: CLICK TO SEE
  7. CO vs BB 3bet pot, 6-max, 100bb: CLICK TO SEE

One more example to give you an idea how good the performance is. In a recent Claudico vs humanity match the AI was stalling for often 30 seconds to recalculate the rivers. As explained by the authors, multiple bet sizes were needed and Claudico still needed to use lossy abstraction (which was one big factor contributing to it losing the match miserably) which caused it to miss blocker effect.
Claudico had a machine with 32 cores available for the task.
PioSOLVER doesn't use multiple cores for river cases (there was never a reason to implement it), doesn't use ANY abstraction and thus produces exact solutions with all the card-blockers fine points taken into account.
Even though we hold PioSOLVER to much higher standards it needs only a few seconds to rich almost perfect solution for even the biggest river situations. It's safe to say if allowed to use multiple cores PioSOLVER is at least 2 orders of magnitude faster and all that on your home PC!

     Other remarks:

    • If you are running PioSOLVER pro/edge for extended amount of time (several hours or more without breaks) be sure to control CPU temperature. If your cooling system isn't in stellar condition or you live in hot climate the CPU may overheat (typically i'7s are comfortable up to about  90-95C). Reducing amount of threads (especially for CPU's with hyperthreading like i7) helps with that aspect without too much of a performance penalty. It may well be the first program to really test limits of your CPU so just be sure the fans etc. are working properly.
    • It's now possible to run PioSOLVER on Virtual Machines and cloud servers. All you need is Windows installation there and some care about activating/deactivating the licenses when switching the VMs.