CPU choice for single thread?

ballzac

Member
Hi,
I'm planning on putting together a system which will be used exclusively for my PhD work, which involves computational physics (simulating transmission electron microscopy techniques and calculating errors in the results under different conditions). I have a fairly complex program which was originally written in C++ by a colleague, but has been extensively reworked by me for my specific purposes. I do not have a solid background in programming and major changes to the program can take a lot of time that I do not have available to spare.

The program only utilises a single core, and I want to avoid rewriting the software to utilising multithreading. My main question is about cpu choice. I have read numerous forum posts about ideal cpu choice for this sort of application, but none that explain clearly why a specific cpu would be better than another. One that pops up regularly is the Intel 980X, though these comments are from old posts and may be outdated.

I currently have a core2duo (e8400), and this has a clock speed of 3.00GHz. The Intel 980X has a clock speed of 3.33GHz. My somewhat naive understanding of this would imply to me that if I only use a single core, this would only be 10% faster than my current processor, but if multithreading was used, it would be more than three times faster because of the increased number of cores. Would this analysis be accurate?

I am working on a budget, so I probably wouldn't even be able to afford a processor that good, and if I was getting less than a 10% increase in productivity, it would not be worth upgrading at all.

In addition to any explanatory answers to the question above, I'd also be interested in specific recommendations if anyone has any :) My budget is likely to not be much above AUD1000. I will be accessing the computer remotely, so I do not need a any input or output devices, nor a dedicated video card or sound card. This means that the majority of the $1000 can be allocated to motherboard, cpu, and ram, and the motherboard can be very minimal in terms of expansion slots. I don't know what would be the best ratio to split the budget for each component, but I'm thinking that $700-$800 could probably be used for the cpu.

Thanks in advance for any help. :) Cheers.
 

jonnyp11

New Member
a 980x would be closer to 2 times or more the power in single threaded things, the architecture of the cores is different and the I series cpus are much faster, but you motherboard doesn't support them as they run lga1155, 1156, or 1366. For that one program alone, you could just get a, i3 2120, and you'd be doing just as well as an i7 2600k minus .1 or so ghz, not much of a difference. But with your budget you could get an i5-2500k, then with a good cooler, put it at 4.5 or so ghz, which is the fastest option.

And are you open to building this yourself, which is recomended, or must it be prebuilt.
 

ballzac

Member
Hey, thanks for the reply.

a 980x would be closer to 2 times or more the power in single threaded things, the architecture of the cores is different and the I series cpus are much faster
Ah, cool. That's the sort of thing I was curious about because I didn't know whether clock speed was the only significant contributor to speed performance.

a 980x would be closer to 2 times or more the power in single threaded things, the architecture of the cores is different and the I series cpus are much faster, but you motherboard doesn't support them as they run lga1155, 1156, or 1366.
I'm putting together the whole system, so I can choose a motherboard based on whatever cpu I choose to go with.

For that one program alone, you could just get a, i3 2120, and you'd be doing just as well as an i7 2600k minus .1 or so ghz, not much of a difference. But with your budget you could get an i5-2500k, then with a good cooler, put it at 4.5 or so ghz, which is the fastest option.
Thanks for the advice. BTW, I've never overclocked a cpu, the main reason being that I've never felt the need to for the applications I have tended to run in the past, and had not wanted to fork out on good cooling if it was unnecessary. Just a couple of questions: Do you have a rough estimate of how much faster the overclocked i5-2500k would be to my core2duo running at normal speed? Also, how good would the cooling have to be to run the i5-2500k at that speed? I'm assuming liquid cooling would be unnecessary because I'm not running anything on a video card. I ask because liquid cooling is expensive and requires a specialised case that will add even more expense.

Another thing I didn't think to ask about is the graphics. I think maybe you pre-empted it because the CPUs you mentioned have integrated graphics. I had assumed that the best value for money for these requirements would be to get integrated graphics rather than an el cheapo graphics card, but wasn't 100% sure.

And are you open to building this yourself, which is recomended, or must it be prebuilt.
I'll be putting it together myself. I've put together about a dozen computers over the years, so I have a fair amount of knowledge, but I only learn on a need-to-know basis, so I have a lot of holes in my understanding of computer hardware. And often by the time I put together a computer, a lot of the knowledge I gained from the last time is obsolete in terms of what sockets exist, or what compatibility issues there are etc.

Thanks again for your help :)
 

claptonman

New Member
Liquid cooling now comes in a all-in-one for CPU coolers:

http://www.newegg.com/Product/Product.aspx?Item=N82E16835209049

So it wouldn't need a specialized case. I'm not saying these are worth it, just letting you know.

