Почему акселератор "cpu" сообщает "Нет" для элемента данных support_double_precision?
Если вы проверите ускоритель "процессор" с MS C++ AMP, вы получите "нет" для supports_double_precision
, Теперь у меня сложилось впечатление, что процессор имеет более высокую точность, чем графический процессор... только потому, что математическая библиотека MSVC++ не достаточно точна?
Пример кода для получения вывода:
#include <iostream>
#include <amp.h>
int main()
{
std::vector<accelerator> accelerators = accelerator::get_all();
for(const auto& accelerator : accelerators)
{
std::wcout << accelerator.description << "\n";
std::wcout << (accs[i].supports_double_precision ?
"double precision: true" : "double precision: false") << "\n";
std::wcout << (accs[i].supports_limited_double_precision ?
"limited double precision: true" : "limited double precision: false") << "\n";
}
}
1 ответ
Ускоритель ЦП не является ускорителем, на котором вы должны выполнять код. Таким образом, поддержка двойной точности (или нет) не очень полезная информация.
accelerator:: cpu_accelerator Data Member: этот ускоритель можно использовать для настройки промежуточных массивов. Он не может выполнить код C++ AMP. Дополнительные сведения см. В статье "Построение массивов в C++ AMP" в блоге "Параллельное программирование в собственном коде".
https://msdn.microsoft.com/en-us/library/hh873132.aspx
Если вы хотите узнать больше об использовании ускорителя ЦП для создания промежуточных массивов, тогда страница MSDN ссылается на сообщение в блоге, содержащее больше информации.
http://blogs.msdn.com/b/nativeconcurrency/archive/2011/11/10/staging-arrays-in-c-amp.aspx