我正在玩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