为什么“cpu”加速器为supports_double_precision数据成员报告“否”?

时间:2015-01-31 14:56:26

标签: visual-c++ gpgpu c++-amp

如果你检查" cpu"使用MS C ++ AMP的加速器,你将获得" no"对于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";
  }
}

1 个答案:

答案 0 :(得分:1)

cpu加速器不是您应该执行代码的加速器。因此,支持双精度(或不精确)并不是非常有用的信息。

  

accelerator :: cpu_accelerator数据成员:您可以使用它   用于设置登台数组的加速器。它无法执行C ++ AMP   码。有关更多信息,请参阅C ++ AMP中的分段数组   Native Code博客中的并行编程。

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