And you wouldn't need to fork out a lot of money for decent cooling.

http://www.newegg.com/Product/Product.aspx?Item=N82E16835103065

$30, $20 with rebate.

For how much faster it would be, I don't have any figures or scientific data, but a whole butt-ton faster.

For your uses, the graphics on the CPU would be enough. I would say a low-end graphics card, like a 6450 (Which run about $40) would be better suited for 1080p movies, and the such. But for you, the CPU graphics would be enough.
 

ballzac

Member
Liquid cooling now comes in a all-in-one for CPU coolers:

http://www.newegg.com/Product/Product.aspx?Item=N82E16835209049

So it wouldn't need a specialized case. I'm not saying these are worth it, just letting you know.
And you wouldn't need to fork out a lot of money for decent cooling.

http://www.newegg.com/Product/Product.aspx?Item=N82E16835103065

$30, $20 with rebate.
[/QUOTE]
Yeah, it wasn't so much that it's expensive, just that I've never had the impetus to overclock and have been fine with the supplied fans. So if a cooler for that price would be enough to overclock to 4.5GHz, then that'd be great.



Liquid cooling now comes in a all-in-one for CPU coolers:

I would say a low-end graphics card...up if there is no graphics hardware detected.
 

claptonman

New Member
The system would start, you just wouldn't be able to see anything!

And yeah, that cooler could easily get up to 4.5ghz. But what I would do is just stick with the stock heatsink/fan and see how fast it is for you. If you'd like it faster, then buy the cooler and overclock. If its fast enough, don't bother.
 

jonnyp11

New Member
Are you wanting a cool looking or a professional looking computer (case)? Are there any you have been looking at?
 

ballzac

Member
The system would start, you just wouldn't be able to see anything!
Well I'm not going to be able to see anything on it anyway because there will be no monitor plugged into it. I will be accessing it over my network. The only time I would need to see anything on the actual system itself is when I initially install the operating system and set up the network.

In the past when I have had a bung graphics card or it hasn't been in the slot properly, I have just gotten a beep code and the operating system didn't boot up.

And yeah, that cooler could easily get up to 4.5ghz. But what I would do is just stick with the stock heatsink/fan and see how fast it is for you. If you'd like it faster, then buy the cooler and overclock. If its fast enough, don't bother.
It's never going to be fast "enough" for me. At the moment, the speed of the processor is a severe limitation on the amount of work I get done. Even if it was ten times faster than what I've got, I would still want it to be faster. Basically, the faster it is, the more data I can get, and the more useful my results will be.

Are you wanting a cool looking or a professional looking computer (case)? Are there any you have been looking at?

Nah, I'm happy with just a cheapy. I've got a decent case (TT Armor+mx) for my main system, but I've got a few ~$60 cases around the house as servers and HTPCs that I'm thoroughly happy with, so something like that is fine.

I could even potentially get one of those mini cases because there won't be any cards or anything in it, though this might be an issue with fan/heatsink size if I'm overclocking.

This is the insides without the case, 749, or with an ssd, 859, which with a good case will come out right at 1000 with the ssd
Thanks for the links :)
 

TrainTrackHack

VIP Member
For single threaded performance, Intel is pretty much a must.

For comparison, a 2.6GHz Pentium G620 (based on the same architecture as the current i3/i5/i7 CPUs) with only about half the cache (3MB L3 + 128KB L2 per core I think it was) trades blows with your E8400 (6MB L2 cache). Mind, I have no idea how sensitive to cache your program is, so the performance increase might be less than expected (though since you seem to be planning to OC, the sheer clockspeed alone should net pretty impressive gains).

A bit off topic but are you going to be using Windows?
 

ballzac

Member
the 212's are pretty big, it takes a good sized case as it's 159mm tall, plus the motherboard and the area behind the motherboard tray, it might not fit in some cases. It should fit in this and might fit in the second.

http://www.pccasegear.com/index.php?main_page=product_info&cPath=25_1171&products_id=17423

http://www.pccasegear.com/index.php?main_page=product_info&cPath=25_1171&products_id=18416
Thanks for the info.

For single threaded performance, Intel is pretty much a must.

For comparison, a 2.6GHz Pentium G620 (based on the same architecture as the current i3/i5/i7 CPUs) with only about half the cache (3MB L3 + 128KB L2 per core I think it was) trades blows with your E8400 (6MB L2 cache). Mind, I have no idea how sensitive to cache your program is, so the performance increase might be less than expected (though since you seem to be planning to OC, the sheer clockspeed alone should net pretty impressive gains).

A bit off topic but are you going to be using Windows?

I'm not sure what aspects really impact on how big the cache should be, but seeing as it has to do with temporary storage of data, I'm assuming the amount of data being processed makes a big difference.

I am working with a three dimensional vector array that is 128x128x128, so that's over 6 million double-precision numbers. Then it has to project that onto 2 different planes at 100 different angles, no longer a vector, so that's 128x128x200~=3 million double-precision numbers. I'd also like to have the freedom to increase the resolution to 512x512x512 or more, so the amount of data would increase hugely.

I will be using Visual C++ on windows 7. I would have liked to use linux, but the code I started with was written in Visual C++ and I had no luck in my attempts to port it to a linux compiler.

Thanks for your input :)
 

Okedokey

Well-Known Member
You want the CPU with the highest IPC you can find. That usually equals clock cycles. Tell me as a fellow phd in the physics area how are you storing this data, as that may be more of a bottle neck.

The other alternative of course is to run multiple instances of the same code and batch the processing across multiple cores.

But essentially if I were you I would get a stable mid range 1155 mobo with a Ivy Bridge Cpu, (smaller architechture) allowing higher overclock and higher IPC and watercool it.
 
Last edited:

ballzac

Member
You want the CPU with the highest IPC you can find. That usually equals clock cycles. Tell me as a fellow phd in the physics area how are you storing this data, as that may be more of a bottle neck.
Well, the simulation is of a magnetic nanomaterial, so it is defined by the magnetic vector potential inside the voxel grid. Each component is defined by a separate array, and they are declared like this:

vector<vector<vector<double> > > Ax;
vector<vector<vector<double> > > Ay;
vector<vector<vector<double> > > Az;

There are also 2D complex transfer function, which are declared:

vector<vector<complex<double> > > TF1;
vector<vector<complex<double> > > TF2;
vector<vector<complex<double> > > TF3;

Someone on a C++ forum told me that it's a computationally intensive way of declaring the arrays, but that is how the original author coded it and I'm not sure if there was a specific reason, so I left it like that.

After the 200 projections are calculated (these are simulated micrographs) the data is written to a text file.

The next part of the code I had to write myself, and I'm much more familiar with Matlab, so I have a matlab script that imports the text document and then uses the two micrographs at a given angle to calculate the phase of the electron wave function at the focal plane. In matlab they are just stored as standard matrices. The results are then written out to a text file again, and the third and final part of the code, which computes the original magnetic vector potential from the 100 phase maps, uses the same method as part 1.

I'm hoping that answers your question. I'm not sure exactly what other ways there are of storing data in C++.

The other alternative of course is to run multiple instances of the same code and batch the processing across multiple cores.
Yes, and that is something I already do. Particularly running the phase retrieval in Matlab after the micrograph simulation already has a head start (I have loops doing this hundreds of time while incrementing certain parameters). On my core2duo this is not so bad, but may be a little unwieldy on something with 6 cores. I will do it as much as is convenient at a given time, but would mainly like to know that a single program will be able to run as fast as possible on a single core.

I'm also not against learning how to multithread in C++, but I don't want to rely on it at this stage. If I have something with, say, six cores, if it is fast on one core, then having the extra cores will simply making it faster if/when I do alter the coding to take advantage of the other cores.

But essentially if I were you I would get a stable mid range 1155 mobo with a Ivy Bridge Cpu, (smaller architechture) allowing higher overclock and higher IPC and watercool it.
Thanks for the advice. :)
 

jonnyp11

New Member
Ivy bridge would be smart, but it would mean delaying the build until june or july, since they have been delayed, and i haven't heard exactly when the consumer release will be, but you can save some money and upgrade once they are out too, since they run on the same socket.
 

ballzac

Member
Thanks again for all the help guys. I ended up getting:

cpu: i5-2500k
RAM: 8GB Gskill ripjaws
Mobo: Asus P8Z68-V-Gen3
Cooling: CM hyper 612 PWM
Case: CM Storm Enforcer

A lot of people talk about getting up to 1.4v Vcore and 4.8GHz with air cooling, so it is a surprise to me that with such a huge heatsink, I'm getting temps of about 85C under load at 1.35. It's pretty unstable at 4.5GHz at 1.34v, so I have it at 1.34v and 4.4GHz, which is a little slower than I would have hoped for. It still runs pretty hot, reaching max of 82 using prime95. Considering that the ambient temperature is about 20C currently, I am somewhat concerned about the temperature it will reach when the ambient temperature here is ~45C, which can happen on a hot summer's day here.

However, It runs at a max of 72 when using the software I will actually be running, even with multiple instances running on each core, so it's probably not actually a problem as long as I remember to keep an eye on the temperature if I ever need it for something that will abuse the cpu a bit more.

