FREE - In Google Play
FREE - in Win Phone Store
I'm thinking of upgrading/replacing my Windows 7 PC with a first generation quad core Intel i7 processor. When I run the houdini engine to analyze games, it pegs all four cores at 100% usage. Is this common or am I doing something wrong? I just used the default setting from chessbase. I also have 12 GB of RAM. Is there a way I can improve performance (reduce CPU usage), or should I consider upgrading to a CPU with 6 or more cores?
By default, Houdini will use 100% CPU resources. If you have a quad core and want to reduce the load, then you must set Houdini to use 3 cores instead of 4. Likewise for a hex core, you'd set it to use 5 cores. Remember though, that reducing the core count also reduces the speed at which Houdini can analyze.
As for ram, you normally want to use about 1/3rd of your total system ram, so 4GB would be optimal.
BTW, in answer to your thread question, the hex cores from Intel are fantastic for a lower budget desktop. If you want to drop several thousand, then you move up to a dual socket Xeon motherboard, allowing for up to 16 core usage.
I believe chasing multiple cores follows the law of diminishing returns. Going from one to 4 cores only increases speed 60% in Fritz (according to Chessbase), so ditching a quad core for one with hyperthreading isn't going to help much. If your cores are pegged, then hyperthreading isn't going to help much if at all. I suspect processor speed is more important than number of cores, so if you go from a 2.2GHz CPU to a 4.0GHz CPU, you will come out better than just adding a couple of cores at a lower speed.
I set up my computer to analyze my old games overnight, usually with a two hour total time limit. But then I'm not depending on speed...
Hyperthreading merely splits the cores in half (i.e. half as much speed). The concept is completely useless for chess engines, and in fact is a detriment to them when used. Also, more actual physical cores does significantly help analysis time. A current generation Intel hex core outperforms my old quad core by a factor of 4 to 1 when running Houdini.
The ability of the engine to use hyperthreading would be dependent upon how the program was written and how the threads were utilized. Obviously, chess is a multiple-threaded application, so more cores handle more threads. Late generation Intel chips handle memory IO faster than older chips that relied on the older front side bus architecture, and yes more cores are able to handle more threads. So there are several variables, including, as I mentioned above, CPU clock speed which has hit somewhat of a plateau unless you're willing to part with some big bucks or risk overclocking issues.
I'm not a chess engine programmer, so I'll take your word for the 4X speed increase, but I'm skeptical that going from 4 to 6 cores gives you that jump. And what does that speed gain you unless your're playing online against another computer?
Again, hyperthreading wouldn't help at all unless we're talking about not using all 100% CPU resources. Say for example you want to use 3.5 cores instead of all 4 cores, perhaps hyperthreading would allow that and still be slightly faster than 3 cores, but every chess programmers has always stated that hyperthreading does more harm than good when it comes to calculating positions.
With regard to the 4-6 jump, I should point out that each core was also a full Ghz faster. So instead of 4 cores at 3 Ghz, the current 6-core at 4 Ghz was indeed 4x faster at full load. Houdini's knps went from 6k to 24k on the spot. Compare this to the dual Xeon that jumps it up to well over 40 knps, though obviously the 16 cores are making up for that fact that Xeon CPUs are much slower than the single hex-cores CPUs.
What does all this benefit? The simple answer for me would be analysis time on ICCF where computers are allowed. Somebody with a hex-core could analyze in one night what would take my old quad 4 nights to do. In other words, my overnight analysis would only equal 2 hours of work on someone else's hex machine.
Do your CPUs still max out with 6 cores? Also, does your system have traditional fans or is it liquid cooled? I'm thinking of making my own system and have a budget of ~$2,000. Any recommendations of a build your own system or from a reputable manufacturer? It would also need to serve as a gaming machine too. :)
The CPUs will only max to 100% if you set the engine to use all available cores. As I said before, simply subtract one core from the engine's parameters to avoid maxing out (if you want to multi-task).
As for cooling, I've found a good heat-sink/fan in combination with an Antec 900 case provided plenty of cooling for slight overclocking needs. Obviously people that want to push the CPU to the limit will use more exotic cooling designs like water or freon-based radiators.
Anyway, you're in luck because I happen to be in the process of starting a new build. Since I also game on my computer, I decided the Intel Hex core was the best way to go instead of the infinitely more expensive Xeon machines.
I did some research and price checking for my new computer, which lists as follows:
$540 CPU Intel i7 3930k Hex
$90 CPU heat-sink/fan
$300 SSD 360 GB
$105 HD 1 TB
$160 PSU 850 watt
$100 Antec 900 case (tons of fans all over it)
$320 Mobo Asus P9X79
$360 Ram 64GB!!
$120 Sound Card (Creative Labs)
$230 Video Card (Gigabyte brand)
Now of course, the video card can be upgraded later, but that's what I'm going to start with for now.
The xeons are fantastic for dedicated jobs, but IMO not very suitable for chess. For much less money you can set a quad-opteron rig - the most expensive opteron 16-core CPU does not cost more than $ 1,000 (each) officially, although the street price is quite lower.
But you can get excellent results (easily some 14M nodes per second) with a cheap FX-8350 for just $190. Sure enough the FX-8350 is a weaker CPU than i7 3930k, but the difference when it comes to chess is too small to justify the huge price gap (the 3930 costs 2.5 times more).
The AMD FX series could be the ideal budget choice for chess servers, but unfortunately their architecture does not allow more than one CPU per rig (same applies for the expensive i7's).
Cool. However, a little bit out of my price range (you didn't include tax, shipping, and the cost of an operating system). Thanks. I'll change my engine parameters, too. I wish the engines provided better documentation on how to get better performance.
While pfren is right about the cheaper AMD CPUs being more cost-effective for chess, I tend to use my computer for everything from gaming to rendering CGI. As such, I've always preferred the Intel line. They are more reliable in the long run. I see plenty of complaints from customer reviews over the AMD octals, whereas the intel Hex has hundreds of 5-star praise reviews.
I wouldn't want to saddle my system build around AMD, but that's my personal preference.
As a followup to the hyperthreading comments, you do know that the Intel i7 chips all use hyperthreading, with a very few exceptions for laptops. As I mentioned, I do not write programs any more, but a chess engine is a prime candidate for the use of as many cores (real or virtual) as there are available. My old quad core Q9450 is overclocked to 3.21GHz and runs all four cores if the engine is programmed to do so (Fritz 13, Houdini, etc.). What should be done is to run one benchmark (for example the one that comes with Chessbase products) with all cores hyperthreaded, then disable hyperthreading and run it again. Tell me what you find. The benchmark on my quad core is 8916 kN/sec. It is not hyperthreaded, but the newer i-series are for the upper level chips.
Hyperthreading does NOTHING to improve performance, because the engine already uses 100% of the whole core. Splitting the core in half (which is what hyperthreading does) actually reduces the performance of the core in regards to pure chess calculation. All the chess programmers that have spoken on the subject have said as much. Having two simulated cores from hyperthreading does not equal a single real core because it introduces extra coding work load to split the core in real time like this.
WIth regard to the i7s using hyperthreading, remember that this feature is optional and can be turned off. You can set the chess engine to use 6 REAL cores, and it will use all 6 cores at 100% load.
This will be the last time I reiterate the same points. If you want to keep arguing it, take it over to the Rybka forums. They will gang up on you and set you straight double-quick.
I'm not arguing. You stated that hyperthreading does nothing for a chess engine. I'm saying it depends on the program and how it's coded. I run a lot of high end heavy load programs such as Adobe Photoshop, Microsoft Flight Simulator and X-Plane. I also have a high end graphics card onto which much of the heavy lifting can be off-loaded from the CPU to engage the massive speed of the nVidia architecture. If chess engine authors are not availing themselves of the potential speed increases of these available features, they are missing a lot of horsepower. If in fact the engines are being limited in their use of available multithreaded and parallel processing power, then you are correct. Perhaps that coding is beyond the abilities of amateur programmers. It certainly works with Photoshop and Flight Simulator. Did you run comparative benchmarks as I suggested? What was the result? I cannot do that on my old Q9450 quad core. The question is the number of simultaneous threads that can be run, or the speed of the processor. If hyperthreading is useless, then Intel is wasting their time and we need to send them an e-mail, OR there are programmers out there who are missing the boat. Who to trust, Intel, or amateur chess engine programmers......
Something like a graphics application is not entirely comparable with a chess engine. FirebrandX is absolutely correct that hyperthreading does not help chess engines. Period. End of story. If you don't believe us, go ask about it in any of the chess programming forums.
You are simply wrong on this point.
It is not that hyperthreading is useless. It is that for some algorithms it is detrimental to performance, while for others it enhances performance. Chess is an example or a problem set where the best known algorithms for producing the desired result are hampered by hyperthreading.
I can confirm that adding virtual cores to the engine pool does not improve performance. In the case of Houdini 1.5 (I don't have 3.0, nor I intend buying it) the only "gain" from the ante of threads from 2 to 4 (my best rig is an 8-year old Core2Duo 6600, which isn't even SSE4 compliant) is making the rig unusable for any other use, while Houdini is "thinking". But AFAIK this also applies for newer Intel CPU's, which fully comply to the SSE4 standards.
At least when the engine uses the two physical cores, you can still use the rig for some other light jobs...
Jeez, how did I get on the wrong side of these barbs? Read my original post above. And again, above, "...it depends on the program and how it's coded." I also begged off on any knowledge of how chess engines are coded. No argument on whether or not hyperthreading is helpful in this application or not. Again, run the benchmarks and see. I'll agree with whatever you find.
mldavis617 - we're TALKING about chess engines though, not about generic programs. Yes, when speaking generally without regard for the type of programs being run, hyperthreading in general increases performance. But chess engines are a specific type of application with specific needs and are the specific topic of this discussion. We aren't talking about general computer architecture questions devoid of application context. We're talking chess engines. With regard to chess engines, hyperthreading hinders rather than helps. Period.
My quad i5-2500k work good on all tasks (gaming/video compression) and chess as well. Wounder if the tech is already outdated for chess performance sense.
Chess benchmark score:
Don't know about Chessbase, but since it is in the settings for Arena 3.0, I would guess chessbase has something similar:
There should be a way to reduce the real-time-priority of the engine. So that it is only run at full-power when nothing else needs the processor.
This will reduce it's power only when you are doing something else at the same time, but at least doing something else works.