Используя 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++, чтобы у нас был больше шансов найти их.

Другие вопросы по тегам