piątek, 6 listopada 2009

CUDA 2.3 na Ubuntu 9.10 cz. 2

Teraz należałoby sprawdzić czy wszystko jest poprawnie zainstalowane kompilując przykładowe projekty.
Skracając cały proces pokonywania błędów jakie wystąpiły w czasie tego polecenia:
1) CUDA nie działa z kompilatorami w wersji 4.4. Niestety odinstalowanie gcc-4.4 nie wchodziło w grę, gdyż musiałbym również odinstalować świeżo zainstalowane sterowniki. Zainstalowałem więc gcc i g++ w wersji 4.3.
sudo apt-get install gcc-4.3 g++-4.3
Potem próbowałem zmienić makefile, aby zamiast
CXX := g++
CC := gcc
LINK := g++ -fPIC
mieć
CXX := g++-4.3
CC := gcc-4.3
LINK := g++-4.3 -fPIC
Niestety to nic nie dało. Jeden z użytkowników z forum NVIDIA doszedł do wniosku, że zmienne te nadpisywane są w którymś z innych makefile'ów. Cofnąłem zmiany i zamiast tego zmieniłem dowiązanie /usr/bin/gcc z gcc-4.4 na gcc-4.3.
sudo rm /usr/bin/gcc
sudo ln -s -v gcc-4.3 /usr/bin/gcc
Analogiczną operację przeprowadziłem też dla g++. Sprawdziłem czy pod linkiem gcc jest kompilator o właściwej wersji:
gcc --version
gcc (Ubuntu 4.3.4-5ubuntu1) 4.3.4
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2) Potrzebne też będą paczki libxmu-dev libxi-dev freeglut3 freeglut3-dev.

3) Teraz można już budować projekty.
cd ~/Projects/NVIDIA_GPU_Computing_SDK/C
make

Jeśli wszystko dobrze zapamiętałem to nie powinno być żadnych błędów kompilacji i będzie można uruchomić podstawowe programy testujące na obecność urządzenia cuda capable.
daniel@daniel-laptop:~/Projects/NVIDIA_GPU_Computing_SDK/C/bin/linux/release$ ./deviceQuery
CUDA Device Query (Runtime API) version (CUDART static linking)
There is 1 device supporting CUDA

Device 0: "GeForce 8400M GS"
CUDA Driver Version: 2.30
CUDA Runtime Version: 2.30
CUDA Capability Major revision number: 1
CUDA Capability Minor revision number: 1
Total amount of global memory: 267714560 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: 262144 bytes
Texture alignment: 256 bytes
Clock rate: 0.80 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)

Test PASSED
oraz
Running on......
device 0:GeForce 8400M GS
Quick Mode
Host to Device Bandwidth for Pageable memory
.
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 1473.1

Quick Mode
Device to Host Bandwidth for Pageable memory
.
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 898.1

Quick Mode
Device to Device Bandwidth
.
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 4197.4

&&&& Test PASSED