如果您使用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";
}
}发布于 2015-04-02 19:48:03
cpu加速器不是您应该在上面执行代码的加速器。因此,支持双重精度(或不支持)并不是真正有用的信息。
accelerator::cpu_accelerator数据成员:您可以使用这个加速器来设置暂存数组。它不能执行C++ AMP代码。有关更多信息,请参见本机代码博客中并行编程的C++ AMP中的暂存数组。
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
https://stackoverflow.com/questions/28252949
复制相似问题