如何枚举C ++ AMP中的所有加速器?

时间:2011-09-23 19:21:36

标签: c++ c++-amp

在C ++ AMP中,如何检测和枚举所有C ++ AMP加速器?

Don McCrady发布了一个名为非仿真加速器的应用here。虽然我有一张DX11卡(GTX 260),但我没有看到任何可用的加速器。 Daniel Moth显示here如何查询单个加速器,但我找不到如何使用C ++ AMP调用枚举所有(模拟和非加速)加速器。

2 个答案:

答案 0 :(得分:6)

看起来很简单:concurrency::get_accelerators(); Daniel Moth comments

  在VS 11 Developer Preview位中,您只需调用concurrency :: get_accelerators();.无论何时,我们都努力让Beta更容易被发现。

这是我的代码:

#include <iostream>
#include "stdafx.h"
#include "amp.h"

using namespace std;
using namespace concurrency;

void inspect_accelerators()
{
    auto accelerators = accelerator::get_all();
    for_each(begin(accelerators), end(accelerators),[=](accelerator acc){ 
        wcout << "New accelerator: " << acc.description << endl;
        wcout << "is_debug = " << acc.is_debug << endl;
        wcout << "is_emulated = " << acc.is_emulated <<endl;
        wcout << "dedicated_memory = " << acc.dedicated_memory << endl;
        wcout << "device_path = " << acc.device_path << endl;
        wcout << "has_display = " << acc.has_display << endl;                
        wcout << "version = " << (acc.version >> 16) << '.' << (acc.version & 0xFFFF) << endl;
    });
}

更新1:

从VS 11 Beta开始,现在是加速器:: get_all();

答案 1 :(得分:1)

感谢您在我的博客中重新发布答案: - )

您在问题中发表了评论:

“虽然我有一张DX11卡(GTX 260),但我没有看到任何可用的加速器”

如果Don的实用程序没找到你的卡,那么它不是DX11卡,或者他的实用程序中有一个错误,我们很感激你向他报告了这个问题。但是,我在供应商的网站上验证了GTX 260是DX10卡。不幸的是,这对于C ++ AMP代码来说不是一个好的目标......

干杯

丹尼尔