Configuring your PC to use your Nvidia GPU with PCL
In this tutorial we will learn how to check if your PC is suitable for use with the GPU methods provided within PCL. This tutorial has been tested on Ubuntu 11.04 and 12.04, let us know on the user mailing list if you have tested this on other distributions.
The explanation
In order to run the code you’ll need a decent Nvidia GPU with Fermi or Kepler architecture you can check this by:
$ lspci | grep nVidia
This should indicate which GPU you have on your system, if you don’t have an Nvidia GPU, we’re sorry, but you won’t be able to use PCL GPU. The output of this you can compare with this link on the Nvidia website, your card should mention compute capability of 2.x (Fermi) or 3.x (Kepler) or higher. If you want to run with a GUI, you can also run:
$ nvidia-settings
From either CLI or from your system settings menu. This should mention the same information.
First you need to test if your CPU is 32 or 64 bit, if it is 64-bit, it is preferred to work in this mode. For this you can run:
$ lscpu | grep op-mode
As a next step you will need a up to date version of the Cuda Toolkit. You can get this here, at the time of writing the latest version was 4.2 and the beta release of version 5 was available as well.
First you will need to install the latest video drivers, download the correct one from the site and run the install file, after this, download the toolkit and install it. At the moment of writing this was version 295.41, please choose the most up to date one:
$ wget http://developer.download.nvidia.com/compute/cuda/4_2/rel/drivers/devdriver_4.2_linux_64_295.41.run
Make the driver executable:
$ chmod +x devdriver_4.2_linux_64_295.41.run
Run the driver:
$ sudo ./devdriver_4.2_linux_64_295.41.run
You need to run this script without your X-server running. You can shut your X-server down as follows: Go to a terminal by pressing Ctrl-Alt-F1 and typing:
$ sudo service gdm stop
Once you have installed you GPU device driver you will also need to install the CUDA Toolkit:
$ wget http://developer.download.nvidia.com/compute/cuda/4_2/rel/toolkit/cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
$ chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
$ sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
You can get the SDK, but for PCL this is not needed, this provides you with general CUDA examples and some scripts to test the performance of your CPU as well as your hardware specifications.
CUDA only compiles with gcc 4.4 and lower, so if your default installed gcc is 4.5 or higher you’ll need to install gcc 4.4:
$ sudo apt-get install gcc-4.4
Now you need to force your gcc to use this version, you can remove the older version, the other option is to create a symlink in your home folder and include that in the beginning of your path:
$ cd $ mkdir bin
Add ‘export PATH=$HOME/bin:$PATH as the last line to your ~/.bashrc file. Now create the symlinks in your bin folder:
$ cd ~/bin $ ln -s <your_gcc_installation> c++ $ ln -s <your_gcc_installation> cc $ ln -s <your_gcc_installation> g++ $ ln -s <your_gcc_installation> gcc
If you use colorgcc these links all need to point to /usr/bin/colorgcc.
Now you can get the latest git master (or another one) of PCL and configure your installation to use the CUDA functions.
Go to your PCL root folder and do:
$ mkdir build; cd build
$ ccmake ..
Press c to configure ccmake, press t to toggle to the advanced mode as a number of options only appear in advanced mode. The latest CUDA algorithms are being kept in the GPU project, for this the BUILD_GPU option needs to be on and the BUILD_gpu_<X> indicate the different GPU subprojects.
Press c again to configure for you options, press g to generate the makefiles and to exit. Now the makefiles have been generated successfully and can be executed by doing:
$ make
If you want to install your PCL installation for everybody to use:
$ make install
Now your installation is finished!
Tested Hardware
Please report us the hardware you have tested the following methods with.
Method | Hardware | Reported FPS |
---|---|---|
Kinfu | GTX680, Intel Xeon CPU E5620 @ 2.40Ghz x 8, 24Gb RAM | 20-27 |
GTX480, Intel Xeon CPU W3550 @ 3.07GHz × 4, 7.8Gb RAM | 40 | |
C2070, Intel Xeon CPU E5620 @ 2.40Ghz x 8, 24Gb RAM | 29 | |
People Pose Detection | GTX680, Intel Xeon CPU E5620 @ 2.40Ghz x 8, 24Gb RAM | 20-23 |
C2070, Intel Xeon CPU E5620 @ 2.40Ghz x 8, 24Gb RAM | 10-20 |