Skip to main content

Technical details

Architecture

PioSOLVER is a Windows desktop application.

You need a Windows computer (desktop or laptop) to run it.

PioSOLVER is not a web service.

PioSOLVER consists of two programs.

  • PioSolver - a text-base engine that can solve trees.
  • PioViewer - a windows based GUI that uses PioSolver to solve trees and read results and presents them in graphical form.

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 - basically any CPU will work and the performance increases linearly with number of physical cores and there are small gains from each newer CPU generation
  • 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 small tree with single betsizes takes anywhere from 500MB to 4GB of RAM. Once you start adding bet-sizes you can build as big tree as your RAM can handle. If you are curious about specific trees you can use the estimate tree feature which is also available in the free version. In general 16GB of RAM is almost never a limitation for postflop trees 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 like donkbet allowed/disallowed
  • Additional optional input: required accuracy, required solving time, number of threads to use

Text interface

  • PioSOLVER is a standalone console program which communicates with outside world via text,(mostly) 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.

Performance

  • 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". When we first developed PioSolver in 2015 a 3 years old quad (i7-3770 @ 3.4 GHz) would benchmark 10 seconds (PioSOLVER 1.4.1 July 10th 2015). Today strongest CPUs benchmark at around 0.7s and many practical flop trees can be solved in a couple of seconds to a decent accuracy.
  • One example to give you an idea how good the performance of PioSolver was compared to the state of the art at the time of releasing it (2015). 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 reach 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 edge 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.
  • Pro and basic versions are not suitable for cloud instances (VPS) but you can run them on dedicated servers where you get a dedicated machine.