2017-04-03 114 views
2

在CUDA内核中使用printf打印到标准输出的行数是否有限制?如果是的话,有没有办法改变它?CUDA printf的限制

+0

For 10 MB:cudaDeviceSetLimit(cudaLimitPrintfFifoSize,1024000 * 10);?它应该是明确值的10倍以上...... – user3907668

回答

4

是的,有一个限制,该限制在documentation中描述。

在内核启动之前,printf()的输出缓冲区设置为固定大小(请参阅关联的主机端API)。它是循环的,如果在内核执行过程中产生的输出比在缓冲区中更多,那么旧的输出将被覆盖。

是的,在您的评论中指出,cuda运行时API调用在文档here中已涵盖,可以更改此限制。

以下API函数获取和设置用于将printf()的参数和内部元数据传送到主机的缓冲区的大小(默认为1兆字节):

cudaDeviceGetLimit(size_t* size,cudaLimitPrintfFifoSize) cudaDeviceSetLimit(cudaLimitPrintfFifoSize, size_t size)