gpt4 book ai didi

c++ - parallel_for_each 出现不支持的类型错误

转载 作者:行者123 更新时间:2023-11-30 03:04:13 25 4
gpt4 key购买 nike

我正在尝试使用 C++ AMP,但出于某种原因,最简单的代码无法编译。这:

concurrency::extent<2> e(2,2);

concurrency::parallel_for_each(grid<2>(e), [](index<2> i) restrict(direct3d) {
});

导致以下错误:

error C3576: 'wmain::': Concurrency::details::_Parallel_for_each argument #3 has unsupported type c:\program files (x86)\microsoft visual studio 11.0\vc\include\amp.h

它似乎不喜欢为 const _Kernel_type& _Kernel 传递的 lambda 表达式

注意;我正在使用包含 AMP 支持的 Visual Studio 11 Developer Preview。 “restrict(direct3d)”是一个新关键字,用于支持控制哪个加速器运行相关代码。

有什么想法吗?我试过从几个不同的例子中复制,但没有任何效果,所以我有点难过。

最佳答案

传递给 parallel_for_each 的 lambda 是一个空类(没有捕获变量,因此没有数据成员)。没有数据就无法进行任何有用的计算,这就是为什么会出现错误。

请将 concurrency::array 或 concurrency::array_view 添加到您的示例中,如下所示:

using namespace concurrency;
extent<2> e(2,2);
array<int, 2> a(e);

parallel_for_each(grid<2>(e), [&a](index<2> i) restrict(direct3d) {
a[i] = 1;
});

注意:这仅适用于 Visual Studio 11 Developer Preview。该行为将在即将发布的 Beta 版本中发生变化。您的代码将按原样编译,没有任何错误。通过空类根本不会做任何事情。

关于c++ - parallel_for_each 出现不支持的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8800143/

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