我工作了很多,但我不确定一切是否正常。
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 |
+-----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
然后
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
Run Code Online (Sandbox Code Playgroud)
最后
which nvcc
/usr/bin/nvcc
Run Code Online (Sandbox Code Playgroud)
但是我的安装目录是
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
Run Code Online (Sandbox Code Playgroud)
这可以吗?为什么 nvcc 指向其他目录?
小智 20
这个可以吗?
是的,一切都在预料之中。
为什么 nvcc 指向其他目录?
nvcc位于可执行文件的典型文件夹中,而其他文件夹是 CUDA“驱动程序”。这主要是英伟达的决定,但它是有道理的。
编译并运行一个 CUDA hello world
对“安装正确”问题的最佳答案往往是:“尝试将其用于任何您想要使用的用途,看看是否会爆炸以及它是否与您预期的一样快”。
如果“爆炸”部分失败,那么您可能想要尝试使 hello world 工作:
主文件
#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;
}
Run Code Online (Sandbox Code Playgroud)
并编译并运行:
nvcc -o main.out main.cu
./main.out
Run Code Online (Sandbox Code Playgroud)
并且断言不会在我正常工作的设置中失败。
然后,如果失败,请查看如何安装问题:
运行一些 CPU 与 GPU 基准测试
一个更有趣的性能检查是采用一个优化良好的程序,该程序执行CPU 或 GPU的单个GPU 可加速算法,并同时运行两者以查看 GPU 版本是否更快。
TODO 在这里提出并测试一个,例如矩阵乘法与MAGMA (GPU)和 LAPACKE (CPU)。它们可能公开相同的 C API,因此可以很容易地比较结果。
然后,您还可以nvidia-settings在运行时打开以查看 GPU 是否实际上仅在 GPU 版本中使用:如何检查 Ubuntu 是否正在使用我的 NVIDIA 显卡?
| 归档时间: |
|
| 查看次数: |
138309 次 |
| 最近记录: |