Почему акселератор "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

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