为完成CUDA 和OPEN CL的任务, 这两天配置了基于WIN10和VS2012/2015的环境。发觉网上很多配置CUDA的都是老版本, 而且过程过于繁琐,我重新整理并分享之。
我分了3篇记录, 另外两篇分别是:
注:
总体思路:
新建项目->新建文件 -> 设置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. 生成并运行的结果:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章