Fri 22 Aug 2008

RSS Feed

Edited by Paul Hales

Published by Incisive Media Investments Ltd.

Terms and Conditions of use.

To advertise in Europe e-mail here

To advertise in Asia email here.

To advertise in North America email here.

Join the INQbot Mail List for a weekly guide to our news stories:

Subscribe

Parallel programmers not prepared for the glorious revolution

Intel goes post-Communist with multicore

INTEL RECKONS barely one per cent of software programmers are prepared to face the challenge of parallel programming, which the hardware giant (unsurprisingly) reckons is the future of development.

Anwar Ghuloum, a Principal Engineer in Chipzilla's technology lab says in a new blog post that "Parallel programming has been whatever you'd call that next thing smalller than a niche... a reasonable estimate is that one per cent... of programmers, at best, have "some" experience with parallel programming."

That doesn't bode well for a future which is increasingly massively parallel - not only is Intel increasing the number of cores on its chips from four today up to hundreds within years, but programmers looking to harness the power of GPGPU are already having to fight the issues of code executing on hundreds of processors at once.

This would be one of the main reasons Intel, Nvidia and AMD are all desperately trying to find ways to make the process easier - including writing middleware like the latest Intel compilers, which automagically parallelolise code.

Anwar reckons the silicon necessities of processor development - going more parallel rather than faster - is creating something of a 'velvet revolution' in software development. We can only dream of the glorious images of Paul Otellini in post-Communist fatigues. µ

Comments

BeOS

Take a look at the BeOS architecture, or, whats left of it.

Still (very) advanced for its time even when it would be still active...
posted by : Dennis, 27 November 2007

Parallel programming is easy

There is a standard in the research world which is called openMP. It works as a library using an include in any of your C, C++, Fortran files and makes your code threaded so easily.

You simply have to specify whether your variables are shared or private, and where you want to start or synchronise your threads.

No need to know even how many processors you have in your machine. Simply let the program know what you want to make parallel.
posted by : Roger, 27 November 2007

Parallelolise?

I had to look that one up because I just couldn't believe it.

Sure enough it was a misspelling of parallelize (or parallelise for you Brits).
posted by : Charles, 27 November 2007

Parallel Program Progress

"Reverse engineering has become an art form of its own, with ingenious programs called decompilers that analyse the details of a complicated mass of computer code to allow a rival to reach the same, or with luck an improved, end state through a different route.

