Thursday, September 17, 2009

GPU and parallel computing

[Désolé pour mes lecteurs francophones; vous pouvez toujours traduire ce texte par l'intermédiaire de google translate, disponible en cliquant ici ]

If you have a recent (or very expensive) computer, odds are you have a wicked graphics card. Nowadays, graphics cards are used to play state of the art computer games which require massive computational resources for processing complex 3D images, landscapes, and interractions in real time. The Graphics Processing Unit (GPU) in these new video cards are amazing hardware. In fact, recent high-end (and not so high-end) cards have streaming processors, which basically means the small processors run in parallel to execute commands. This contrasts to CPUs (Central Processing Units), which are the heart and brain of personal computers. The latter have been getting faster and faster over the years, but execute only one command at a time (except for dual-, quand-, and octo-CPUs). 

Well, as one of my previous posts mentions, some scientists are harnessing the power of these graphics cards, and not just to play the latest Call of Duty or Half-Life derivatives... Turns out the Streaming processors of these cards are excellent for parallel algorithms. For instance, some analyses run exponentially faster when built in parallel (thus many operations at one). This demands a certain independence of the calculations, but is equivalent to the (mostly) government owned super-computers (to some extent). Have a look at some of the biological sciences applications for graphics cards on NVIDIAs CUDA platform. The CUDA is a C++ extension that allows you to run certain processes on your fancy overclocked GeForce 9800! This makes high-end computational analyses available to the average user on their personal computer! AWESOME !

No comments: