簡體   English   中英

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

[英]How do you enumerate all accelerators in C++ AMP?

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

Don McCrady 在此分發了一個應用程序,該應用程序枚舉了非仿真的加速器。 盡管我有DX11卡(GTX 260),但沒有看到可用的加速器。 Daniel Moth 在這里展示如何查詢單個加速器,但是我找不到如何使用C ++ AMP調用枚舉所有(模擬和非)加速器的方法。

看起來很簡單: concurrency::get_accelerators(); Daniel Moth 評論

在VS 11開發人員預覽版中,您只需調用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();。

感謝您在此處將我的博客中的答案重新發布:-)

您在問題中提出了附帶意見:

“盡管我有DX11卡(GTX 260),但沒有看到可用的加速器”

如果Don的公用程序找不到您的卡,則它不是DX11卡,或者他的公用程序中有錯誤,非常感謝您向他報告該復制品。 但是,我在供應商的站點上驗證了GTX 260是DX10卡。 因此,不幸的是,這並不是C ++ AMP代碼的理想目標。

干杯

丹尼爾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM