Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have a very specific program that I need to have running as fast as possible. I wish to buy a super-fast PC in order to run it. The program is already written to make use of multiple cores and on an N-core machine it will run very nearly N times faster. The program spends almost all of its time performing integer operations with no disk access and very little IO so I don't care about graphics or hard disk performance at all.

I'm nervous of things like liquid cooling and overclocking and suspect that the little extra speed you get from that is rather poor bang for your buck (feel free to persuade me otherwise). From my limited knowledge so far, I suspect that the best I can do is find some motherboard that can take two Intel Quad core processors? - though I've no idea who makes them.

I've noticed that very often, when trying to by unusually fast PC's, the price per unit of processing power starts to grow almost exponentially above a certain level... So I guess I'm after something that's as fast as possible without becoming very poor value for money.

Please advise,

EDIT: The program is my own (and so can be modified if necessary). It uses multiple threads. It runs on windows. I do have a text-interface linux version, but that's very much a last resort. My budget is up to around the ballpark of $2500.

share|improve this question

closed as not constructive by Indrek, Keltari, Mokubai, 8088, Nifle Sep 3 '12 at 7:34

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Do you need fast RAM too? –  Greg Jan 13 '10 at 11:43
    
I don't know. I don't know how to tell. The program is very large so there is certainly a risk that vital parts will not all be in the cache, but caches can do clever tricks (so I'm told). –  Mick Jan 13 '10 at 11:48
    
best to assume you do need fast RAM, then... –  quack quixote Jan 13 '10 at 20:57
    
Am I the only one who is incredibly curious what this application does? –  skypecakes Jan 16 '10 at 9:21
    
It's this: www.goplusplus.com –  Mick Jan 16 '10 at 20:46

6 Answers 6

I have no idea where your budget lies, so don't shoot me for suggesting this.

If you're insanely rich, you can try looking at Blade servers. These things sometimes will go up to 4 quad-core (maybe even hyperthreaded like i7 is) processors on each blade. Then you can stack each blade to work with each other.

Of course that is getting towards the supercomputer genre.

If you look hard enough, I'm sure you can find 4-processor mobos around. Maybe even for the i7.

http://www.newegg.com/Product/Product.aspx?Item=N82E16813151204R is a quad motherboard example.

share|improve this answer
    
Sadly I am not "insanely rich" :-( but motherboards that will handle 4 separate processors certainly interest me. I am more interested in Intel processors, I have heard they are currently faster than AMD for integer processing. Sadly when you type in "quad" and motherboard in to google you get a million hits concerning mother boards that hold a single quad-core processor. So the search is rather tricky. –  Mick Jan 13 '10 at 13:35
    
If you do go for a system with lots of CPUs make sure the OS you are running on it supports using all the cores. Sometimes the OS is limited to one physical CPU, sometimes it's limited to an upper limit on cores, sometimes both. Some OSes aren't limited. –  Skizz Jan 13 '10 at 13:39
    
I will be using windows (probably windows 7). –  Mick Jan 13 '10 at 14:09
2  
The cheap version of Win7 only support one socket whereas the pricier ones (pro, enterprise and ultimate) support 2 sockets (according to this: en.wikipedia.org/wiki/Windows_7_editions#Comparison_chart). If your MoBo has more than two sockets then you need a different OS. –  Skizz Jan 13 '10 at 15:18
3  
Windows 7 supports 2 SOCKETS - not 2 Cores. It can support 8+ cores... but only over two sockets (meaning two Quad Core CPUs in two SOCKETs should provide 8 usable processor cores. I BELIEVE it's actually 16 Cores that is max). –  Multiverse IT Jan 13 '10 at 16:43

There are many parameters the affect the performance of a PC. Hardware and software must work together to get the best performance. For example, if you're doing lots of real time graphics work then a really good video card or two is recommended. If you're just number crunching then a graphics card is not necessarily required (could you set up and maintain the system using a remote shell?).

So, you need to analyse what your software is doing and which components will have the most impact on the performance of the system.

The approach is the same as optimising software, only you're optimising systems.

  • Measure your performance and analyse where the bottlenecks are (the bit the is slowing everything else down).
  • Increase specification of bottleneck (faster CPU, more RAM, faster hard drive, etc).
  • Repeat.

Can your software scale accross multiple PCs? One possible solution is to get a lot of really cheap and slow PCs and link them all together to make a super-parallel virtual multicore PC.

share|improve this answer
    
Re: "Can your software scale across multiple PCs?" - the program uses multiple threads. Is there a way of multi-threading across different PC's? –  Mick Jan 13 '10 at 14:08
2  
@Mick: Not very easily, it would need to be handled at the OS level and there aren't many of those around. The multiple PC solution would only work for you if the software could be started up and configured to only process a subset of all the data. So PC1 processes data item 0 to n, PC2 does n+1 to 2n, PC3 does 2n+1 to 3n and so on. You haven't specified what the software is so I don't know if this is possible. –  Skizz Jan 13 '10 at 14:47
1  
It entirely depends on what language/libraries you wrote your code in as to whether it can be scaled across machines. XGrid/.NET Remoting/DCOM are options. –  JBRWilkinson Jan 13 '10 at 17:26

Server product lines offer six-core cpus. If you're budget limited, though, you will get a lot more bang for your buck by moving to Linux -- that will allow use of all available cores, memory, etc. The porting effort is probably less than the licensing of the high-end Windows version you'd need.

I'm assuming, since you're very performance oriented, that you're already using a fully compiled language (not .NET, for example), at least for the performance critical portions of your application.

share|improve this answer
    
I'm using C++. Is there any version of windows that supports > 2 physical CPU's? –  Mick Jan 13 '10 at 16:56
    
Perhaps server 2008? It'd be crippled if it couldn't. –  Phoshi Jan 13 '10 at 16:58
    
It depends on the version of Windows Server 2008, but the max is 64 sockets: microsoft.com/windowsserver2008/en/us/r2-compare-specs.aspx –  sblair Jan 13 '10 at 17:29
    
The 6 core amd server cpus (only ones I know of) mostly make sense from a power density thing, for most work loads they are comparable to the quad Intel. –  Ronald Pottol Jan 13 '10 at 22:45

A PC based on an Intel Core i7 860 should be fast enough... 4 physical cores plus 4 hyperthreaded so the OS sees 8 cores in all. These CPUs also support DDR3 1333 RAM by default. I recently built a PC based on this CPU and I am now able to transcode videos (mpeg2 to mp4) at more than twice the speed compared to my old Q6600 Quad Core based PC.

share|improve this answer

The current Mac Pro can run Mac OS X, Windows or Linux and can be bought with two Quad-core Nehalem processors which have Hyper-Threading, giving you a total of 16 virtual cores. See www.apple.com/macpro for details.

share|improve this answer
    
Why the downvote with no comment? MacPro can run Windows and is on-budget...? –  JBRWilkinson Mar 10 '10 at 11:50

For $2500 you can buy 8 PS3s. Link them all together with ethernet and set up one of them to be the "leader" that gives out workloads. You'll have a much faster setup than something that would be in a $2500 PC. Each PS3 has 8 SPE's (Processors) and one PPE (Power Processor Element) that acts as a controller for the 8 SPE's. You can realistically only use 7 SPE's as the system steals one from you. So 8 PS3's times 7 Processors is 56 Cores. Considering you said your code scales N-Core that is 7 Times faster than two 4 core processors on a single motherboard.

share|improve this answer
1  
Yeah, now all he has to do is rewrite his app for the very odd cpu setup the PS3 has (one PPC cpu that doesn't do branching well, and 8 DSPs each of which has their own 256KB of memory (not a cash, the programer has to move the data in and out of main memory or between them). Hella fast, if your code works for it, and you do the work. You also have memory bandwidth issues too. –  Ronald Pottol Jan 13 '10 at 22:48
    
Didn't say it was going to be easy ;) –  Marcin Jan 14 '10 at 0:58
    
This seems to be an interesting paper to understand PS3 clustering strengths and limitations: netlib.org/lapack/lawnspdf/lawn185.pdf –  alfplayer Jan 14 '10 at 2:44

Not the answer you're looking for? Browse other questions tagged or ask your own question.