Unfortunately parallel programming isn't hit all that hard in undergrad courses and programming languages don't frequently make the task as straightforward as it should be.
Yeah I agree. I'm not really sure what the solution is, though. Parallelism is hard to code, and I really don't see a new language fixing that problem. For me, most of my simulations are independent and can easily be parallelized, so it'll be nice for that sort of thing.
All I ever really learned about parallelism was fork(); and how hard it is to do file I/O when you have multiple threads writing to one file.
Some languages make the task of parallelism easier than others (like Erlang), but difficulty from implementation to implementation can heavily depend on the problem at hand.
Or leave the core assignment up to the OS like it should be. Programs under normal situations shouldn't need to know or care how many cores there are. The OS should understand how many resources are at it's disposal and assign tasks to those resources accordingly. This whole situation we are currently running into with multi-threaded pcu's being neutered because programs aren't taking advantage of them is ridiculous.
The OS can switch threads to different cores, the OS can't magically make a single threaded program multi-threaded though. They actually spent a fair amount of time dealing with multi-threaded programming in my college... well.. in one course anyway. It's really not that hard to do (depending on what exactly your code is doing of course) but it can be kind of tedious making sure you don't have any race conditions in your code.
Im a programmer and to make it very simple for everyone to understand :
Basicaly, the more your application use and lauch explicitly declared thread, the more it will benifit from more core.
A thread is like a "channel" in wich you can launch a request or a method or whatever and it will not freeze you're application while its processing and you can continue to do other things.
If the application use no thread at all, it will be very difficult for windows to make that application use more than one core. (Well, in fact even if you don't explicitly use tread, windows will use some while running but it will be on rare occasion).
It takes some serious and heavy application to be able to program it in a way that it could use 12 core most of the time.
To use 12 core you need to be able to split a single long task in 12 lesser task to run at the same time. (Wich is , kinda very hard to do, and probably wont last long)
The other more common case is doing more than one thing at a time in the application. Saving and Encrypting some data while you're processing a search and sorting the results with the use of thread could use every core for a short time.
For most users, more than 4 core atm is overkill, anything more than that is clearly for server. The only way you could benifit from 12 cores at the moment in a single desktop is running like 8 application and doing something in each of them at the same time, even then, there'll be time when some of your cores are idle if you have 12 of them :P
These are server processor's. Twelve cores in a consumer desktop will be a few years beyond the server application I would imagine.
I'm running a quad with 8GB of RAM now, and its impossible for me to imagine anyone needing more multitasking power in a Windows 7 environment, at least until the applications start taking better advantage of the reserve capability for enthusiast desktop's.
Servers though, that's a whole other ballgame. Keep in mind that those that preach the value of the future cloud will tell you that server CPU power is going to become king, and less and less will people depend on local hardware for computing as the broadband pipes open up and the cloud becomes a reality. I think its further off than some, but one day the CPU war may be exclusively fought inside of server farms, and not on a per desktop basis. If that is the case, it looks like AMD wants to be well positioned for that.
This is virtualization for days. Load up several XenServers or Hyper-V a RDS farm on a quad processor system, I don't think 48 cores will be enough!!! Well, I guess having enough ram to support a full load might actually be a problem, server ram isn't exactly cheap.
Comments
HAL 9000 here we come?
I say...neat. I hope people start to learn to write code that takes advantage of more than one thread soon.
All I ever really learned about parallelism was fork(); and how hard it is to do file I/O when you have multiple threads writing to one file.
Basicaly, the more your application use and lauch explicitly declared thread, the more it will benifit from more core.
A thread is like a "channel" in wich you can launch a request or a method or whatever and it will not freeze you're application while its processing and you can continue to do other things.
If the application use no thread at all, it will be very difficult for windows to make that application use more than one core. (Well, in fact even if you don't explicitly use tread, windows will use some while running but it will be on rare occasion).
It takes some serious and heavy application to be able to program it in a way that it could use 12 core most of the time.
To use 12 core you need to be able to split a single long task in 12 lesser task to run at the same time. (Wich is , kinda very hard to do, and probably wont last long)
The other more common case is doing more than one thing at a time in the application. Saving and Encrypting some data while you're processing a search and sorting the results with the use of thread could use every core for a short time.
For most users, more than 4 core atm is overkill, anything more than that is clearly for server. The only way you could benifit from 12 cores at the moment in a single desktop is running like 8 application and doing something in each of them at the same time, even then, there'll be time when some of your cores are idle if you have 12 of them :P
Never worked on an apache server tho, all our servers are Microsoft all the way =( Win2003 server and Win2008 server heh
I'm running a quad with 8GB of RAM now, and its impossible for me to imagine anyone needing more multitasking power in a Windows 7 environment, at least until the applications start taking better advantage of the reserve capability for enthusiast desktop's.
Servers though, that's a whole other ballgame. Keep in mind that those that preach the value of the future cloud will tell you that server CPU power is going to become king, and less and less will people depend on local hardware for computing as the broadband pipes open up and the cloud becomes a reality. I think its further off than some, but one day the CPU war may be exclusively fought inside of server farms, and not on a per desktop basis. If that is the case, it looks like AMD wants to be well positioned for that.