通过OpenCL(GPU)处理文件和流
我想从OpenCL内核中写入一个文件。。类似于C中的fwrite()通过OpenCL(GPU)处理文件和流,opencl,gpu,Opencl,Gpu,我想从OpenCL内核中写入一个文件。。类似于C中的fwrite() 有那样的功能吗。。或者我必须做什么才能从GPU写入文件?不,它不可用。如何以安全的方式处理向同一文件写入的1000个线程?这将大大降低计算速度。Printf仅用于调试 因此,您需要将信息发送到主机,并让主机处理对文件的正确写入。返回数据的最佳方法取决于内核/算法。这是不可能的。这不仅仅是数百个线程的同步问题,内核运行在特殊设备上,如GPU或加速器卡。这些卡没有访问磁盘和其他IO 数据只能从内存发送和接收,CPU可以完成复杂的I
有那样的功能吗。。或者我必须做什么才能从GPU写入文件?不,它不可用。如何以安全的方式处理向同一文件写入的1000个线程?这将大大降低计算速度。Printf仅用于调试
因此,您需要将信息发送到主机,并让主机处理对文件的正确写入。返回数据的最佳方法取决于内核/算法。这是不可能的。这不仅仅是数百个线程的同步问题,内核运行在特殊设备上,如GPU或加速器卡。这些卡没有访问磁盘和其他IO 数据只能从内存发送和接收,CPU可以完成复杂的IO
一般来说:GPU(OpenCL设备)只能从内存中获取数据并在本地对其进行处理。当OpenCL内核完成的信号到达CPU后,从GPU获取数据GPU是一个纯从设备,对其环境没有任何控制。我考虑了1000个线程的问题。。我的意思是,每个线程都在单独的文件中写入。。有可能吗?我相信你的回答,但我有一个问题。如果GPU处理器想要写一个图像或三维模型,他应该怎么做?GPU不能这么做。内核完成计算并将结果存储在全局内存中。主机CPU读取内存并将所有内容写入磁盘或需要放置的任何位置。好的,这可以通过带有CPU的并行处理器来完成。。换句话说,使用CPU的OpenCL可以处理文件吗?不,OpenCL规范不支持这一点,OpenCL代码由一个特殊的OpenCL编译器编译。请阅读此问题:)在并行处理中,如何使用mathematica使每个处理器执行一个程序块