【发布时间】:2020-09-09 15:19:00
【问题描述】:
在通过 OpenMP 并行化 C++ 代码之后,我现在正在考虑使用 GPU(Radeon Pro Vega II)来加速我的代码的特定部分。作为一名 OpenCL 新手,我目前正在寻找可以向我展示如何实现多核 CPU - GPU 交互的示例。
这就是我想要实现的目标。假设有一个固定的短长度数组,例如 {1,2,3,4,5},作为练习,您想要计算该数组所有可能的“右移”,即
{5,1,2,3,4}
{4,5,1,2,3}
{3,4,5,1,2}
{2,3,4,5,1}
{1,2,3,4,5}
.
相关的 OpenCL 代码非常简单。
现在,假设您的 CPU 有许多内核,例如 56 个内核,每个内核都有不同的起始阵列,并且在任何随机时刻,每个 CPU 内核都可能要求 GPU 计算其自己阵列的右移。这个核心,比如核心 21,应该将它自己的数组复制到 GPU 内存中,运行内核,然后等待结果。我的问题是“在这个操作过程中,其他CPU核心是否可以提交类似的请求,而无需等待核心21提交的任务完成?”
另外,核心 21 可以在等待 GPU 任务完成的同时并行执行另一个任务吗?
你想推荐一些例子吗?
谢谢!
【问题讨论】:
标签: c++ macos openmp opencl gpgpu