从 CUDA 设备写入输出文件

2024-05-07

我是 CUDA 编程的新手,正在将 C 代码重写为并行 CUDA 新代码。

有没有一种方法可以直接从设备写入输出数据文件,而无需将数组从设备复制到主机?我假设如果cuPrintf存在,一定有地方可以写一个cuFprintf?

抱歉,如果答案已经在上一个主题中给出,我似乎找不到它......

Thanks!


简短的回答是,不,没有。

Fermi 和 Kepler 运行时中的 cuPrintf 和内置 printf 支持是使用设备托管副本来实现的。该机制与使用 cudaMemcpy 自己将缓冲区传输到主机没有什么不同。

几乎所有 CUDA 兼容 GPU 都支持所谓的零复制(又名“固定映射”)内存,这允许 GPU 将主机缓冲区映射到其地址空间,并将 DMA 传输执行到映射的主机内存中。但请注意,映射内存的设置和初始化比传统内存分配的开销要高得多(因此您确实需要大量事务来在应用程序的整个生命周期中分摊该开销),并且 CUDA 驱动程序不能使用零- 使用除物理内存支持的地址之外的任何其他地址进行复制。因此,您不能映射文件并对其使用零复制,即。您仍然需要显式的主机端文件 IO 代码才能从零复制缓冲区到磁盘。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 CUDA 设备写入输出文件 的相关文章

随机推荐