我正在尝试理解CUDA中的进程间通信。我希望能够理解这个概念并尝试将其应用于我正在进行的项目中。
我有一个图像采集系统,可以提供N个输入图像。首先处理每个原始输入图像,然后将其存储在名为“Result”的单个变量中。有四个函数可以处理图像,Aprocess,Bprocess,Cprocess和Dprocess。每次系统获取新图像时,都会调用上述四个函数进行处理。最终图像“结果”存储在Dprocess中。
我想做的是: 创建一个新进程'process2',我可以在每次获取图像时将“最终”图像存储在“结果”中,并将其放入名为“图像”的缓冲区中。我想为10张图片做这个。 'process2'应该等待新图像传递给它并且不会终止,因为第一个进程必须继续调用这四个函数并获得最终处理过的图像。
到目前为止我遇到的情况: cudaIpcGetMemHandle,cudaIpcOpenMemHandle和cudaIpcCloseMemHandle
问题:如何使用上述功能名称来实现IPC?
答案 0 :(得分:1)
问题:如何使用上述功能名称来实现IPC?
CUDA simpleIPC示例代码演示了这一点。
还简要提到了如何在programming guide中使用CUDA IPC API。
最后,API本身记录在运行时API reference manual
中请注意,此功能需要cc 2.0或更高版本以及64位Linux操作系统。