Thank you for taking the time to read my question.
I am currently doing a lot of statistical simulations (in C, FORTRAN or R) for my PhD thesis and am looking to speed things up a little bit. For example, if I want to simulate some random process 10,000 times and, for example, average the run length of each iteration, the total run time is about 8 hours using a single processor.
I am familiar with how quad core processors work, but I wanted to ask this question to be sure. If I upgrade to a quad core and instead run 4 random processes simultaneously at 2500 iterations each, would each of the cores be utilized, speeding up the whole sequence? Some of the software I use (for example, R) does not really support parallel processing, so if I have four programs open and running simultaneously, would that take advantage of all the processors?
It would but they will take longer to complete based on RAM usage.
You are asking if a quad is necessary? No. But here is the catch - you are kinda forced into buying one. You want a processor that can calculate a lot on a very short cycle. Guess what? All the newest processors are quad cores minus the i3. I am uncertain about the specific instruction sets your program uses so find out if it favors AMD or Intel architecture. AMD go for the 955 or hex core and OC to 4.0. Intel go for the 750 and OC to 4.0. Toss in at least 4 gigs of ram and you should be set. I give you this advice with a grain of salt because your description of what you needed was very ambiguous. More research on specifics on your part would be welcome. Good luck.
I'm planning on putting in 4 gigs of ram, probably 6.
A very simple description of how my program works: at iteration 1, random numbers are generated until their sum reaches a certain threshold. Once it does, the program goes onto iteration 2, where the process is repeated (random numbers are summed until their sum reaches a certain cutoff) etc.... Positive and negative numbers are generated, so it may take a while for each iteration to end. There are 6,000 iterations.
The language (R) does not yet support parallel processing. I figured, based on my understand of multi-core processors, that splitting this up into three simultaneous processes of 2,000 iterations, split up over the cores, would speed it up significantly (maybe not by 2/3, but still significantly.) I'm pretty sure the answer is yes, but I did want some outside confirmation to make sure I didn't miss anything.
I know that other languages (FORTRAN, C++) have support for parallel processing, but I don't use those nearly as much nowadays and am stuck with R.
What is your current processor and what is the core usage? By my understanding of the level of programming you are doing it seems very basic and simple. Also since you stated your programming would NOT support parallel programming then it would not speed it up. 1 core would be overloaded while others would be free to do OTHER programs such as winamp, IE, etc. Does that make sense? A program does not offload calculations onto other cores unless it IS parallel. Now if you instruct your program to run off of specific cores and turn the iterations to 2,000 as you stated then you would be fine - similar to F@H. One program per core. Hope this helps.
I think I may way overthinking this and not explaining it clearly.
Here is another example I can think of which is similar to the one I stated before and is hopefully more clear:
Suppose I need to print a consecutive list of numbers 1, 2, .... all the way out to some REALLY huge number, say n. I want to use Microsoft Excel to print this list out, but since the last number is so huge, it might take 10 minutes to generate the list on a single processor. Now suppose, instead, I have two excel programs open, one which generates the numbers 1, ... , n/2 (first half) and other which generates n/2+1, ...., n (the second half) and I run them both simultaneously. Would this situation take advantage of the separate processors? Assume that the single processor and dual processor are "high end" in their respective categories. Both of the programs are excel, and since I can't direct excel to split up the work over two processors, I instead use two excel programs.