Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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';谁的烟斗?_Opencl_Gpu_Gpgpu - Fatal编程技术网

什么';正常内存对象和OpenCL';谁的烟斗?

什么';正常内存对象和OpenCL';谁的烟斗?,opencl,gpu,gpgpu,Opencl,Gpu,Gpgpu,管道是OpenCL2.0的新特性之一,该特性已在AMDAPPSDK的生产者/消费者示例中演示。我读过一些关于pipe用例的文章,它们都像生产者/消费者的方式 我的问题是,如果OpenCL2.0提供了共享虚拟内存,那么通过创建一个全局内存空间/对象并将指针传递给2个内核函数,就可以实现相同的功能。那么管道对象和全局内存对象之间有什么区别呢?或者它只是为了优化而发明的?它与std::vector和std::queue一样有用。 一个用于存储数据,另一个用于存储数据包 数据包确实是数据,但将其作为小单

管道是OpenCL2.0的新特性之一,该特性已在AMDAPPSDK的生产者/消费者示例中演示。我读过一些关于pipe用例的文章,它们都像生产者/消费者的方式


我的问题是,如果OpenCL2.0提供了共享虚拟内存,那么通过创建一个全局内存空间/对象并将指针传递给2个内核函数,就可以实现相同的功能。那么管道对象和全局内存对象之间有什么区别呢?或者它只是为了优化而发明的?

它与
std::vector
std::queue
一样有用。 一个用于存储数据,另一个用于存储数据包

数据包确实是数据,但将其作为小单元处理比作为大数据块要容易得多


OpenCL中的管道允许您在内核中使用这些小数据包,而不必处理索引+存储+指针+forloops,如果您自己在内核中手动实现管道机制,就会发生这种情况。

管道非常有用,例如,当每个工作项都可以生成不同数量的输出时。在OpenCL2.0之前,这很难处理


管道可能驻留在更快的内存中(特定于供应商),即Altera建议使用管道在内核之间交换数据,而不是使用全局内存。

管道设计用于将数据从一个内核传输到另一个内核,而无需在全局内存或主机内存中存储/加载数据。这本质上是FPGA设备上的FIFO。因此,访问数据的速度比通过DDR或主机内存访问数据的速度快得多。这可能是使用FPGA作为加速器的原因

有时DDR也用于在内核之间共享数据。一个例子是,一个SIMD内核希望与一个对输入数据序列有要求的单个任务内核共享一些数据。如图所示,管道将以SIMD方式出现故障

除了管道,您还可以使用Altera通道获得更多功能支持。但这不可移植到其他OpenCL设备


希望这能有所帮助。:)

所以管道更像是一组实用功能?我知道你的asnwer是基于FPGA的。但是在GPU端使用管道(比如能够使用更快的内存)是否有这样的优势呢?因为当我尝试在GPU上使用管道时,管道似乎在使用全局内存(因为没有运行时改进)。那么,在可能使用普通缓冲区(在GPU上)的情况下使用管道是否有任何性能优势呢?@JohnsPaul说实话,我不熟悉GPU编程。但是根据OpenCL框架,应该有比全局内存访问更快的私有/本地内存空间。可能需要查看GPU供应商手册,以了解管道是如何实现的?如果只是将数据路由到全局,那么我认为通过pipe.Ok提高性能的可能性较小。我使用的是AMD A10 APU,但我找不到任何关于我使用的A10设备上管道实现细节的文档。我确实编写了一些测试程序,看看如果我们使用管道而不是全局缓冲区,是否会有任何性能改进。由于实现管道(如调用reserve_pipe)所需的额外synhronization,性能只会变得更差。无论如何谢谢:)@JohnsPaul谢谢你让我们知道你的发现:)