Используя int index, где ожидается двойной в C++ AMP retrict(direct3d) коде
Поиск в Google не сильно помог, кто-нибудь использовал AMP?
В фрагменте кода ниже приведение целого числа к двойному (double v = idx.x) приводит к ошибке времени выполнения "Не удалось создать шейдер". Я думал, что restrict(direct3d) предупредил бы меня о том, что GPU не сможет обработать во время компиляции. Есть ли альтернатива pow() - или мне придется написать цикл, чтобы сделать это?
concurrency::array_view<double,1> prices = …
concurrency::parallel_for_each(
prices.grid, [=](index<1> idx) mutable restrict(direct3d) {
double v = idx.x;
prices[idx] = concurrency::pow(u, v);
…
1 ответ
См. наше объяснение двойной поддержки графических процессоров в Windows, а также математической библиотеки C++ AMP http://blogs.msdn.com/b/nativeconcurrency/archive/2012/02/08/math-library-for-c-amp.aspx http://blogs.msdn.com/b/nativeconcurrency/archive/2012/02/07/double-precision-support-in-c-amp.aspx
Если у вас все еще есть вопрос, не стесняйтесь писать обратно. Также, пожалуйста, пометьте ваши вопросы с помощью усилителя C++, чтобы у нас был больше шансов найти их.