As soon as any piece of software is released nowadays, it is at once decompiled - unless it has been protected by an obfuscator, a binary gadget that deliberately renders it impenetrable (although the latest news is that no program is in fact unobfuscatable, which should bring comfort to those who try to interpret Blake's more enigmatic poems).".. http://www.telegraph.co.uk/earth/main.jhtml;jsessionid=2DFN0EMRY5OMJQFIQMFSFFWAVCBQ0IV0?xml=/earth/2007/11/27/scilab127.xml

I agree, and would suggest further that it then renders the System under an Improved Parallel Proxy Control, dDeeply Embedded with Omniscient Latent Power.

And being IntelAIgently Designed would ITs Proper Planning and Preparation Prevent Piss Poor Performance Permitting AI QuITe Sane Disregard of Haste.

IT would however AIR ITs dDevelopment for Current/Flow .... Currency with Third Party Positive Reinforcers ..... Effective Whips as opposed to any Plethora of Effected Wimps.

And in the Fields of Virtual Relativity is the Bottleneck of Banked Wealth the Resistance and Obstacle/Interference to Power Flow. Release the Interference and the Current and Power will Flow both Better and Beta.

In any Theory of Everything, Cross Dimensional XSS Referencing is a Valid Control Point/IntelAIgent Node/Restore Point/Base camp for further AIResearch and ITs Advanced IntelAIgents Virtual Defence.

Steve Jones is professor of genetics at University College London
posted by : amanfromMars, 27 November 2007

Mac

The MP vs developers/programmers issue has been a problem on the mac platform for years. They produced Macs for mainly Photoshop and if im not wrong Premier. MP didnt become the "shit" it just silently died out. Why not look at other platforms and see the problems and try to solve them before the problem becomes a problem or issue but thats the computer business for you. Strange.
posted by : Clem, 27 November 2007

Parallel programming is difficult as much as true programming is...

..the fact that virtual machines like Java and .NET allow for easier (I'd say dumb) programming where a novice could code a lot of stuff by simply being forced to use what it has been already development with no real low level control like in C/C++, that doesn't mean that programming is easy. Good programming is very difficult and who know how to code and optimize properly in C/C++ using inline assembly with a strong hardware architecture background is much better than anyone using pre-assembled libraries/frameworks of any kind. Reinventing the wheel to make good software products it's still worth in many environments.
posted by : Joerg, 27 November 2007

"parallel programming is easy"

Sorry Roger, I'm afraid you don't have a clue.

OpenMP is indeed a nice tool for certain data-parallel threading candidates, but all it does it handle the low level thread management work for you. If you'd ever done any, you would know that the hardest part of writing threaded code is designing scalable algorithms and making the code threadsafe. OpenMP gives you a better hammer, but you still have to build the house yourself.
posted by : Martin, 27 November 2007

Automatic parallelization is poo

The author forgets to mention that the automatic parallelization routines almost never work. The only way to really do parallelization right is OpenMP or MPI, as Roger points out. But Roger's point about it being easy as pie is only true for the simplest cases, of which there are not that many.
posted by : Michael, 27 November 2007

Parallel programming has been around

for a long time, often appearing in real-time commercial or military systems. Only a percentage of commercial programmers are able to add the dimension of real time to their systems and programs and not many more can do parallelism. Obviously widespread use of parallelism can't depend on talent, thus more attempts to do it automatically. Some compilers have had low level parallelism for years - TI's DSP C compilers for starters.

Most older programmers here use Java in preference to C++ for the simple reason that the Java world is a meritocracy. The C++ world, for some reason, rejects older programmers the way an immune system rejects a virus. I predict that parallel programming will be used as C++ is although experienced people should be at a premium.

Higher level parallelism, task/thread and system level, still require the light going on in an individual head and not on compilers. A key principle, as usual, is KISS.
posted by : maguro_01, 27 November 2007

Listen to Luantics Guessing.

Ha,ha,ha. Programs are 10,000 lines with sub routines nestled within. mACHINE GOES BACK & FORTH THRU CODE AS INSTRUCTED, those subroutines that create files go to memory. thats where multi thing hangs out instead.
Instead of going to controller & seeking memory address for sub routine that has been set up to be repeated or use filed data, it all simply stays within processor.
I Know, I....invented EARTH.
thomas stewart von drashek
posted by : ULTIE_Writer, 27 November 2007

I/O is the real problem

Having 100 cores is all well and good, but most real world programs spend most of their time in I/O wait not churning up the CPU. Now you will just have 4 cores waiting for the disk to read the data you need instead of 1.

Java and C++ (/w libs) make writing parallel code easy - problem is that it's not always the solution. When our storage devices start listing their throughput in GB/s instead of a measly couple 100 MB/s then call me about parallel programming for every task.
posted by : Josh, 27 November 2007

Data Parallel is the Future

and it is much much easier than task parallel.

It still will take some time to get used to and ramp up a whole swath of programmers, however, data is the essence of life itself, and data parallel will be the barbarian hordes to come forth and save us from our Intel masters. They are at the gates now and if only intel had not beaten them off with their one horse innovation strategy for so long (more transistors on chip) (instead of something really innovative like GPGPU) we might all be sitting around with a lot more low cost HPC. But I sit here and can barely write thios comment cause my virus checker kicked in and is hogging all my processor. WHen will the revolution start. Soon I hope.
posted by : Paul, 27 November 2007

Programming languages will need to change

Parallel programming should be easy, but is currently hard. This used to be the case with GUI programming too.We had to import object-oriented concepts from an obscure language called Simula to allow simple GUI programs to be written.

Expect to see obscure concepts from goal-driven functional languages arrive in your favorite language soon. These languages have efficient run-time allocation onto any number of processors with minimal synchronisation visible to the programmer.
posted by : Glen Turner, 27 November 2007

Clem and Mac OS

I don't know where Clem is coming from but it is clear that he has not been paying attention to Apple at all. During the PowerPC days Apple did create API's for doing MP and that was more than 7 years ago. Power PC 604's, G4's and G5's all did MP. Now we have OS X which is about as MP as it gets since OS X is UNIX is Linux programming-wise. The API's are there and are in use NOW. The headaches arise from synchronizing threads and learning to write code that will thread properly. This is not a weekend programming project, this requires training beyond the typical CS degree. Know C/C++ and then learn semaphors and threads and thread management. THE solution is to make tons of source code as examples and make the synchronization of threads a piece of cake. Ta da!

posted by : Donald Tillman, 28 November 2007

Radical change is needed

The move to parallel programming requires more than OpenMP and some of the other efforts I've seen. It's just too complex. It's going to take a complete re-thinking of the problem. I suspect most of the job will have to be left to compilers and a programming language specifically designed for the task.
posted by : Steve, 28 November 2007

Erlang

Creating and managing processes is trivial in Erlang, whereas threads are considered a complicated and error prone topic in most languages. Though all concurrency is explicit in Erlang, processes communicate using message passing instead of shared variables, which removes the need for locks.
posted by : Michel, 28 November 2007

Beam Us Up Scotty, MI56ion Accomplished

"Higher level parallelism, task/thread and system level, still require the light going on in an individual head and not on compilers. A key principle, as usual, is KISS.
posted by : maguro_01, 27 November 2007 "

That is, at the top level, red light virtualisation territory, maguro, for Lovers of the Genre. And most definitely Mastery of Universes stuff which will Shake the Markets to their Core and Stir IT into Radical Action/Fundamental Change. IT will also Create a NeuReal Virtual Market Place which is already embedding itseld deep within existing Trading Markets to deal from the inside. And whether 'tis inside to inside or inside to outside is for inside to decide as they will invariably always be the first to know if their systems/spies are working well and, being the path of least resistance, they may even be offered it rather than being found derelict/intellectual challenged in finding it.... the Next Great GAIme Challenge of Open Secrets .... Real Freedom to do as You Please. ... http://www.theregister.co.uk/2007/11/26/lying_2_computer_still_lying/comments/
posted by : amanfromMars, 28 November 2007

No Silver Bullet

Of course you have to understand that companies like Intel must convince the world that parallel processing can be done for nearly any program given a good enough programmer. If they don't their stock loses value and consumers eventually don't feel compelled to upgrade.

The truth is that no program/algorithm is going to scale well unless it exhibits a little known trait called data level parallelism (typically referred to as being embarrassingly parallel).

So yes, everyone please remember what Intel (or AMD if they ever get back on their feet) are really trying to do, raise stock prices and get consumers excited. Nothing more, nothing less.
posted by : KK, 28 November 2007

WHILE, AND, WAIT UNTIL etc

Isn't distributed computing & cluster computing by nature executing code in some kind of parallel, seeing as it uses multiple processors.

Which includes backplanes with many cores of the same CPU, to many different computers - running all kinds of hw and OSs - all working on the same task.

Other than for highly specified to-order code, that is written with the exact hardware it will run on in mind, it's probably too tricky to do that for en masse sw releases, because there's so many different hardware designs just for core components. Maybe easier to get an assembley standard written up, with the distributed middleware directly dealing with the system calls - easier in the sense, well the main players, and then some, would all have to agree on an assembley standard.

'At the end of the day', you're either sending each instruction out shared amoung x amount of CPUs (or GPUs..), or you're telling a specific CPU, or more than one CPU, to deal with a specific task AND giving another CPU(s) another task to do at the same time.
Or of course you can do both those in one program.

posted by : zupakomputer, 28 November 2007

Parallel programming is easy-er than OpenMP

All you need are the CreateThread() and CloseHandle() functions in <windows.h>. I believe in Linux it's actually even simpler!!
posted by : Stephen Brooks, 30 November 2007
IThound
Search for solutions, reports & analysis

Newsletter signup