I need to point out, that it is somewhat appalling the need to write a new tutorial for every time either a linux version or a product (pick your favourite) version is released. That said, I am off to provide the tutorial.
I had to read many tutorials and walkthroughs, as well as forum threads to succeed in the installation. So some parts might look very familiar!
First of all we will need to install the cuda graphics driver. Afterwards the cuda toolkit, followed by the cuda sdk. Finally we 'll install gcc 4.3 beacuse Cuda cannot cooperate with gcc 4.4 with which Ubuntu 10.04 ships. The linux version I am using is i386. I presume the instructions will work as well with x86_64 kernel.
Go to the official nvidia-CUDA download page:
http://developer.nvidia.com/object/cuda_3_0_downloads.html#Linux
Download the CUDA Toolkit and the CUDA SDK:
CUDA Toolkit for Ubuntu Linux 9.04 (32-bit)
GPU Computing SDK code samples and more
-----------------------------
Installing the NVIDIA driver:
-----------------------------
We'll need the latest cuda development driver available (195.xx), but first we'll uninstall the existing drivers.
1. Uninstall existing NVIDIA drivers and nvidia-glx.
(if you have enabled nvidia in system->administration->hardware drivers, then disable them first and possibly reboot)
sudo apt-get purge nvidia-*
2. Stop gdm service by running
sudo service gdm stop
3. Install drivers from nvidia repository
sudo add-apt-repository ppa:nvidia-vdpau/ppa
sudo apt-get update
sudo apt-get install nvidia-185-modaliases nvidia-glx-185 nvidia-settings
sudo nvidia-xconfig
4. Reboot and log back in.
5. Run
nvidia-settings
to verify that your driver version is at least 195. Look for the driver version in the window:
The 195.xx NVIDIA Driver for use with CUDA.
----------------------------
Installing the CUDA Toolkit:
----------------------------
After having installed the driver we now need to install the CUDA toolkit itself.
1. Run:
sudo sh cudatoolkit_3.0_linux_32_ubuntu9.04.run
2. Press enter to install at the default location.
/usr/local/cuda
3. Register the new library files:
sudo gedit /etc/ld.so.conf.d/cuda.conf &
and add the following to the empty file
/usr/local/cuda/lib
Save the file and close gedit.
Then run:
sudo ldconfig
Create a link to the libcuda.so library:
cd /usr/lib
sudo ln -s nvidia-current/libcuda.so libcuda.so
Also add to the end of your ~/.bashrc file.
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib
restart bash
----------------------------------------------------------
Installing the CUDA SDK and Compiling the Example Programs
----------------------------------------------------------
We will now install the CUDA SDK to our own home directory (we can experiment with the supplied demos):
1. Install SDK to the default location
sh gpucomputingsdk_3.0_linux.run
2. As CUDA does not yet work with GCC 4.4 we will have to install gcc-4.3:
sudo apt-get install gcc-4.3 g++-4.3 g++-4.4
sudo update-alternatives --remove-all gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.3 43 --slave /usr/bin/g++ g++ /usr/bin/g++-4.3 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.3
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 44 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.4
sudo update-alternatives --config gcc ### choose gcc 4.3
3. Install CUDA SDK requirements
sudo apt-get install libglut3-dev libxi-dev libxmu-dev
4. Go to SDK source dir:
cd ~/NVIDIA_GPU_Computing_SDK/C$
5. You should now be able to compile everything by running
make
This should now compile all the examples in the SDK without errors.
---------------------------------------------
Verify Installation
---------------------------------------------
We can now verify that everything is working:
1. Run (from ~/NVIDIA_GPU_Computing_SDK/C):
bin/linux/release/deviceQuery
On my machine I get the following output (depending on your harware, you output may be different. mine is a GeForce 8500 GT):
------------------------------------------------
bin/linux/release/deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
There is 1 device supporting CUDA
Device 0: "GeForce 8500 GT"
CUDA Driver Version: 3.0
CUDA Runtime Version: 3.0
CUDA Capability Major revision number: 1
CUDA Capability Minor revision number: 1
Total amount of global memory: 536150016 bytes
Number of multiprocessors: 2
Number of cores: 16
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 16384 bytes
Total number of registers available per block: 8192
Warp size: 32
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Maximum memory pitch: 2147483647 bytes
Texture alignment: 256 bytes
Clock rate: 1.57 GHz
Concurrent copy and execution: Yes
Run time limit on kernels: Yes
Integrated: No
Support host page-locked memory mapping: No
Compute mode: Default (multiple host threads can use this device simultaneously)
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 134566327, CUDA Runtime Version = 3.0, NumDevs = 1, Device = GeForce 8500 GT
PASSED
Press to Quit...
-----------------------------------------------------------
-----------------------------------------------------------
That was it. It was a little hard, but it is worth the effort.
Let us only hope that we will not be obligated to write a new one for every release!!!
I had to read many tutorials and walkthroughs, as well as forum threads to succeed in the installation. So some parts might look very familiar!
First of all we will need to install the cuda graphics driver. Afterwards the cuda toolkit, followed by the cuda sdk. Finally we 'll install gcc 4.3 beacuse Cuda cannot cooperate with gcc 4.4 with which Ubuntu 10.04 ships. The linux version I am using is i386. I presume the instructions will work as well with x86_64 kernel.
Go to the official nvidia-CUDA download page:
http://developer.nvidia.com/object/cuda_3_0_downloads.html#Linux
Download the CUDA Toolkit and the CUDA SDK:
CUDA Toolkit for Ubuntu Linux 9.04 (32-bit)
GPU Computing SDK code samples and more
-----------------------------
Installing the NVIDIA driver:
-----------------------------
We'll need the latest cuda development driver available (195.xx), but first we'll uninstall the existing drivers.
1. Uninstall existing NVIDIA drivers and nvidia-glx.
(if you have enabled nvidia in system->administration->hardware drivers, then disable them first and possibly reboot)
sudo apt-get purge nvidia-*
2. Stop gdm service by running
sudo service gdm stop
3. Install drivers from nvidia repository
sudo add-apt-repository ppa:nvidia-vdpau/ppa
sudo apt-get update
sudo apt-get install nvidia-185-modaliases nvidia-glx-185 nvidia-settings
sudo nvidia-xconfig
4. Reboot and log back in.
5. Run
nvidia-settings
to verify that your driver version is at least 195. Look for the driver version in the window:
The 195.xx NVIDIA Driver for use with CUDA.
----------------------------
Installing the CUDA Toolkit:
----------------------------
After having installed the driver we now need to install the CUDA toolkit itself.
1. Run:
sudo sh cudatoolkit_3.0_linux_32_ubuntu9.04.run
2. Press enter to install at the default location.
/usr/local/cuda
3. Register the new library files:
sudo gedit /etc/ld.so.conf.d/cuda.conf &
and add the following to the empty file
/usr/local/cuda/lib
Save the file and close gedit.
Then run:
sudo ldconfig
Create a link to the libcuda.so library:
cd /usr/lib
sudo ln -s nvidia-current/libcuda.so libcuda.so
Also add to the end of your ~/.bashrc file.
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib
restart bash
----------------------------------------------------------
Installing the CUDA SDK and Compiling the Example Programs
----------------------------------------------------------
We will now install the CUDA SDK to our own home directory (we can experiment with the supplied demos):
1. Install SDK to the default location
sh gpucomputingsdk_3.0_linux.run
2. As CUDA does not yet work with GCC 4.4 we will have to install gcc-4.3:
sudo apt-get install gcc-4.3 g++-4.3 g++-4.4
sudo update-alternatives --remove-all gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.3 43 --slave /usr/bin/g++ g++ /usr/bin/g++-4.3 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.3
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 44 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.4
sudo update-alternatives --config gcc ### choose gcc 4.3
3. Install CUDA SDK requirements
sudo apt-get install libglut3-dev libxi-dev libxmu-dev
4. Go to SDK source dir:
cd ~/NVIDIA_GPU_Computing_SDK/C$
5. You should now be able to compile everything by running
make
This should now compile all the examples in the SDK without errors.
---------------------------------------------
Verify Installation
---------------------------------------------
We can now verify that everything is working:
1. Run (from ~/NVIDIA_GPU_Computing_SDK/C):
bin/linux/release/deviceQuery
On my machine I get the following output (depending on your harware, you output may be different. mine is a GeForce 8500 GT):
------------------------------------------------
bin/linux/release/deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
There is 1 device supporting CUDA
Device 0: "GeForce 8500 GT"
CUDA Driver Version: 3.0
CUDA Runtime Version: 3.0
CUDA Capability Major revision number: 1
CUDA Capability Minor revision number: 1
Total amount of global memory: 536150016 bytes
Number of multiprocessors: 2
Number of cores: 16
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 16384 bytes
Total number of registers available per block: 8192
Warp size: 32
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Maximum memory pitch: 2147483647 bytes
Texture alignment: 256 bytes
Clock rate: 1.57 GHz
Concurrent copy and execution: Yes
Run time limit on kernels: Yes
Integrated: No
Support host page-locked memory mapping: No
Compute mode: Default (multiple host threads can use this device simultaneously)
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 134566327, CUDA Runtime Version = 3.0, NumDevs = 1, Device = GeForce 8500 GT
PASSED
Press
-----------------------------------------------------------
-----------------------------------------------------------
That was it. It was a little hard, but it is worth the effort.
Let us only hope that we will not be obligated to write a new one for every release!!!
Thanks a lot...Really nice work.
ReplyDeleteGreat post, thanks a ton. Only thing I needed to change was I needed to run "sudo nvidia-xconfig" after step 3 of "Installing the NVIDIA driver".
ReplyDeleteGood work :) keep it up!
Thanks for your remark. I have added it.
ReplyDeletevery useful post... make sure not to install glu after the nvidia driver or you'll have to reinstall the driver
ReplyDeleteFollowed exactly your guide, but still fails to make. Any ideas?
ReplyDeletemake[1]: Entering directory `/home/delk/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Leaving directory `/home/delk/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Entering directory `/home/delk/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Leaving directory `/home/delk/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Entering directory `/home/delk/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Leaving directory `/home/delk/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Entering directory `/home/delk/NVIDIA_GPU_Computing_SDK/shared'
make[1]: Leaving directory `/home/delk/NVIDIA_GPU_Computing_SDK/shared'
make -C src/transposeNew/
make[1]: Entering directory `/home/delk/NVIDIA_GPU_Computing_SDK/C/src/transposeNew'
make[1]: Leaving directory `/home/delk/NVIDIA_GPU_Computing_SDK/C/src/transposeNew'
make -C src/recursiveGaussian/
make[1]: Entering directory `/home/delk/NVIDIA_GPU_Computing_SDK/C/src/recursiveGaussian'
/usr/bin/ld: cannot find -lGL
collect2: ld returned 1 exit status
make[1]: *** [../../bin/linux/release/recursiveGaussian] Error 1
make[1]: Leaving directory `/home/delk/NVIDIA_GPU_Computing_SDK/C/src/recursiveGaussian'
make: *** [src/recursiveGaussian/Makefile.ph_build] Error 2
Awesome! Couldn't have got it working without this!
ReplyDeletehi
ReplyDeletei install cuda in ubuntu 10.04 by using this address
but i have yet problem installation
kazem@kazem-desktop:~/NVIDIA_GPU_Computing_SDK/C$ sudo makemake[1]: Entering directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Leaving directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Entering directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Leaving directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Entering directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Leaving directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Entering directory `/home/kazem/NVIDIA_GPU_Computing_SDK/shared'
make[1]: Leaving directory `/home/kazem/NVIDIA_GPU_Computing_SDK/shared'
make -C src/nbody/
make[1]: Entering directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/src/nbody'
/usr/bin/ld: cannot find -lGL
collect2: ld returned 1 exit status
make[1]: *** [../../bin/linux/release/nbody] Error 1
make[1]: Leaving directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/src/nbody'
make: *** [src/nbody/Makefile.ph_build] Error 2
other question:after setup driver my resolution is very bad and system can not detect my graphic and i do not have x server in system.
what am i doing?
thanks
As for the "cannot find -lGL" I hope this link to the NVIDIA Forum helps :
ReplyDeletehttp://forums.nvidia.com/index.php?showtopic=183071
There are a number of solutions in it.
cheers.
1. Run (from ~/NVIDIA_GPU_Computing_SDK/C):
ReplyDeletebin/linux/release/deviceQuery
when i type it the error occure:
deviceQuery:commond not found
what am i doing?
thank
hi
ReplyDeleteafter fix previous lGL the error is:
make[1]: Entering directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Leaving directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Entering directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Leaving directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Entering directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Leaving directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/common'
make[1]: Entering directory `/home/kazem/NVIDIA_GPU_Computing_SDK/shared'
make[1]: Leaving directory `/home/kazem/NVIDIA_GPU_Computing_SDK/shared'
make -C src/nbody/
make[1]: Entering directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/src/nbody'
/usr/bin/ld: cannot find -lXmu
collect2: ld returned 1 exit status
make[1]: *** [../../bin/linux/release/nbody] Error 1
make[1]: Leaving directory `/home/kazem/NVIDIA_GPU_Computing_SDK/C/src/nbody'
make: *** [src/nbody/Makefile.ph_build] Error 2
thanks for help
My friend kazem,
ReplyDeleteas i pointed out in a previous reply, you may take a look at this Nvidia forum thread :
http://forums.nvidia.com/index.php?showtopic=183071
I believe you will find the solution to your problem.
Cheers.
my dear friend komarios:
ReplyDeletehi
thanks very much
my problem was solved
thanks
Thank you so much... It works nicely.... =D
ReplyDelete