Я работал довольно много, но я не уверен, ли все в порядке.
nvidia-smi
Sun May 21 11:29:57 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.39 Driver Version: 375.39 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GT 730 Off | 0000:01:00.0 N/A | N/A |
| 40% 39C P8 N/A / N/A | 295MiB / 1984MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
Затем
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17
И наконец
which nvcc
/usr/bin/nvcc
Но мой каталог установки
ldconfig -p | grep cuda
libnvrtc.so.8.0 (libc6,x86-64) => /usr/local/cuda-8.0/targets/x86_64-linux/lib/libnvrtc.so.8.0
libnvrtc.so (libc6,x86-64) => /usr/local/cuda-8.0/targets/x86_64-linux/lib/libnvrtc.so
libnvrtc-builtins.so.8.0 (libc6,x86-64) => /usr/local/cuda-8.0/targets/x86_64-linux/lib/libnvrtc-builtins.so.8.0
libnvrtc-builtins.so (libc6,x86-64) => /usr/local/cuda-8.0/targets/x86_64-linux/lib/libnvrtc-builtins.so
Это в порядке? Почему nvcc указывает на другой каталог?
это в порядке?
Да, все как ожидалось.
, Почему nvcc указывает на другой каталог?
nvcc
жизни на типичной папке для исполняемых файлов, тогда как другие - "драйверы" CUDA. Это - главным образом решение Nvidia, но это имеет смысл.
Скомпилируйте и запустите CUDA hello world
Лучший ответ на вопрос «правильно ли что-то установлено?», Как правило, звучит так: «Попробуйте использовать это для того, что вы хотите использовать, и посмотрите, взорвется ли он, и если это так быстро, как и следовало ожидать ».
Если часть "взрывается" не работает, вы можете попробовать заставить работать hello world:
main.cu
#include <cassert>
#define N 3
__global__ void inc(int *a) {
int i = blockIdx.x;
if (i<N) {
a[i]++;
}
}
int main() {
int ha[N], *da;
cudaMalloc((void **)&da, N*sizeof(int));
for (int i = 0; i<N; ++i) {
ha[i] = i;
}
cudaMemcpy(da, ha, N*sizeof(int), cudaMemcpyHostToDevice);
inc<<<N, 1>>>(da);
cudaMemcpy(ha, da, N*sizeof(int), cudaMemcpyDeviceToHost);
for (int i = 0; i < N; ++i) {
assert(ha[i] == i + 1);
}
cudaFree(da);
return 0;
}
и скомпилировать и запустить с:
nvcc -o main.out main.cu
./main.out
и утверждение не терпит неудачу при моей правильно работающей настройке.
Затем, если это не удается, переходите к вопросам установки:
Выполнить некоторые тесты производительности CPU и GPU
Более интересной проверкой производительности было бы взять хорошо оптимизированную программу, которая выполняет один GPU-ускоряемый алгоритм либо CPU, либо GPU, и запустить оба, чтобы увидеть, работает ли версия GPU быстрее.
TODO предлагает и тестирует один здесь, например умножение матриц с помощью MAGMA (GPU) и LAPACKE (CPU). Они могут предоставлять один и тот же C API, чтобы можно было легко сравнивать результаты.
Затем вы также можете открыть nvidia-settings
, пока это работает, чтобы увидеть, действительно ли GPU используется только в версии GPU: Как проверить, использует ли Ubuntu мою видеокарту NVIDIA ?