1

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

Don McCrady在这里分发了一个应用程序,它列举了非模拟加速器。虽然我有一张 DX11 卡 (GTX 260),但我没有看到任何可用的加速器。Daniel Moth在这里展示了如何查询单个加速器,但我找不到如何使用 C++ AMP 调用枚举所有(仿真和非)加速器。

4

2 回答 2

6

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

在 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 开始,它现在是 Accelerator::get_all();

于 2011-09-23T19:29:03.663 回答
1

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

你在你的问题中做了一个侧面评论:

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

如果 Don 的实用程序没有找到您的卡,那么它不是 DX11 卡,或者他的实用程序中存在错误,我们非常感谢您向他报告复制品。但是,我在供应商的网站上确认 GTX 260 是 DX10 卡。因此,不幸的是,这不是 C++ AMP 代码的好目标......

干杯

丹尼尔

于 2011-09-25T23:44:37.913 回答