CUDA安装教程及调试:本机
win10+vs2013+NVIDIAGeForceGTX1050Ti
写这篇⽂章主要是针对CUDA调试经验分享,⽹上可供参考的资料太少了,最后靠⾃学CUDA官⽹help⽂档成功进⼊global函数断点,感兴趣的继续看下去吧!
本⼈的电脑配置:本机win10+vs2013+NVIDIA GeForce GTX 1050Ti
1、CUDA加速环境配置,主要包括4项:
1)电脑配有NVIDA显卡
2)安装NVIDA驱动
3)安装VS开发环境(⼀个C语⾔编译器)
4)CUDA开发包
简单的说,想要⽤CUDA加速电脑需要有⽀持CUDA加速的图形处理器;并且安装NVIDA驱动,版本可能受限于GPU显卡的型号,后⾯我想CUDA调试的时候发现显卡决定了的cuda调试器版本,也决定了cu
da版本,具体关系请慢慢看下去。
2、分享⼀下资料
3、CUDA⽰例
求⼀张图像的均值。
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <cuda.h>
#include <device_functions.h>
#include <iostream>
using namespace std;
const int THREADS = 1024;
/
/typedef int DT;
typedef unsigned short DT;
__global__ void matSum(DT *dataIn, double *dataOutAverage, int nPixels)
{
__shared__ double sharedSum[THREADS];  //
int threadIndex = threadIdx.x;
int nPixelsPerThread = nPixels / blockDim.x;
double nSum = 0;
for (int i = threadIndex * nPixelsPerThread; i < (threadIndex + 1) * nPixelsPerThread && i < nPixels; ++i)
{
nSum += dataIn[i];
}
sharedSum[threadIndex] = nSum;
__syncthreads();
if (0 == threadIndex)
{
double fSum = 0;
double fSum = 0;
for (int i = 0; i < THREADS; ++i)
{
fSum += sharedSum[i];
}
*dataOutAverage = fSum / nPixels;
}
}
int main()
{
FILE *fpsrc = NULL;
int Width = 3072;
int Height = 3072;
//fopen read image
DT *image = new DT[Width * Height];
//if ((fpsrc = fopen("E:\\SmileDoc\\MATLAB\\GL\\test.raw", "rb")) == NULL)
if ((fpsrc = fopen("D:\\VG2020-SHARE\\imagecases\\103\\total-3072x3072-chest-ap-NoGrid85KV1.6mAs.raw", "rb")) == NULL)
{
printf("Can not open the raw image.");
system("pause");
return 0;
}
fread(image, sizeof(DT), Width* Height, fpsrc);
怎么看电脑显卡配置fclose(fpsrc);
double average = 0;
DT *d_src = NULL;
double *d_average = NULL;
cudaMalloc((DT**)&d_src, Width*Height*sizeof(DT));
cudaMalloc((double**)&d_average, sizeof(double));
cudaMemcpy(d_src, image, Width*Height*sizeof(DT), cudaMemcpyHostToDevice);
matSum << <1, THREADS >> >(d_src, d_average, Width * Height);
cudaMemcpy(&average, d_average, sizeof(double), cudaMemcpyDeviceToHost);
cudaFree(d_src);
cudaFree(d_average);
cout << endl << "The average is :" << average << endl;
return 0;
}
4、CUDA调试
关于CUDA调试经验,我上⽹搜了很多资料,可供参考的太少了,下⾯是关于我⾃⼰的经验分享。
⾸先,你要查⼀下⾃⼰电脑的显卡型号,它所⽀持的调试器版本,⽐如我的显卡是NVIDIA GeForce GTX 1050Ti ,⽀持CUDA调试器Nsight Visual Studio Edition 5.5 或者5.6版本,保险起见选择了5.5版本;
这个Nsight Visual Studio Edition调试器 没有办法单独下载,你下载的CUDA Toolkit在安装时会⾃动绑定⼀个CUDA调试器版本,由于没有经验,我先安装了CUDA10.0版本,后⾯调试怎么都不能进到global函数断点中,vs界⾯上有Nsight菜单,最底下有个help,在help⽂档中到了版本⽀持的相关信息,提⽰我的显卡型号⽀持Nsight 5.5/5.6,单独下载Nsight5.5下载不了,只能卸载CUDA包重新安装CUDA9.1版本,这个信息是在调试器5.5版那个下载页⾯有说明;特别注意:重新安装CUDA9.1⾃动会安装Nsight5.5,然后重新配置PATH环境,VS⾥⾯配置include/lib等,新建个⼯程后,成功进⼊global函数断点:
我说的⽐较粗犷,如果想知道详细流程欢迎加我讨论,号:zm5547;废话不多索了,⼯作⼯作,哈哈哈哈哈