How to get dual core additional processor into the program

Started by Gian Piero, December 27, 2006, 08:43:44 PM

Previous topic - Next topic

Gian Piero

Hi everybody !
I am ready to buy my new 64 bit processor, however the dilemma is: single processor, dual processor or quad, etc. ??
What good is a dual core processor if the software only recognizes and then uses only one of the cores?
Is the software already written to utilize multithreading at present ?
My applications will be mainly devoted to codes theory using only integer instructions.
Almost all instructions can be executed once the preceding instruction is terminated, however now and then I may have some multithreading i.e. a loop using the elements of an array vector x times.
Now my questions are:
1) Can the number of processors be more than one if desired ?
2) If yes, which are the instructions for calling the additional processor ?
3) Or is this decided by the processor unit whether using single or multi processing ?
Thank you for any one to help, I read the following link:
http://www.short-media.com/review.php?r=261
but did not really understand how the single software can be augmented with multi processing.
Cheers
Gian Piero

jorgon

Hi Gian

All this is organised by the operating system, in the same way as the OS would deal with more than one processor on the motherboard.

According to Microsoft, Windows X64 Professional Edition can support "up to two single or multicore x64 processors" see  this article.

Windows Server 2003 supports up to 8 processors, depending on the version see this article, although it's not very clear whether there is a difference between the 32 and 64-bit versions.  Then there is Vista ..

In practice your application would not consciously try to use the additional core or processor.  The system would decide which instructions should be executed by which core or processor.  Because of the switching involved, I suspect that if you use more than one thread in your application there is much more chance of the system running your application using both processors.






Author of the "Go" tools (GoAsm, GoLink, GoRC, GoBug)

Gian Piero

Jorgon, you opened my eyes on how now and in the future the OS's are to be considered in the evaluation of a job's speed.
Recently Intel announced the 2core dual version (the quad processor).
The old days when the Assembly programmer was careless about the OS are over.
Now as I am speed-hungry I most probably shall buy the Intel Quad.
But at the same time I will have to cater for the OS.
The last should be exactly matching the operation of the 4 processors on the motherboard.
This will be more advisable than an up-to-8 procs OS, as such device will certainly be designed to a slower cycle time due to the higher operating temperature foreseen.
Do you know how to search for an OS ad-hoc with the processor hardware (maybe Exchange 2007 ?)
I tried and I shall keep trying on this search, but maybe you can give me some good short-cut advice !
Thank you for all your precious advices !
Cheers
Gian   

stanhebben

Gian, if your processor has 4 cores, it's still only one processor. This confused some other people too.


Gian

Thanks for your remark.
So, if I understand correctly, the dual core processor has actually only one processor sitting on the motherboard.
But Intel and AMD claim that the additional core increases wildly the speed of an application, by executing parallel instructions.
What I don't understand is how this is comparable to the "parallel processing" performed in the super-computers, where for example different legs of a loop are executed simultaneously by different processors.

Cheers

stanhebben

This is about the same as the parallel processing in supercomputers. However, in supercomputers, the cores are on separate chips, sitting on many motherboards. (that's why they are so large)

drhowarddrfine

Gian,
You might look into FreeBSD which has worked with eight processor setups and dual core for over a year now.

Hardware Support

Dual-core processors (such as the Intel Core Duo) now have both cores available for use by default in SMP-enabled kernels.

yahoo

Reasonable use CPU is the operating system work, the operating system can act according to the certain principle to dispatch CPU to come fully to display CPU the performance My computer disposition as follows: CPU: P D805.under the XP OS task manager demonstration two CPU note for use, the CPU use factor  is veryalways low, about 10% Occasionally achieved 100% possibly were having bugs ::) :bdg :red

TomRiddle

By the by, anyone seen information on what pairing instructions does to a dual-core cpu?
How about multi-processor+pairing+dual-core?

Just curious  ::)

Rockoon

Each core is a logically seperate processor (not counting intel's HT virtual core technology) with its own caches, execution units, branch prediction logic, and so forth. The sharing doesnt begin until you get on the bus.

On Windows XP 64 threads are scheduled by the task manager and assigned a processor based on some sort of heuristic (not sure what it is) .. If you run a single program with a single thread on XP64 you will see the task being switched between the two cores quite rapidly. I am assuming that this is an attempt to balance temperature between the two halves of the chip.

In order to leverage a multicore or multicpu system, you need more than one thread. One thread for each processor. In the case of Intels HT technology, you might not want to count those virtual cores as additional processors because they do share execution units. To maximize instructions per second on HT's it would probably behoove you to have an integer heavy and an fpu heavy thread for each HT combo (set the thread afinity's to garanee who is running what)

Algorithms that have very long dependencies will not play well with the extra horsepower given by parallel processors as there are no tricks that will take advantage of them. Many algorithms have very short dependencies and can fully utilize all the processors available.

As has been known for a long time now, the challenge will be with algorithms that are somewhere in the middle between being long and short dependencies, and the obstacle is efficient communication between threads.
When C++ compilers can be coerced to emit rcl and rcr, I *might* consider using one.