2016-02-17 36 views
0

我想使用第二个GPU设备作为Linux下的专用设备,以便对内核进行基准测试。如何设置专用GPU来测试CUDA内核?

我正在测试的内核是一个SIMD计算内核,没有减少,X-Server没有连接到GPU,设备是GeForge GTX-480,所以我想计算能力是2.因此,高级功能作为动态的并行性和其他,被禁用。使用

的NVIDIA-SMI效用有各种模式来设置GPU

"Default" means multiple contexts are allowed per device. 
"Exclusive Process" means only one context is allowed per device, usable from multiple threads at a time. 
"Prohibited" means no contexts are allowed per device (no compute apps). 

哪个是设置的最佳模式的GPU,以便获得一个基准尽可能忠实?

是什么,我应该为了使永久这种设置中使用的命令?

我编译使用下列标志的内核:

nvcc --ptxas-options=-v -O3 -w -arch=sm_20 -use_fast_math -c -o 

存在标志的更好的结合,以便从编译器获得更多的帮助,以获得更快的执行时间?

任何建议将不胜感激。

+0

我不完全清楚你希望解决什么问题,但是你可能想要探索'CUDA_VISIBLE_DEVICES'的用处,正如在[博客文章](https://devblogs.nvidia.com/parallelforall)中解释的那样/ cuda-pro-tip-control-gpu-visibility-cuda_visible_devices /) – njuffa

+0

我设法使用HANDLE_ERROR(cudaSetDevice(1))来选择目标GPU; – user3116936

+0

我设法使用HANDLE_ERROR(cudaSetDevice(1))选择目标GPU。我认为这是一个程序化的等同于导出变量CUDA_VISIBLE_DEVICES。我的问题是关于什么更多拨款?将GPU设置为计算独占模式还是不行。 – user3116936

回答

1

我的问题是有关什么是更占有?将GPU设置为计算独占模式还是不行。

只要有一个进程尝试使用该GPU,将GPU设置为独占进程还是缺省设置应该没有关系。

你一般不会想用独特的线程,除了在特定情况下,因为排他性线程可以防止多线程应用GPU的正常运行,也可以与其他功能,如探查功能干扰。

我应该使用什么命令来进行永久性的设置?

如果你指的是NVIDIA-SMI命令行帮助(nvidia-smi --help)或NVIDIA-SMI手册页(man nvidia-smi),你能够确定命令作出改变。您所做的任何更改都将永久存在,直到他们再次被明确更改。