bupticybee / TexasSolver

🚀 A very efficient Texas Holdem GTO solver :spades::hearts::clubs::diamonds:
https://bupticybee.github.io/texassolver_page
GNU Affero General Public License v3.0
1.71k stars 304 forks source link

Very long computation time compared to piosolver #40

Closed kulievvitaly closed 2 years ago

kulievvitaly commented 3 years ago

Thank you for your TexasSolver CPP code. I was trying to calculate strategy based on the settings like that:

set_pot 65
set_effective_stack 965
set_board Qs,Qh,2s
set_range_ip AA:0.1,KK:0.1,QQ:0.1,JJ:0.176470588,TT:0.235294118,99:0.9,88:0.9,77:0.9,66,55,44:0.9,33:0.7,22:0.7,AK:0.1,AQs:0.352941176,AQo:0.588235294,AJs:0.411764706,AJo:0.9,ATs:0.529411765,ATo:0.9,A9s:0.9,A9o,A8,A7s,A7o:0.9,A6s,A5s,A4s,A3s,A2s,KQs:0.647058824,KQo,KJs:0.705882353,KJo,KTs:0.764705882,KTo,K9,K8s,K8o:0.5,K7s,K6s,K5s,K4s:0.5,K3s:0.5,K2s:0.5,QJs:0.823529412,QJo,QTs:0.882352941,QTo,Q9,Q8s,Q7s,Q6s,JTs:0.9,JTo,J9,J8s,J7s,J6s:0.5,T9,T8s,T7s:0.7,T6s:0.5,98s,98o:0.5,97s,96s:0.5,87s,86s:0.9,85s:0.5,76s:0.9,75s:0.9,65s:0.9,64s:0.5,54s:0.9,53s:0.5,43s:0.5
set_range_oop AA,KK,QQ,JJ,TT,99,88,77,66,55,44:0.7,33:0.5,22:0.5,AK,AQ,AJ,AT,A9s,A9o:0.7,A8s,A8o:0.5,A7s,A6s,A5s,A4s,A3s,A2s,KQ,KJ,KT,K9s,K8s,K7s,K6s,K5s:0.5,K4s:0.5,K3s:0.2,QJ,QT,Q9s,Q8s,Q7s:0.2,JT,J9s,J8s,T9s,T8s,T7s:0.5,98s,97s,87s,86s:0.7,76s,75s:0.5,65s,64s:0.5,54s:0.7,43s:0.5
set_bet_sizes oop,flop,bet,33
set_bet_sizes oop,flop,raise,75
set_bet_sizes ip,flop,bet,33,75
set_bet_sizes ip,flop,raise,75
set_bet_sizes oop,turn,bet,33,75
set_bet_sizes oop,turn,donk,33,75
set_bet_sizes oop,turn,raise,75
set_bet_sizes ip,turn,bet,33,75
set_bet_sizes ip,turn,raise,75
set_bet_sizes oop,river,bet,33,75
set_bet_sizes oop,river,donk,33,75
set_bet_sizes oop,river,raise,75
set_bet_sizes oop,river,allin
set_bet_sizes ip,river,bet,33,75
set_bet_sizes ip,river,raise,50
set_bet_sizes ip,river,allin
set_allin_threshold 0.67
set_raise_limit 3
build_tree
set_thread_num 8
set_accuracy 0.35
set_max_iteration 200
set_print_interval 1
set_use_isomorphism 1
start_solve
set_dump_rounds 2
dump_result output_result.json

Output:

Iter: 91
player 0 exploitability -2.0042167
player 1 exploitability 6.2275276
Total exploitability 3.2487009 precent
time used: 4179.4

Piosolver Pro took about 10 min to solve this. I waited almost one hour with TexasSolver to get some results.

Please let me know what I did wrong. Thank you in advance.

bupticybee commented 3 years ago
  1. set_print_interval 1 is not an ideal setting, the program is not going to just "print", it's going to iter over the entire tree the get the exploitability, so it's very,very time consuming. Please change it to set_print_interval 10
  2. you might want to increase the thread number a little bit to match your cpu physical core number, e.g. set_thread_num 16 if you have a 16-core cpu. Since you bought piosolver pro, which support up to 64 cores, I suspect you have more cpu than just 8.

Apart from that, as I mentioned in project readme , this solver do well compair to piosolver in small tree settings, in your setting, spr = 965 / 65 = 14.84, this setting obviously doesn't belong to a "small game tree setting".

I modify your config file according to the tips above to:

