将结果写入CUDA / Optix中的文本文件

时间:2012-07-10 07:49:19

标签: cuda optix

我想知道是否可以编写在我的程序Cuda / Optix中计算的变量的文本文件。这些变量在我的.cu文件中,因此无法由CPU写入。

5 个答案:

答案 0 :(得分:4)

据我所知,无法从CUDA内核执行文件I / O.您需要使用cudaMemcpy并将数据复制回主机内存,然后您可以将值写入文件。

答案 1 :(得分:0)

我没有使用Optix的经验,但就我所知,没有办法从CUDA写入文件。您应该将值下载到主机,以便将它们存储到文件中。

您可以使用cudaMemcpy( dstPointer, srdPointer, size, cudaMemcpyDeviceToHost);将数据从设备(GPU)复制到主机(CPU)。请参阅:NVIDIA CUDA Library: cudaMemcpy 请注意,您的dstPointer必须是存储数据的最大值!

答案 2 :(得分:0)

如前面的答案所示,通过CUDA内核将数据写入文件是不可能的。如果你的代码涉及多个循环,你可能会想到你的程序在每个循环上传输和写入数据的速度有多慢;如果是这样,您应该在给定数量的循环后进行数据传输。换句话说,将文件写入多个循环的块中,而不是每个循环。

答案 3 :(得分:0)

在optix中,您可以使用缓冲区将所有数据传输回主机,一旦将其下载回主机内存,您就可以轻松地以csv或txt格式转换数据

答案 4 :(得分:0)

我不知道一种打开文件描述符并直接从设备写入文件的方法;但是,我已经在OptiX中使用rtPrintf 1将程序的输出重定向到文件rtPrintf将允许您打印变量等的内容,如果在打印内容前加上关键字,则可以grep轻松地输入特定项目。这种策略是调试早期OptiX代码甚至在某种程度上跟踪其行为的好方法。