Still, I'm curious if anyone has any ideas about this. Does this sound like there is a problem? Should I be getting better temps with a hyper 612 with the cpu at 1.34v and the ambient temp being 20C?

The heatsink was easy to attach, and I had a nice even layer of thermal paste on the cpu. I have the fan set to hit maximum rpm above 65C, and I can hear it kick in when that temp is reached. There is only one drive in the case, and no cards at all, so there is little in the way of cables or cards to obstruct airflow. I have the stock fan on the cooler, blowing through the front of the heatsink, and the back of the heatsink is near the exhaust fan on the case. There is also a 200mm hd fan on the case, which should help move a fair bit of cool air through. I considered putting another fan on the heatsink, but not really sure if it will help at this stage.

Cheers :)
 

jonnyp11

New Member
i looked at the reviews and one guy had actually compared it to the 212 and got better temps with the 212 which is under 30 bucks. And those temps are really bad man, you need to go down, 70's are a big no-go, 60's are ok, but advised against, 50's are green
 

ballzac

Member
i looked at the reviews and one guy had actually compared it to the 212 and got better temps with the 212 which is under 30 bucks. And those temps are really bad man, you need to go down, 70's are a big no-go, 60's are ok, but advised against, 50's are green

From what I've read, people usually say you don't have to be concerned until the temps reach about 80 with this chip. I was getting mid 60s without overclocking, though the fan was at about 700rpm at that stage. Still, I don't think I'll have much hope of getting it below 60 even at stock without some very drastic changes.


Did you use the cable management in the case? Are you using the coolermaster thermal paste? You might've put too much on. And if you want to get better thermal paste, I'd recommend arctic silver 5. Then its best to use the vertical line method for intel i5s:

http://www.arcticsilver.com/pdf/appmeth/int/vl/intel_app_method_vertical_line_v1.1.pdf

Cable management? There aren't a lot of cables in there to manage. I have most of the ones in use going around the back-plate behind the motherboard (and this case has plenty of space back there), and the spare ones from the psu are just bundled together and sitting in an empty hd bay. But basically, the case is pretty empty and the airflow seems great. Despite the high temps I'm seeing in Realtemp, the air in the case is flowing through and staying very cool.

I used the CM paste that came with the 612. Most of the youtube vids showing how to install the 612 that I had seen prior to buying it said to apply a small blob and spread it over the cpu with a card, so that's what I did. I think it's unlikely that there's too much, but it's possible that something's not quite right there, like maybe I scraped it too thin in one spot while spreading it out or something. Perhaps I didn't tighten the heatsink to the backplate tight enough or something.

I guess I need to take the heatsink off and have a look at what I've done. I'm a bit wary of doing stuff like that because I know if I take it off a few times I'll end up knocking something on the motherboard with that massive heatsink, but I guess I have no choice at this stage.

Thanks for you help guys. I really appreciate it. :)
 

claptonman

New Member
Cable management? There aren't a lot of cables in there to manage. I have most of the ones in use going around the back-plate behind the motherboard (and this case has plenty of space back there), and the spare ones from the psu are just bundled together and sitting in an empty hd bay. But basically, the case is pretty empty and the airflow seems great. Despite the high temps I'm seeing in Realtemp, the air in the case is flowing through and staying very cool.

I used the CM paste that came with the 612. Most of the youtube vids showing how to install the 612 that I had seen prior to buying it said to apply a small blob and spread it over the cpu with a card, so that's what I did. I think it's unlikely that there's too much, but it's possible that something's not quite right there, like maybe I scraped it too thin in one spot while spreading it out or something. Perhaps I didn't tighten the heatsink to the backplate tight enough or something.

I guess I need to take the heatsink off and have a look at what I've done. I'm a bit wary of doing stuff like that because I know if I take it off a few times I'll end up knocking something on the motherboard with that massive heatsink, but I guess I have no choice at this stage.

Thanks for you help guys. I really appreciate it. :)
Are the cables in the HDD cage in the way of the fan in the front? You may wanna try stuffing those extra cables either behind the mobo or behind the CD drive cage.

Mid 60s is pretty high for not overclocking. The dot-in-the-middle technique is more for AMD CPUs since the cooler basically is only touching the CPU. With intel, its a little lower so the way arctic silver recommends is the link I posted. That may be just for that particular thermal paste, but it may apply to all the other ones too.

I would definitely reapply or try a different technique. There's no way you should be getting that high of temps with that massive heatsink. Once you remove the heatsink, you will have to remove the paste using isopropyl alcohol or a thermal paste remover and reapply.
 
Top