vs2017 应输入表达式 cuda_vs2017+cuda10.0配置

最近需要写cuda程序,于是下载了cuda10.0准备在vs2017里写并行程序,但是配置过程中遇到了大大小小奇奇怪怪的问题,终于在我坚持不懈的努力下成功了。

  1. 首先下载好vs2017和cuda10.0,安装方法挺无脑的······
  2. 在vs2017里建立一个visual c++的空项目,然后在源文件添加一个NVIDIA C/C++ FILE,命名为***.cu。
  3. 右键项目名,生成依赖项,生成自定义,在cuda10.0那个位置打钩。
  4. 右键源文件名,属性,配置属性,常规,类类型改成CUDA C/C++
  5. 点击同一个界面的配置管理器,把平台从win32改成x64。
  6. 右键项目名,属性,配置属性,链接器,输入,在附加依赖项里加上cudart_static.lib(有可能还要加别的,但是我加了这一个就好了。
  7. 写一个测试代码。
#include<stdio.h>
#include<cuda_runtime.h>
__global__ void kernal()
{
	printf("hello from GPUn");
}
int main()
{
	printf("hello from CPUn");
	kernal << <1, 1 >> > ();
	return 0;
}

然后就成功了。

ps:不知道为什么,如果编译运行成功一次之后再调试的时候不会重新编译而是直接运行之前的程序,很烦…… 要按Ctrl+F7才能重新编译,不明白

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CMAKE_CUDA_ARCHITECTURES可以通过指定一个由逗号分隔的编译器支持的架构列表来设置。例如,要指定支持的架构,可以使用以下表达式:-DCMAKE_CUDA_ARCHITECTURES:=“5.5;5.3;3.5;2.1” ### 回答2: CMAKE_CUDA_ARCHITECTURES是一个CMake的变量,用于指定要为CUDA编译器生成代码的GPU架构。设置CMAKE_CUDA_ARCHITECTURES可以确保生成的CUDA代码能够在目标GPU上运行,并利用其硬件特性。 CMAKE_CUDA_ARCHITECTURES变量的值该是一个由GPU架构名称组成的列表。例如,可以使用"sm_30"来表示Compute Capability为3.0的GPU架构。 要设置CMAKE_CUDA_ARCHITECTURES,可以在CMakeLists.txt文件中添加以下一行代码: set(CMAKE_CUDA_ARCHITECTURES "sm_30") 在这个例子中,将生成适用于Compute Capability为3.0的GPU的CUDA代码。 如果要为多个GPU架构生成代码,可以将它们作为列表元素一一添加: set(CMAKE_CUDA_ARCHITECTURES "sm_30;sm_35;sm_50;sm_60") 在这个例子中,将生成适用于Compute Capability为3.0、3.5、5.0和6.0的GPU的CUDA代码。 需要注意的是,GPU架构的选择该根据目标GPU的实际情况进行权衡。选择较新的架构可能会使用更多的硬件特性,但也可能导致对旧GPU的兼容性降低。 总之,通过设置CMAKE_CUDA_ARCHITECTURES变量,可以指定要为CUDA编译器生成代码的目标GPU架构,以便生成适用于目标硬件的代码。 ### 回答3: CMAKE_CUDA_ARCHITECTURES是CMake中一个用于设置CUDA架构的变量。CUDA架构是指用于在NVIDIA的GPU上运行CUDA代码的架构版本。 CMake是一个跨平台的项目构建工具,它允许我们使用统一的语法来配置和生成各种不同平台和编译器的项目。当我们构建一个CUDA项目时,我们需要设置CMAKE_CUDA_ARCHITECTURES变量来指定在哪些CUDA架构下编译代码。 该变量的设置可以通过多种方式来完成。一种常见的方式是在CMakeLists.txt文件中使用set命令来设置该变量。例如,可以通过以下方式设置为Compute Capability 3.0和5.0: ```cmake set(CMAKE_CUDA_ARCHITECTURES 30 50) ``` 另一种方式是使用cmake命令行工具来设置该变量。例如,可以使用以下命令来设置为Compute Capability 6.0和7.0: ``` cmake -DCMAKE_CUDA_ARCHITECTURES="60;70" .. ``` 设置CMAKE_CUDA_ARCHITECTURES变量可以让CMake根据所设置的架构版本生成相的编译指令,以保证生成的可执行文件在指定的CUDA架构上能够正确运行。需要注意的是,如果不设置该变量,默认情况下CMake会将所有检测到的CUDA架构都包含在内。 总结一下,通过设置CMAKE_CUDA_ARCHITECTURES变量,我们可以指定在哪些CUDA架构下编译代码,以确保生成的可执行文件在所指定的架构上能够正确运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值