(给CPP开发者加星标,提升C/C++技能)
来源:小小一步
导读:CUDA是用于GPU编程的框架,在深度学习高速发展的今天,应用十分普遍。然而虽然CUDA对C语言有很好的支持,但是在C++的类函数中使用CUDA 核函数会遇到很多问题。文章介绍了如何通过封装的方式在C++类中调用CUDA的核函数,结合具体的实例。推荐给对CUDA编程感兴趣的程序员。
————【以下是正文】————
正如CUDA C所称,CUDA对C语言进行了很好的扩展,直接使用C语言可以非常简单方便的调用CUDA核函数。但是当想使用C++的类成员函数直接调用核函数是不可行的,第一,核函数不能作为类的成员函数,第二,C++的cpp文件和CUDA的cu文件分别经由g++和nvcc编译,当两种代码混合就会编译出错。
因而C++的类和CUDA结合使用需要进行一层封装,借用两个数组相加的例子说明,主要过程如下:
本项目包括4文件,如上图所示,分别为:add.h、add.cpp、kernel.cuh、kernel.cu。