Since the inception of the hybrid graphics laptop -- a laptop that has both an integrated stamina graphics chipset and a discrete high-speed graphics card, there has been a lot of buzz on the Internet about smart ways to harness the computational power of the powerful discrete GPU. In an ideal world, all apps would seamlessly use both the CPU and GPU computing power, and a hybrid graphics laptop would use one or both depending on the stamina/speed configuration.
Hybrid graphics laptops have been around for a while. In the Linux world, the first line of hybrid graphics laptops was the
Sony Vaio SZ-series, introduced 4 years ago. This laptop allowed for a stamina/speed cold switch through the BIOS, with minor modifications required on the Linux configuration. Nowadays, we have reported successeses for cold and hot switching on/off the discrete graphics card in different laptop models, like the
Sony Vaio Z-series, the Lenovo ThinkPad T500 or the
Acer Aspire Timeline 4610TG.
We have also reported before on Linux CUDA-enabled laptops like the
Sony Vaio Z-series:
http://linux-hybrid-graphics.blogspot.com/2009/12/how-to-use-nvidia-cudaopencl-linux-sdk.htmlAnd while
CUDA is an exciting new technology, it's still Nvidia specific, and alternatives like the
OpenCL are bound to reach mainstream in the near future.
Despite all efforts, the
OpenCL Linux stack still needs some tender loving care from the community. That's why it's important that Linux users make their voice heard and ask for a good
OpenCL Linux stack:
http://brainstorm.ubuntu.com/ideatorrent/idea/16362Efforts like the Linux OpenCL API Ubuntu Brainstorm would open a new field of possibilities for the Linux ecosystem, combining the openness of Linux development with the sexiness of Apple-backed
OpenCL ecosystem.
We hope to be able to report more about Linux
OpenCL in the future, but here are some concepts to keep you interested until then:
CUDA is a parallel computing architecture from Nvidia that allows
programmers to tap Nvidia GPUs processing power for general purpose
computations. CUDA is only available for Nvidia hardware and it
programming requires specific knowledge of Nvidia GPU architectures.
On the other hand,
OpenCL is a framework for writing programs that
execute across heterogeneous platforms consisting of CPUs, GPUs, and
other processors. It allows parallel code to be written and executed
across the different platforms in a computer -- usually the CPUs and
the GPU. The goal of OpenCL is to achieve code independence from the
specific architecture that will execute it, like Intel or AMD CPUs and
Nvidia or AMD/ATI GPUs. So if you write a computational code in
OpenCL, ideally, you can compile the same code for any combination of
Intel, Nvidia or AMD/ATI processors.
The Nvidia Linux drivers introduced CUDA starting from version 190.42,
but not OpenCL features.
These drivers contain, for example, the
VDPAU libraries, to allow
video programs to offload portions of the video decoding process and
video post-processing to the GPU video-hardware. So if you install it
in your nvidia hybrid graphics linux laptop, you will be able to run
applications that use VDPAU for video playback. Additionally, you can
also install cuda-sdk and cuda-toolkit, and experiment with them by
writing, compiling and executing you own CUDA code.
There are already packages in the Linux system that will make use of a
CUDA-enabled system. Brandon Snider has made available commonly used
applications like mplayer or xine-lib in the Nvidia Vdpau Launchpad
Team:
http://launchpad.net/~nvidia-vdpau/+archive/ppa
This is ideal for a breed of hybrid graphics laptops like the
Sony
Vaio Z-series, or the
Asus UL30Vt/UL80Vt, that will seamlessly play HD
videos by enabling the computational power of the Nvidia GPU
processor.