是什么导致代码在GPU中运行?

时间:2017-04-28 11:28:22

标签: c++ c++-amp

我知道我的代码是在GPU中运行的,因为性能分析器是这样说的,但是我得到了关于实际导致它在GPU中运行的内容的混合信息。 This有信誉的微软开发人员称parallel_for是CPU,而parallel_for_each是GPU。 This有信誉的微软开发人员暗示parallel_for和parallel_for_each是可以互换的(使用方式略有变化)但是甚至没有提到GPU或C ++放大器,尽管他确实比较了OpenMP。 MSDN也有每篇文章的文章。这是限制'第一条用?我想我可以做一些实验,但这不是官方的话。任何意见将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果您想确定自己在GPU上运行,请选择GPU以运行代码。

std::vector<accelerator> accs = accelerator::get_all();


//std::wcout << "Found " << accs.size() << " C++ AMP accelerator(s):" << std::endl;
//std::for_each(accs.cbegin(), accs.cend(), [](const accelerator& a)
//{
//  if (a.get_is_emulated() == false)
//  {
//      std::wcout << "  " << a.device_path << std::endl
//          << " description   " << a.description
//          << " device_path   " << a.device_path
//          << " is_emulated   " << a.get_is_emulated()
//          << std::endl << std::endl;
//  }
//});

但更具体地说,限制关键字将尝试在加速器上运行(如果有的话)。如果不是相同的代码将自己在CPU上运行。在我们的一些项目中,我们检测到具有最大内存的加速器(GPU)并使其成为“选择”的加速器。

希望这有帮助。