AMD vs Intel ... do I need hyperthreading?

So, I’m looking into upgrading my work PC, which currently uses an Intel i7 920 at 2.66GHz. I’ll be upgrading the motherboard and CPU (chiefly so I can put another video card in and take advantage of SLI) so I have the opportunity to switch from Intel to AMD or some other non-LGA1366-chip, if I want.

I’m using Windows 7 Ultimate 64-bit, and have 24GB of RAM.

I do a lot of ordinary web browsing and Word-document editing, although I frequently have dozens of programs open at once, so I do a lot of multitasking. I also do a lot of Java programming in Eclipse and some C++ and C# programming in Visual Studio 2008. I also have a couple of VMWare virtual machines running, usually one at a time.

The reason I’m adding another video card and SLI is that one of my new projects is going to involve writing some CUDA or OpenCL code, and I want to add another video so that I can use SLI if necessary (or just to get some experience in it).

So, given this, would it be better to stick to an Intel CPU, where hyperthreading makes it look as though I have twice as many cores as I really do … so it looks like I have 8 cores when I really only have 4, basically … or should I move to one of the AMD 6-core chips? For this kind of thing, will AMD’s 6 physical cores be better than Intel’s 4 physical cores with hyperthreading?

Thanks for any insight.

IMO, no. Hyperthreading is basically a gimmick of no practical value in normal circumstances. You end up with two virtual cores each running at about 2/3 the speed of the physical one, that is each thread runs slower and you are relying on the efficiency of parallel processing two code threads to make up for that. In almost any practical situation that doesn’t happen.

The only use case I’m aware of where it might have significant benefits is in high-end CAD/CAM workstations, otherwise it’s mostly so you can say “I have 8 cores” instead of “I have 4 cores”.

That’s what I thought – most of the people discussing the issue say that hyperthreading has only slight performance benefits in the best case, and often gives a negative speedup factor… but I found some threads on AMD’s forums (and similar forums) where some posters assert that hyperthreading can have enormous speed benefits in certain cases. Most of my own parallelization work will be done using CUDA or OpenCL, but there will be some MPI-based stuff too… so I wondered if I should care about hyperthreading or not. It seems to me that a 6-core AMD chip will be better, because 6 physical cores has got to be better, and also because the quad-core i7-2600 at 3.4GHz costs $299.99 at NewEgg right now, while the six-core AMD Opteron 4180 at 2.6GHz is only $209.99, and the six-core Phenom II X6 1100T at 3.2/3.7GHz is only $189.99. Of course, the i7-2600 is a 32nm Sandy Bridge and the Phenom II is 45nm… so I’m not sure what would be better.

Oh, another consideration: I have a couple of encrypted virtual drives, and I hear Intel has hardware AES acceleration in some of its chips. I haven’t checked to see if any of the CPUs I’ve looked at do, though, and I don’t know what kind of speed difference it would make anyway…

I like AMD and have an AMD processor in my PC that I am quite happy with. AMD processors and chipsets tend to be a lot better deal for the buck. Part of my decision on going AMD last time was that for my budget I could get a much better motherboard for an AMD/ATI system than for Intel/Nvidia. But I do not think budget is your issue.

In all honesty I do not think AMD makes a processor that can keep up to your old I7. A Phenom II x6 is still a rung below your I7 according toToms Gaming CPU Hierarchy Chart.

For intensive number crunching hyperthreading is a bad deal. Hyperthreading wins if the two code stream can make more efficient use of the processor resources by being micro-scheduled. The big downside is that the threads compete for cache on a very fine grained level. You also typically are making serious use of all the processor resources for tight numeric code. Most HPC users will turn hyperthreading off in the bios.

It sounds as if you are going to be flogging your machine no matter what. Lots of everything is probably the only answer. Lots of cores, lots of cache, lots of memory.

Have you considered the Intel Xeon series? Up to 10 cores.

You might also consider having multiple machines - real machines, not VMs - and remotely controlling them.

Thanks guys. Budget is an issue to a point – I’m not going to convince my boss to let me get a six-core Intel chip, as he won’t want to plunk down $999.99 for a i7 990X or even $579.99 for an i7 970.

That Gaming CPU chart is interesting – why is the Phenom II X4 980 higher than any of the X6’s?

Quartz, that’s an excellent suggestion, but I’m already doing it. :wink: I already do a lot of my actual code execution on two machines that both have twin Xeon 5E5520 quad-core chips, one running Windows Server 2008 and the other running Fedora 14, and each with 8GB of RAM. It works out well. When we start testing out MPI stuff I’ll be using them as MPI machines as well.

However, the reason I started thinking about upgrading in the first place is that the machine running Windows Server 2008 had its SAS controller (an Adaptec 5405) die a couple weeks ago and our vendor has been stringing us along on getting the warranty replacement, because they didn’t have one in stock. This despite us purchasing a 3-year “advance overnight replacement” warranty when we bought the machine back in September 2009. So I’ve been running the code that was running on that machine on my own workstation, so I’ve been considering doing an upgrade to see if I can squeeze out some better performance.

Francis Vaughan, and everybody else, is there any realistic usage scenario when it is worthwhile to have hyperthreading?

I’ve seen benchies with a considerable boost in HD video encoding when using hyperthreading. Up to23% in some benchmarks, a few percent improvement in 3D rendering.

That kind of highly parallel processing does benefit from hyperthreading.

Be sure to check the date on any hyperthreading discussion to make sure it is relevant. It is my understanding (sorry, no cite) that hyperthreading on the I7 is much better than the old Pentium4 hyperthreading. A quick benchmark: I ran a process (pbzip2) with 8 threads and it completed in 43 seconds, but with 4 threads it completed in 56 seconds. Linux is hyperthreading aware, so it will preferentially schedule to unique cores before doubling up on one core. Of course this is on a fully running, but otherwise idle, system, and hyperthreading was enabled for both tests, because I don’t feel like rebooting.

As for AES-NI (the Intel accelerated AES) it is a huge win if your software supports it. Supposedly TrueCrypt 7 uses it. I use it with dm-crypt to encrypt my laptop drive, and AES-NI is 2-5 times faster than software only (optimized) AES. Not all Intel CPUs support AES-NI (do the quad core I7s support it yet?) On my laptop, I can read the raw disk at 120MB/s requiring about 12% of the CPU. I can read the raw encrypted volume at 120MB/s requiring about 27% of the CPU. So with AES-NI, I can run at the full speed of the disk, and not even swamp the CPU with encryption.

As for AMD vs. Intel? I’ve used both platforms for various things, and been happy with both. AMD is great bang for the buck, but sometimes the price is close enough, or the extra performance is worth spending more, to also make Intel a serious consideration.

It’s weighted towards game benchmarks, most of which will benefit more from raw speed than additional execution cores. Relatively few games are multithreaded enough to use four cores efficiently, and I can’t even think of any that are able to utilize six cores.