2013-03-11 34 views
1

如果像一些網上的資源,包括this one,擁有它,執行的指令重播+數=發行的指令數,而且數量,如果重播的數字爲正數,一個CUDA內核是如何能夠具有以下屬性(來自nvprof)?執行的指令數量如何大於發佈的指令數量?

Invocations  Avg  Min  Max  Event Name 
1     69161760 69161760 69161760 inst_executed 
1     37263115 37263115 37263115 inst_issued1 
1     19130919 19130919 19130919 inst_issued2 

(inst_issued = inst_issued1 + inst_issued2 = 37263115 + 19130919; ratio = inst_executed/inst_issued > 1). 

inst_issued = inst_issued1 + inst_issued2 

的指令總數正確的公式發出?除了* issued1和* issued2以外是否有內核發佈的指令?如果是這樣,他們怎麼能被描述?

在線,我沒有看到任何明顯的回答我的問題。例如,我的版本的nvprof --query-events只會產生上述三個參數作爲--events的可能參數。在CUDA編程文檔,上面的鏈接,或者我讀過的與CUDA指令優化有關的其他十個左右的鏈接中,似乎也沒有提到這一點。

其他信息:

0)我跑CUDA 5.0,並用NVCC -m64 -arch = sm_30編譯。

1)我正在一個數學的唯一版本我的內核,並且因爲它沒有寄存器壓力,全局內存訪問的次數可以忽略不計。

2)我沒有訪問到NVIDIA視覺分析器,所以我不知道這是否會給我解答上面有所不同。

非常感謝,和道歉提前如果這是愚蠢的。

回答

2

inst_issue2是發佈了2條指令的發行槽的數量。

inst_issued1:每個週期發出一個指令數量

inst_issued2:每個循環

用於發出總指令的式發出雙重指令數是:

inst_issued = (inst_issued2 * 2) + inst_issued1 

在使用數字問題給出了:

inst_issued = (inst_issued2 * 2) + inst_issued1 
      = (19130919 * 2) + 37263115 
      = 75524953 
ratio = inst_executed/inst_issued 
     = 69161760/75524953 
     = .916 
+0

感謝。畢竟,這很愚蠢。 – user1445860 2013-03-11 14:41:55