Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何获得CUDA';s printf打印到任意流?_C++_Cuda_Printf_Iostream_Io Redirection - Fatal编程技术网

C++ 如何获得CUDA';s printf打印到任意流?

C++ 如何获得CUDA';s printf打印到任意流?,c++,cuda,printf,iostream,io-redirection,C++,Cuda,Printf,Iostream,Io Redirection,内核中的CUDA的printf()将打印到我的进程的标准输出流中。现在,我想,至少,从这里开始,将这个打印输出重定向到任意的输出流。我的意思是一个任意流,这不仅仅是一个文件描述符(如请求的那样)——我希望能够使用stringstreams、日志基础设施等 如果可能的话,我希望能够做一些事情,比如告诉单个内核将其printf()输出发送到某个输出流。这可能吗 注意:这两个善良的灵魂把这个问题标记为他们最喜欢的问题-你怎么会喜欢我的问题,使之成为最喜欢的问题,但又不足以支持它呢? 据我所知,这是不可

内核中的CUDA的
printf()
将打印到我的进程的标准输出流中。现在,我想,至少,从这里开始,将这个打印输出重定向到任意的输出流。我的意思是一个任意流,这不仅仅是一个文件描述符(如请求的那样)——我希望能够使用stringstreams、日志基础设施等

如果可能的话,我希望能够做一些事情,比如告诉单个内核将其
printf()
输出发送到某个输出流。这可能吗


注意:这两个善良的灵魂把这个问题标记为他们最喜欢的问题-你怎么会喜欢我的问题,使之成为最喜欢的问题,但又不足以支持它呢?<困惑不解。>

据我所知,这是不可能的。CUDA API不提供对输出将发送到的IO流的任何控制


如果您想要比运行时提供的工具更复杂的东西,那么您最好的解决方案是使用自己的工具。在CUDA中添加内核内printf的运行时支持之前,NVIDIA(至少向开发人员)提供了一个名为cuprintf的实用程序,它允许内核向主机控制台发出输出。我的建议是抓取cuprintf的代码,然后开始做您想要做的事情。

问题是,CUDA运行时是直接写入文件描述符2(内核调用),还是使用库?如果是后一种情况,那么我们可以连接到这些调用中也不是不可想象的。考虑到这一切都是在用户空间中发生的,我想它只是使用了C标准库。虽然我们有一个关于提高投票率的投诉,但偶尔接受并回答一下并不会伤害到你。如果你接受答案,它会使他们从未回答的列表中消失,并使他们在搜索时更加可见,这对下一个寻求帮助的人是有益的。+1是我对可见性的贡献@艾因波克拉姆:我认为将一个问题标记为“最受欢迎”和向上投票是有区别的。向上投票是对社区的一种暗示:这个问题对下一代人很有用。标记为喜爱是对自己的一种暗示,它可能意味着很多事情:“这是一个标记为未回答的问题,我将稍后尝试回答”,或者“这是一个回答尚未被接受的问题,我将稍后尝试作出贡献”或者其他“这是这个家伙不接受的另一个答案,我将避免浪费时间试图回答它”。@Talonmes:你说“据我所知”,这意味着其他知识可能会有不同的说法。现在几天过去了,所以我接受。@Jackolanten:SX是一个残酷的地方。