用cuda核函数打印多行hello CUDA!
创建C++可使用的cuda程序:
步骤
1)创建1个c++空项目,在解决方案中添加新cuda项目
2)编译printHello.cu
3)c++调用的printHello.cu库
1. 创建项目:

2.编译cuda程序:
printHello.cu程序代码
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <iostream>
__global__ void helloKernel(int numElements)
{
int i = blockDim.x*blockIdx.x + threadIdx.x;
if (i < numElements)
{
printf("%d: Hello, CUDA!\n ", i);
}
}
extern "C" void printHello(int numPrint)
{
int threadsPerBlock = 256;
int blocksPerGrid = (numPrint + threadsPerBlock - 1) / threadsPerBlock;
helloKernel << <threadsPerBlock, blocksPerGrid >> > (numPrint);
cudaDeviceSynchronize();
cudaError_t cudaStatus = cudaGetLastError();
if (cudaStatus != cudaSuccess)
{
fprintf(stderr, "addKernel launch failed: %s\n", cudaGetErrorString(cudaStatus));
}
}
int main()
{
printHello(10);
return 0;
}
运行结果:

3.C++调用cuda库函数:
在printHello.cu中去掉main主函数,只保留helloKernel和printHello函数。
在c++的hello项目源文件添加printHello.cu,main.cpp,如图所示:
main.cpp中一个主函数,一个要调用的cuda函数声明。

直接运行会报无法解析外部符号的bug如下

添加cudart.lib

选中解决方案中的c++项目,【项目】一>【生成自定义】一>【CUDA】

printHello.cu选中CUDA C/C++,

运行结果:

若还存在问题,请按如下更改。
在【工具】一>【选项】一>【文本编辑器】一>【文件扩展名】添加扩展名cu
在【工具】一>【选项】一>【VC++ 项目设置】一>【要包括的扩展名】添加.cu;


作者: LEDyexu
博客: https://blog.csdn.net/LEDyexu
更新ing…

这篇博客详细记录了如何在C++项目中使用CUDA库函数,通过创建cuda程序、编译printHello.cu文件,然后在C++主函数中调用CUDA的helloKernel和printHello函数,实现多行打印'Hello CUDA!'。在过程中,作者遇到了无法解析外部符号的错误,通过添加cudart.lib和修改项目设置成功解决问题。
&spm=1001.2101.3001.5002&articleId=109067749&d=1&t=3&u=b4f07ef55ce74db68ca0918eb25fa732)
654

被折叠的 条评论
为什么被折叠?



