2011-09-23 88 views
1

在C++ AMP中,如何檢測和枚舉所有C++ AMP加速器?如何列舉C++ AMP中的所有加速器?

唐McCrady分佈式應用程式here枚舉非模擬加速器。雖然我有一個DX11卡(GTX 260),但我沒有看到任何可用的加速器。 Daniel Moth顯示如何查詢單個加速器,但我找不到如何使用C++ AMP調用枚舉所有(模擬和非加速器)加速器。

回答

6

看起來它很簡單:concurrency::get_accelerators();丹尼爾蛾comments

在VS 11開發者預覽版位

,您只需撥打併發:: 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測試版,這是目前加速器:: get_all();

+0

啊,剛發現的文檔:http://msdn.microsoft.com/en-us /library/hh350903(v=VS.110).aspx –

+0

以下是新文檔的位置:http://msdn.microsoft.com/en-us/library/hh350895(v=vs.110).aspx –

1

感謝從我的博客在這裏重新發布的答案:-)

你做你的問題邊評論:

「雖然我有一個DX11顯卡(GTX 260),我沒有看到任何可用的加速器「

如果Don的實用程序沒有找到您的卡,那麼它不是DX11卡,或者他的實用程序中存在錯誤,我們希望您向他報告repro。但是,我在供應商的網站上驗證GTX 260是DX10卡。這樣,纔不會對C++ AMP代碼的好目標,可惜......

乾杯

丹尼爾

+0

感謝後續。你是對的 - 不知道爲什麼Win7 x86上的dxdiag.exe顯示DX11。昨天出去買了一臺GTX 560 Ti,它的功能正確。 –

相關問題