I was just wondering if there's much demand inthe market for developers with multi-core CPU software performance skills. The chips are sensational in their potential performance but I've found in the past a lot of development managers have trouble getting their head around the potential performance and would rather focus on functionality
Right now the job market is very tight so it might seem that the demand is low. In a tight job market managers do projects that they have to do and defer projects that they should or could do. I manage a product with 70+ developers and speak from experience. I do know however that winning products will efficiently use the cpu horsepower at their disposal. Products that lag will eventual be overtaken by competitors.
I also think that knowing a product domain along with parallel programming is good. In my domain, EDA software, I can sometimes hire a generalist but would prefer a parallel programmer who knows something about Electonic CAD and that vertainly creates an advantage in the hiring process for me.
I agree with Tom Spyrou. "Products that lag will eventual be overtaken by competitors.". Besides, developers that don't get trained for multicore and parallel programming will be overtaken by competitors.
Taking advantage of multicore, you can also add more concurrent functions to an application. Hence, it's not just about processing power. It allows you to offer new user experiences.
For example, a few days ago, as was at IDF 2009. I showed an application running on both Windows, Moblin and MIDinux, using special effects and an attractive UI. It was possible to create this app because I took advantage of Intel Atom's Hyper-Threading features (2 logical cores, 2 hardware threads). Using it, I was able to improve the performance around 35% over the single threaded version.
Besides, I saw a eight-core (8 physical cores, 16 logical cores, 16 hardware threads) Xeon in the tecnology showcase. There are great opportunities for developers trained in multicore programming.
However, you know, some managers aren't prepared for this revolution. I had an exciting 2009 working with multicore. :)
Keep tuned with the events in this community. You'll find very interesting blogs and comments for real-life experts.
Besides, don't miss www.go-parallel.com
All the best,
Does Intel Core2 architecture really allow for micro-parallel programming?
I am developing a 5x5 Boggle board analysis program.
On a single core, the program scores 1277 boards/sec. Boards with a score around 10,769 with TWL06 lexicon.
The Lexicon data structure is immutable. Time stamps are employed to eliminate the duplicate word problem. There is a thread for finding words on a board for each letter in the lexicon.
Using mutexes and condition variables, I am still only able to use 45% of my CPU resourses on a Q9450.
All worker threads call the same recursive function many, many, many time per second. If the L1 instruction cache for each core is only 32KBytes, do the threads spend half of their time waiting to access L2 cache for the instruction code of the recursive function?
How fast are signals sent between cores? Is the parallel algorithm that I have designed too ambitious for the Core2 architecture?
All the Best,
JohnPaul Adamovsky - How does one start a new threadon this forum?
Hi - I'll respond from a broad perspective (I am located in France so my comments might not extrapolate to the US and other countries).
I have found that in general there are two types of parallel programmers - the HPC and the serial types who want to get into parallel programming.
The HPC type is well versed as to techniques and tools. They tend to use Intel and non Intel products. As a trainer of Thread Checker, Profiler and VTune, theHPC types i have encountered know the guts of these tools.
Then there is the general programmer (C++, Fortran)who does not have experience with parallel programming but who is otherwise very knowledgeable. I am astonished as to the fact that very few of this type of programmer have in not yet apprehended the importance of going parallel. The admonishment 'Go parallel or perish' has really not yet struck home. I believe the reason is that when going from a single core to a dual core on Windows, the OS, the virus protection program and outlook runing in the background generate so many logical threads and absorb so much CPU power that the parallelized application does not get a fair share of the extra computing power that the extra core. When quad cores and octo cores lap tops become common place, then we should be seeingserial monocore programmers express an increased demand for skills and tools.
So, to make it short, investing in parallel computing skills today is a good investment. If Moore's law applies to the # of cores in laptops then we should be seeing generalized octocores two/three years from now.
Hope this helps - just my 2 cents.
We are the developers! We make applications.
Once GUI app developed, it evolved all end user computer sw apps to follow common GUI design. Developers back then had to adapt their end user interaction to the nice GUI facility.
Likewise, nCore starts a new age in computer sw, and because of the increasing requirement to concurrent functionality, eventually successful market applications must rely on nCore performance.