如果你检查" 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";
}
}
答案 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