详细的 win10+VS+Cuda10 环境配置,图文
阅读原文时间:2021年04月22日阅读:6

为完成CUDA 和OPEN CL的任务, 这两天配置了基于WIN10和VS2012/2015的环境。发觉网上很多配置CUDA的都是老版本, 而且过程过于繁琐,我重新整理并分享之。

我分了3篇记录, 另外两篇分别是:

注:

  • 我同时装了中文版的VS2012和英文版的VS2015, 总体来说两者在配置上一样, 为方便其他朋友理解, 我截图了中文版的VS2012。

总体思路:
新建项目->新建文件 -> 设置cuda包含和库 -> 添加依赖项 ->文件属性编译 设置为cuda c/c++ 。

图文如下:
1. 建立项目:
文件->新建 ->项目
选择: Visual c++ ->空项目 (或者:选择WIN32控制台程序的话,后面的LIB的设置需要选择对应32位的)
2 建立文件:
右击项目(我的命名为: hw2_cuda) -> 添加 ->新建项

文件名称后缀 .c,.cpp, .cu 等 (我命名后缀为cu, 是为了和linux 下运行的cuda文件习惯命名统一)

3. 设置生成属性
点击项目右键, 选择生成自定义,并勾选CUDA10.2

4. 添加 “包含”、“库” 以及 “依赖项”:
(a)右键项目-> 属性 ->VC++目录->包含目录, 库目录
“包含目录”中选择路径:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include
“库目录”中选择路径:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64

(b) 右键项目-> 属性 ->连接器 ->输入 ->附加依赖项
添加:
cublas.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib



5. 选择文件编译类型为cuda
右键文件(如hw2_cuda.cu) -> 属性 -> 配置属性-> 常规 -> 项类型
选择CUDA C/C++

6. 测试
放了这段代码到cu的文件中:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>

int main() {
    int deviceCount;
    cudaGetDeviceCount(&deviceCount);

    int dev;
    for (dev = 0; dev < deviceCount; dev++)
    {
        int driver_version(0), runtime_version(0);
        cudaDeviceProp deviceProp;
        cudaGetDeviceProperties(&deviceProp, dev);
        if (dev == 0)
            if (deviceProp.minor = 9999 && deviceProp.major == 9999)
                printf("\n");
        printf("\nDevice%d:\"%s\"\n", dev, deviceProp.name);
        cudaDriverGetVersion(&driver_version);
        printf("CUDA驱动版本:                                   %d.%d\n", driver_version / 1000, (driver_version % 1000) / 10);
        cudaRuntimeGetVersion(&runtime_version);
        printf("CUDA运行时版本:                                 %d.%d\n", runtime_version / 1000, (runtime_version % 1000) / 10);
        printf("设备计算能力:                                   %d.%d\n", deviceProp.major, deviceProp.minor);
        printf("Total amount of Global Memory:                  %u bytes\n", deviceProp.totalGlobalMem);
        printf("Number of SMs:                                  %d\n", deviceProp.multiProcessorCount);
        printf("Total amount of Constant Memory:                %u bytes\n", deviceProp.totalConstMem);
        printf("Total amount of Shared Memory per block:        %u bytes\n", deviceProp.sharedMemPerBlock);
        printf("Total number of registers available per block:  %d\n", deviceProp.regsPerBlock);
        printf("Warp size:                                      %d\n", deviceProp.warpSize);
        printf("Maximum number of threads per SM:               %d\n", deviceProp.maxThreadsPerMultiProcessor);
        printf("Maximum number of threads per block:            %d\n", deviceProp.maxThreadsPerBlock);
        printf("Maximum size of each dimension of a block:      %d x %d x %d\n", deviceProp.maxThreadsDim[0],
            deviceProp.maxThreadsDim[1],
            deviceProp.maxThreadsDim[2]);
        printf("Maximum size of each dimension of a grid:       %d x %d x %d\n", deviceProp.maxGridSize[0], deviceProp.maxGridSize[1], deviceProp.maxGridSize[2]);
        printf("Maximum memory pitch:                           %u bytes\n", deviceProp.memPitch);
        printf("Texture alignmemt:                              %u bytes\n", deviceProp.texturePitchAlignment);
        printf("Clock rate:                                     %.2f GHz\n", deviceProp.clockRate * 1e-6f);
        printf("Memory Clock rate:                              %.0f MHz\n", deviceProp.memoryClockRate * 1e-3f);
        printf("Memory Bus Width:                               %d-bit\n", deviceProp.memoryBusWidth);
    }

    return 0;
}

7. 生成并运行的结果:

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器