我想写一个来自OpenCL内核的文件..类似于C中的fwrite()..
是否有类似的功能..或者我要从GPU写入文件我需要做什么?
答案 0 :(得分:5)
这是不可能的。这不仅是数百个线程的同步问题,内核在GPU或加速卡等特殊设备上运行。这些卡没有访问磁盘和其他IO。
数据只能从内存中发送和接收,CPU可以执行复杂的IO。
一般情况下:GPU(OpenCL设备)只能从内存中获取数据并在本地执行某些操作。信号到达CPU后OpenCL内核完成后,数据从GPU中获取GPU是一个纯粹的从属设备,无法控制其环境。
答案 1 :(得分:4)
不,它不可用。如何以安全的方式处理1000个线程写入同一文件?这将极大地减慢计算速度。 Printf仅用于调试。
因此,您需要将信息发送给主机,让主机处理正确的文件写入。发送数据的最佳方法取决于您的内核/算法。