“线程构建模块(TBB)使您可以轻松编写并行C ++程序,这些程序可充分利用多核性能,可移植且可组合,并具有面向未来的可扩展性。”
我真的不知道如何构建或提出这个问题。如果有人希望我提供TBB代码以更清楚地描述我正在寻找的东西,那么我很乐意提供代码。
我的主要问题是TBB和OpenCL之间有什么区别?如果函数的写法不同?我仍然不理解“内核”是如何工作的。
项目目标是从顺序到TBB再到OpenCL(完成两个阶段)
如果有人可以提供帮助,我将非常感谢。
发布于 2018-12-06 16:45:15
TBB是一种采用C ++函数对象和数据并在数据上运行它们的技术。数据存储在普通存储器中。它还有其他部分,但这是核心思想。
OpenCL采用非C ++“内核”和存储在OpenCL存储API中的数据,并在数据上运行内核,并提供了从OpenCL中获取数据的方法。
这表示异构CPU和异构内存。非C ++语言由驱动程序(从文本或SPIR-V)编译为目标指令(通常是GPU); 数据被编组到目标的内存空间(有时这是一个noop,就像在某些Intel硬件上;有时候,它会移动到GPU的内存中)并且输出。
因此,TBB中的代码“更接近”OpenCL,因为它必须支持并行数据访问,但它并不是那么接近。
https://stackoverflow.com/questions/-100006235
复制相似问题