set_pot 65
set_effective_stack 965
set_board Qs,Qh,2s
set_range_ip AA:0.1,KK:0.1,QQ:0.1,JJ:0.176470588,TT:0.235294118,99:0.9,88:0.9,77:0.9,66,55,44:0.9,33:0.7,22:0.7,AK:0.1,AQs:0.352941176,AQo:0.588235294,AJs:0.411764706,AJo:0.9,ATs:0.529411765,ATo:0.9,A9s:0.9,A9o,A8,A7s,A7o:0.9,A6s,A5s,A4s,A3s,A2s,KQs:0.647058824,KQo,KJs:0.705882353,KJo,KTs:0.764705882,KTo,K9,K8s,K8o:0.5,K7s,K6s,K5s,K4s:0.5,K3s:0.5,K2s:0.5,QJs:0.823529412,QJo,QTs:0.882352941,QTo,Q9,Q8s,Q7s,Q6s,JTs:0.9,JTo,J9,J8s,J7s,J6s:0.5,T9,T8s,T7s:0.7,T6s:0.5,98s,98o:0.5,97s,96s:0.5,87s,86s:0.9,85s:0.5,76s:0.9,75s:0.9,65s:0.9,64s:0.5,54s:0.9,53s:0.5,43s:0.5
set_range_oop AA,KK,QQ,JJ,TT,99,88,77,66,55,44:0.7,33:0.5,22:0.5,AK,AQ,AJ,AT,A9s,A9o:0.7,A8s,A8o:0.5,A7s,A6s,A5s,A4s,A3s,A2s,KQ,KJ,KT,K9s,K8s,K7s,K6s,K5s:0.5,K4s:0.5,K3s:0.2,QJ,QT,Q9s,Q8s,Q7s:0.2,JT,J9s,J8s,T9s,T8s,T7s:0.5,98s,97s,87s,86s:0.7,76s,75s:0.5,65s,64s:0.5,54s:0.7,43s:0.5
set_bet_sizes oop,flop,bet,33
set_bet_sizes oop,flop,raise,75
set_bet_sizes ip,flop,bet,33,75
set_bet_sizes ip,flop,raise,75
set_bet_sizes oop,turn,bet,33,75
set_bet_sizes oop,turn,donk,33,75
set_bet_sizes oop,turn,raise,75
set_bet_sizes ip,turn,bet,33,75
set_bet_sizes ip,turn,raise,75
set_bet_sizes oop,river,bet,33,75
set_bet_sizes oop,river,donk,33,75
set_bet_sizes oop,river,raise,75
set_bet_sizes oop,river,allin
set_bet_sizes ip,river,bet,33,75
set_bet_sizes ip,river,raise,50
set_bet_sizes ip,river,allin
set_allin_threshold 0.67
set_raise_limit 3
build_tree
set_thread_num 8
set_accuracy 0.35
set_max_iteration 200
set_print_interval 10
set_use_isomorphism 1
start_solve
set_dump_rounds 2
dump_result output_result.json

And test on my laptop MacbookPro2019 (2.6GHz, 6core) Intel i7, 32G 2667 MHz DDR4 memory, it's crappy machine with outdated hardware

And here is my log:

<<<START SOLVING>>>
Using 8 threads
Iter: 0
player 0 exploitability 108.32048
player 1 exploitability 189.90353
Total exploitability 229.40306 precent
-------------------
Iter: 11
player 0 exploitability 31.961256
player 1 exploitability 45.4345
Total exploitability 59.5352 precent
time used: 125.099
-------------------
Iter: 21
player 0 exploitability 16.14615
player 1 exploitability 26.527428
Total exploitability 32.82583 precent
time used: 255.97
-------------------
Iter: 31
player 0 exploitability 8.244904
player 1 exploitability 18.375206
Total exploitability 20.477007 precent
time used: 392.15
-------------------
Iter: 41
player 0 exploitability 3.9931087
player 1 exploitability 13.556754
Total exploitability 13.499893 precent
time used: 526.978
-------------------
Iter: 51
player 0 exploitability 1.5353079
player 1 exploitability 10.547386
Total exploitability 9.29438 precent
time used: 663.824
-------------------
Iter: 61
player 0 exploitability 0.064279065
player 1 exploitability 8.646807
Total exploitability 6.7008348 precent
time used: 803.875
-------------------
Iter: 71
player 0 exploitability -0.8994793
player 1 exploitability 7.5186977
Total exploitability 5.0917063 precent
time used: 945.911
-------------------
Iter: 81
player 0 exploitability -1.5627849
player 1 exploitability 6.7626195
Total exploitability 3.999873 precent
time used: 1087.99
-------------------
Iter: 91
player 0 exploitability -2.0247424
player 1 exploitability 6.25935
Total exploitability 3.2573905 precent
time used: 1229.79

I run to 90 iteration, from what I'm seeing in the log, it take 1229 second, which is 20 minutes, to run to 90 iteration. From what I have seen a windows desktop with modern hardware is going to do much better.

bupticybee commented 3 years ago

I have to say even if you found after modification to the config file it's still a lot slower than piosolver in this situation, I'm not surprised. A tree with spr=15 is way bigger than what I'm planning to solve.

bupticybee commented 2 years ago

Closing because this issue has been inactive for too long. Reopen if necessary.