Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/151.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
通过OpenCL(GPU)处理文件和流_Opencl_Gpu - Fatal编程技术网

通过OpenCL(GPU)处理文件和流

通过OpenCL(GPU)处理文件和流,opencl,gpu,Opencl,Gpu,我想从OpenCL内核中写入一个文件。。类似于C中的fwrite() 有那样的功能吗。。或者我必须做什么才能从GPU写入文件?不,它不可用。如何以安全的方式处理向同一文件写入的1000个线程?这将大大降低计算速度。Printf仅用于调试 因此,您需要将信息发送到主机,并让主机处理对文件的正确写入。返回数据的最佳方法取决于内核/算法。这是不可能的。这不仅仅是数百个线程的同步问题,内核运行在特殊设备上,如GPU或加速器卡。这些卡没有访问磁盘和其他IO 数据只能从内存发送和接收,CPU可以完成复杂的I

我想从OpenCL内核中写入一个文件。。类似于C中的fwrite()


有那样的功能吗。。或者我必须做什么才能从GPU写入文件?

不,它不可用。如何以安全的方式处理向同一文件写入的1000个线程?这将大大降低计算速度。Printf仅用于调试


因此,您需要将信息发送到主机,并让主机处理对文件的正确写入。返回数据的最佳方法取决于内核/算法。

这是不可能的。这不仅仅是数百个线程的同步问题,内核运行在特殊设备上,如GPU或加速器卡。这些卡没有访问磁盘和其他IO

数据只能从内存发送和接收,CPU可以完成复杂的IO


一般来说:GPU(OpenCL设备)只能从内存中获取数据并在本地对其进行处理。当OpenCL内核完成的信号到达CPU后,从GPU获取数据GPU是一个纯从设备,对其环境没有任何控制。

我考虑了1000个线程的问题。。我的意思是,每个线程都在单独的文件中写入。。有可能吗?我相信你的回答,但我有一个问题。如果GPU处理器想要写一个图像或三维模型,他应该怎么做?GPU不能这么做。内核完成计算并将结果存储在全局内存中。主机CPU读取内存并将所有内容写入磁盘或需要放置的任何位置。好的,这可以通过带有CPU的并行处理器来完成。。换句话说,使用CPU的OpenCL可以处理文件吗?不,OpenCL规范不支持这一点,OpenCL代码由一个特殊的OpenCL编译器编译。请阅读此问题:)在并行处理中,如何使用mathematica使每个处理器执行一个程序块