较新版本的 CMake(3.18 及更高版本)“了解”CUDA 代码编译目标的 CUDA 架构的选择。目标有一个CUDA_ARCHITECTURES属性,设置后会-gencode arch=whatever,code=whatever为您生成适当的编译选项。如果您不设置此值,您甚至会收到警告:
CMake Error in CMakeLists.txt:
CUDA_ARCHITECTURES is empty for target "my_cuda_app".
Run Code Online (Sandbox Code Playgroud)
默认情况下,该目标属性被初始化为CMAKE_CUDA_ARCHITECTURES。但CMAKE_CUDA_ARCHITECTURES它本身没有初始化为任何东西(!)
我们如何让 CMake 自动检测CUDA_ARCHITECTURES全局 或 的适当值CMAKD_CUDA_ARCHITECTURES?也就是说,使用系统上安装的 GPU 的架构?
假设我的系统安装了单个GPU,并且还安装了最新版本的CUDA。
我想确定我的GPU的计算能力是什么。如果我可以编译代码,那将很容易:
#include <stdio.h>
int main() {
cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0);
printf("%d", prop.major * 10 + prop.minor);
}
Run Code Online (Sandbox Code Playgroud)
但是-假设我想不编译就这样做。我可以吗?我认为nvidia-smi可能会有所帮助,因为它可以让您查询有关设备的各种信息,但似乎并不能让您获得计算能力。也许我还能做些什么?也许通过/proc或系统日志可见的东西?
编辑:这旨在在构建之前在我无法控制的系统上运行。因此,它必须具有最小的依赖性,可以在命令行上运行并且不需要root特权。
我有一台具有1.1计算能力的CUDA GPU的机器.我想重新安装CUDA,我想我会用5.0;
有没有CUDA功能和CUDA版本之间的兼容性?使用带有CC 1.1的CUDA 5.0会有麻烦吗?GPU?
谢谢!
这些是我的假设:
假设计算能力为 7.5,我的问题如下:
我已经安装了 CUDA 7.5 和 cuDNN 5.0 的 tensorflow。我的显卡是 NVIDIA Geforce 820M,功能为 2.1。但是,我收到此错误。
Ignoring visible gpu device (device: 0, name: GeForce 820M, pci bus id: 0000:08:00.0) with Cuda compute capability 2.1. The minimum required Cuda capability is 3.0.
Device mapping: no known devices.
Run Code Online (Sandbox Code Playgroud)
有没有办法在 2.1 功能上运行 GPU?我在网上搜了一下,发现是cuDNN需要这个能力,那么安装较早版本的cuDNN是否可以让我使用GPU?