CUDA (c++) 学习笔记_1.0.5|每日精选

来源:哔哩哔哩 发布时间:2023-01-27 21:06:22

CUDA 库

CUDA 库和 CPU 库都是一系列接口的集合,主要好处是仅在 host 端编写代码并调用相应API,达到节约开发时间的目的。这些库是我们完全可以信任的,非必要情况我们不需要深究其内部逻辑内容,因为写这些库的人都是 CUDA 方面的顶尖专家。

对于一个库的使用,通常包括以下几个主要步骤:


(资料图)

1、创建一个与库对应的句柄来管理上下文信息

CUDA库中句柄 (handle) 包含了该库的一些上下文信息,比如数据格式、device的使用等,可以认为是一个存放在 host 端对程序员透明的对象,我们可以通过改变句柄的参数达到在 host 端管理 device 运行。

2、为所需的输入输出参数分配 device 端存储空间

3、填充 device Memory 数据

将 host 端数据传到 device 端,部分库有自己的API来实现这个功能,而不是直接调用cudaMemcpy,但也有部分库内部依然调用 cudaMemcpy 等一般拷贝函数实现传输。

4、配置并调用库函数来让GPU工作

5、取回 device Memory 中的结果。

6、使用结束后及时释放CUDA资源。

例如:device Memory、handle 和 stream 等。

虽然 CUDA 形成较晚,目前主要结合 C、C++、Python 等主流语言,在进行 CUDA 学习时,我们应该多去搜索某些功能是否具有现成的库可以用 (学习其它语言也是如此)。目前,CUDA 的库在不断扩充,许多 C 和 C++ 的函数库都有对应的 CUDA 库。例如:当某个变量只在 device 端使用时,可以直接定义 device 端变量并进行计算,减少数据传输过程。在简单了解 CUDA 库,后续我们将一起学习常用的 CUDA 函数库及其使用 (例如:学习笔记 2.0.3 中的快速傅里叶变换)。

标签: DEVICE STREAM 学习笔记 python A_PI 可以通过 一起学习

Copyright ©  2015-2022 饰品头条网版权所有  备案号:沪ICP备2022005074号-20   联系邮箱:58 55 97 3@qq.com