是的,有一个限制,该限制在文档中描述.
在内核启动之前,printf()的输出缓冲区设置为固定大小(请参阅关联的主机端API).它是循环的,如果在内核执行期间产生的输出多于缓冲区中的输出,则会覆盖旧的输出.
是的,您可以在评论中指出限制,可以在此处的文档中介绍cuda运行时API调用.
以下API函数获取并设置用于将printf()参数和内部元数据传输到主机的缓冲区大小(默认值为1兆字节):
cudaDeviceGetLimit(size_t* size,cudaLimitPrintfFifoSize)
cudaDeviceSetLimit(cudaLimitPrintfFifoSize, size_t size)