Link to home
Start Free TrialLog in
Avatar of Line One
Line One

asked on

programming/ use of multiple cores - theoretical optimization of threads/cores

Assuming that I have a multi-core computer system and that the OS - Windows 7 let's say - recognizes all the cores. I know that  Windows itself has been designed to take advantage of the multiple cores but what about the applications I run? When they start up for instance, do they take stock of the fact that there are multiple cores in the system e.g. if I have 4 versus 2 they 'know' that? And given that they do 'know' how many cores I have can the programs also be written in such a generalized way that they will automatically adjust their threads to make the maximum use of the cores I have? E.g. if I have 2 cores, the program can break its processing into 2 thread pairs, whereas if I have 6 cores, the program will break it's processing into 6 thread 'groups'. I understand that not all processes can necessarily be broken into 6-thread 'groups' - I am referring to the ability of programming languages to be able to use whatever thread pairing is most optimal within the constraints of how many total cores are available to it?  So with a 6 core system there may be times when only 2 threads are being used over 2 cores, at other times 4 over 4 and at other times the full 6 are used.
ASKER CERTIFIED SOLUTION
Avatar of saragani
saragani

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Avatar of Todd Gerbert
Todd Gerbert
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Line One
Line One

ASKER

Thanks for all the info.

Just a note here. I am not planning to modify any applications to utilize multiple cores.  I was just curious as to how applications used multiple cores.  

I was also curious as to what kinds of applications were ideal candidates for harnessing the powers of multiple cores. For instance, I would imagine that word processing would not be.
Examples:
Databases -
Are there specific types of database processing that would really fly with multiple cores (assuming they have been programmed to use multiple cores) but other database processing that it wouldn't make much difference?
Calculation-intensive applications e.g. scientific/graphic/modelling - - which if any of these types would benefit from more rather than  less multiple cores?
Audio/video production - often in these areas there are dozens and dozens of 'tracks' to which effects are applied to entire sets of tracks at one time or sometimes 'real time' effects to several tracks. Are these applications natural candidates for 'threading'?

SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks for all the info. I will ruminate over it.