2013-10-16 51 views
0

我是GPU編程的新手。我閱讀了一些解釋基本概念的材料。但是,我想知道是否有可能將一組指令或整個算法/二進制文件分配給特定的ALU,這樣我就可以確定這些指令僅由該ALU執行(因此,繞過自動處理並行化的系統)?使用CUDA/OpenCL爲指定的ALU分配指令/算法?

我必須在GPU上對各個ALU「進行基準測試」,瞭解它們之間的潛在計算延遲。因此,我想爲幾個特定的​​ALU分配一組(類似的)指令,測量執行這組指令所需的時間,並比較結果(如果有任何差異)。

一般來說,我想檢查某些競爭條件來源的GPU。我首先想到的是不同ALU的執行速度之間的微小差別。也許你們知道其他潛在的競爭條件。但是,由於我的目標對於典型的GPU使用(parllelization等)來說是非常直接的,所以我很難看到如何使用常用工具在低級別訪問個別ALU。

最好的問候,

+2

的GPU具有單個經向調度到,在我所知,你沒有訪問。例如,對於費米體系結構,該設備具有千兆線程調度程序,該程序將工作分派給不同的流式多處理器以及將變形分派給各個核心的雙變換調度程序。但這對用戶來說是透明的。你可以做什麼來分析單獨或序列的指令是使用NVTX跟蹤庫,它可以幫助您註釋部分代碼,然後通過Parallel Nsight跟蹤進行分析。 – JackOLantern

回答

1

的GPU具有單個經向調度到你沒有訪問。例如,對於費米體系結構,該設備具有千兆線程調度器,該調度器將工作分派給不同的流式多處理器和內部的雙變換調度器,以將變形分派給各個核心。但這對用戶來說是透明的。

你可以做什麼來分析個別或指令序列是使用NVTX跟蹤庫,它可以幫助你註釋部分代碼,然後用Parallel Nsight跟蹤進行分析。

您可以在

CUDA Pro Tip: Generate Custom Application Profile Timelines with NVTX

Optimizing Application Performance with CUDA Profiling Tools

,並在書中「CUDA應用設計和開發」,由羅布法伯的第3章發現在NVTX庫的一些材料。

使用NVTX關於,看看我的問題在這裏:

Use of NVIDIA Tools Extension under Visual Studio 2010

+0

謝謝,我想我必須更深入地探討這個話題才能給出一個體面的答案。目前這似乎是最好的(也是唯一的)答案。 –

+0

確保同一組指令由不同的ALU處理的一個想法: 據我所知,同一個線程塊的所有線程同時在同一個流式多處理器(SM)中執行。因此,如果我將一組指令分配給幾個全部在不同塊中的線程,這不應該導致這樣的情況,即保證這些指令是由不同的SM計算並由不同的ALU計算的。 此致敬禮, P –