我正在玩C++ AMP,但由于某种原因,最愚蠢的代码将不会编译。这:不支持的类型错误与parallel_for_each
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
它只是似乎并不喜欢lambda表达式传递为const _Kernel_type& _Kernel
注意;我正在使用包含AMP支持的Visual Studio 11 Developer Preview。 “restrict(direct3d)”是一个新的关键字,用于支持控制哪个加速器运行有问题的代码。
任何想法?我试着从几个不同的例子复制,但没有任何作品,所以我有点难倒。
你我的朋友是一个绝对的天才(以及一个学者和先生们)!当然是完美的感觉。非常感谢你。 – Dave 2012-01-10 23:58:37
我很高兴能帮上忙。 – 2012-01-11 02:18:36
除此之外,我注意到如果你不包含任何输入(例如一个数组),如果你指定输出,即按值捕获的array_view,那么事情就会起作用。所以我猜你需要在lambda中捕获至少1个输入或1个输出。很高兴听到这个限制正在Beta版本中放松,因为它并不特别明显。当然,后见之明是一件美妙的事情,现在它已经非常明显了:) – Dave 2012-01-11 05:04:13