为什么"cpu"加速器报告"No" supports_double_precision数据成员?



如果您使用 MS C++ AMP 检查"cpu"加速器,您将得到supports_double_precision的"否"。现在,我的印象是 CPU 比 GPU 具有更好的精度......这仅仅是因为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";
  }
}
CPU 加速器

不是您应该在其上执行代码的加速器。因此,支持双精度(或不支持双精度)并不是真正有用的信息。

加速器::cpu_accelerator 数据成员:您可以使用此 用于设置临时阵列的加速器。它无法执行C++ AMP 法典。有关详细信息,请参阅 AMP 中的暂存阵列C++帖子 本机代码中的并行编程博客。

https://msdn.microsoft.com/en-us/library/hh873132.aspx

如果您想了解有关使用 CPU 加速器创建临时阵列的详细信息,MSDN 页面将链接到包含详细信息的博客文章。

http://blogs.msdn.com/b/nativeconcurrency/archive/2011/11/10/staging-arrays-in-c-amp.aspx

最新更新