Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This might be an odd question and the place to ask might not be appropriate. I am very interested in working with multiprocessor programming and parallel algorithms, mostly for research purposes. I want to build a computer specially for this and it should have at least 8 cores (many algorithms have contention problems only starting with 8 cores).

Looking at what Intel and AMD offer I think the 8-core Intel CPUs are far too expensive, so I would have to choose between:
- 6-core Intel i7 980X (3.33 Ghz)
- 8-core AMD FX 8150 (3.6 Ghz)
- 2x8-core AMD Opteron 4248 (3.0 Ghz, server version of FX 8150)
- 1x or 2x-12-core AMD Opteron 6172 (2.1Ghz, expensive, but sometimes affordable on Ebay)

I'm inclined for the 2xOpteron, but I'm not sure how the Bulldozer architecture compares to the Intel one; from what I understand the 8 cores actually share some parts and are not compleltely independent like the Intel ones (ignoring the shared L3 cache). I'm not sure that the results I get would reflect the ones that would be obtained on a " classical" CPU.

On the other side, the i7 is much more powerful and might be sufficient for testing the parallel algorithms. The 2x12-core Opteron would probably be the best for testing, but they are also the slowest by far and I would like to use this computer as a workstation too.

What would be the best solution? Is the Bulldozer architecture suitable for research (mostly for the massive parallelization of a compiler I wrote)?

share|improve this question
add comment

2 Answers

I'd stick with multi-core single-die machine, but consider distributed compiler farm with 2-8 probably cheaper machines, as this is the real way massive cpu parallelism is achieved today. AMD vs Intel holywar does not applies here, as one should assume his code will run on both, but hyperthreading et friends is additional factor to consider when analyzing timing data.

share|improve this answer
add comment

with a programmatic approach this topic it's named Concurrency.

Every major language has an additional support for concurrency, strangely enough, no one has native support for concurrency and only the D language is promising something like that for the future.

You didn't specify the language to use for this but it's not that important since you now have the right keyword; there is also a slightly different approach from the real concurrency and it's the asynchronous approach which basically aims to make the concurrency easier by using dedicated policies and a kind of "supervisor" that keeps track of what you are doing in your threads.

There are also other kind of technologies created with parallel computing in mind like OpenCL, and OpenCL runs on every OpenCL capable device, when comes to the CPU world this is true for the entire iCore series from Intel and some Core2Duo supports OpenCL too and all the latest APU from AMD.

In your case i suggest to use your videocard to make this kind of experiment because your videocard is probably more powerful than a CPU in this field and has a true parallel architecture.

share|improve this answer
    
Sadly what I want to do doesn't work well on GPUs, compilers are very branch-intensive (GCC is usually used to test branching performance). –  Gratian Lup Aug 25 '12 at 9:15
1  
what is your problem exactly? branching too much is something that only bad code does. –  user827992 Aug 25 '12 at 9:20
    
I'm working on a compiler, so I don't have data-parallel code, only task-parallel (each function could be optimized separately). The optimization and analysis components are full of branches (you search for a lot of patterns). –  Gratian Lup Aug 25 '12 at 9:29
    
-1 for "no (major language) has native support for concurrency". Concurrency support was built into Ada from the ground up. Before you start ranting about Ada not being a major language, consider the Boeing 777: the avionics are all Ada. –  John R. Strohm Aug 25 '12 at 12:49
1  
Downvoted. I don't think this answer is helpful at all. First: it doesn't answer the question. Second: I don't think someone who writes a massively parallel compiler needs a lecture about what concurrency is. Third: especially if that lecture is wrong. (No languages with native concurrency support? Really? What about Alice, Oz, E, Occam-π, Cω, Newsqueak, Alef, Limbo, Go, Erlang, Joyce, Reia, AmbientTalk, SALSA, Orc, Janus, Hume, …) –  Jörg W Mittag Aug 25 '12 at 15:06
show 6 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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