CVData Multi-core and Hyper-threading Advice
by
, 04-25-2012 at 05:15 AM (3490 Views)
I’ve been missing for a couple weeks, spending my time in upgrade Hell, moving to a new machine. The good news is that this has given me a chance to experiment with hyper-threading advances.
Most PCs sold these days have multiple cores. A growing percentage have hyper-threading, which theoretically allows two threads per core. This means that a supporting application can run more quickly by splitting its tasks into multiple threads. Unfortunately, only a tiny percentage of applications support multi-threading, which is to say, all this neat hardware goes pretty much unused. As Blackjack simulation is highly CPU intensive, it is a perfect application for multiple cores. As such, I added multi-threading support to CVDATA and CVCX several years back. But, what about hyper-threading? Well, I tried HT when it originally came out, and found that it provided no gain. However, recently, a user with a newer chip tried it and found the newer version indeed does provide a speed boost. So, I was quite interested in trying this on the new Intel Sandy Bridge chips.
I ran several CVData sims with different number of threads and levels of complexity on a four-core, hyper-threading Intel 2600K chip. A simple sim sees a 40% increase in speed moving from four threads to seven. Moving from four to eight threads results in a 49% speed improvement. This is substantially better than I expected. With threads set to 8, I also found that the system was very responsive to other tasks. The gain exists even in complex sims, where cache is stretched a bit. For example, a shuffle-tracking sim ran 52% faster with eight threads. Hole-carding and next-carding sims see about the same gain as normal sims. Index generation is not affected.
So, I would suggest setting threads to 7 or 8 on one of the newest quad-core PCs with hyper-threading if you are not running anything else significant. (I run with 6.) Probably 6 or 7 on one of the previous generation chips. And 3.5 or 4 with a non-hyper threading chip.
By the way, a card counting simulation using High-low and one player ran 61 million rounds in one second. Mind you, this is on a 4.7Ghz machine.