Googling мало помог, кто-нибудь использовал AMP?Использование индекса int, где double ожидается в C++ AMP retrict (direct3d) код
В фрагменте кода под листингом от integer до double (double v = idx.x) приводят к ошибке времени выполнения «Не удалось создать шейдер». Я думал, что ограничение (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);
…
Вы уверены, что это действительно то, что вызывает проблемы? Я склонен сомневаться в этом. Что происходит, когда вы просто оцениваете 'idx.x', отбрасываете результат и устанавливаете' double v = 2.502907875'? – leftaroundabout
double v = 2.502907875 будет работать. Фактически мне нужны были цены [idx] = concurrency :: pow (u, idx.x), и это дало бы это исключение. –
Кстати, я пытаюсь это под эмуляцию. –