gpt4 book ai didi

C++ AMP,for 循环到 parallel_for_each 循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:59:42 27 4
gpt4 key购买 nike

我正在转换算法以利用 C++ AMP 提供的巨大加速。我所处的阶段是将 for 循环放入已知的 parallel_for_each 循环中。

通常这应该是一项简单的任务,但它看起来比我最初想象的要复杂。这是一个嵌套循环,我每次迭代使用 4 步递增:

for(int j = 0; j < height; j += 4, data += width * 4 * 4)
{
for(int i = 0; i < width; i += 4)
{

我遇到的麻烦是索引的使用。我似乎无法找到一种方法将其正确地放入 parallel_for_each 循环中。使用等级 2 的索引是可行的方法,但通过分支操作它会损害性能增益。

我发现了一个类似的帖子:Controlling the index variables in C++ AMP .它还涉及索引操作,但增量方面没有涵盖我的问题。

谨致问候,

强制广播

最佳答案

您应该将图 block 视为跨 GPU 划分工作的机制,而不是索引机制。正如您发现的那样,将自己限制在 4x4 磁贴上可能会导致您陷入性能瓶颈。

您不能只执行以下操作吗:

auto compute_domain = concurrency::extent<2>(height / 4, width / 4);

parallel_for_each(accl_view, compute_domain, [=](index<2> idx) restrict(amp)
{
int j = idx[0] * 4;
int i = idx[1] * 4;

// Your algorithm here...
}

关于C++ AMP,for 循环到 parallel_for_each 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10848744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com