[英]CUDA, little program to test the throughput
我需要通過在不同場景中測試它們的吞吐量來測試一些GPU。
這包括一個簡單的64b乘法:
__device__ void add(unsigned int *data, bool flag){
unsigned int index = threadIdx.x;
unsigned int result;
asm ("{\n\t"
"add.cc.u32 %1, %1, %1;\n\t"
"addc.u32 %0, 0, 0;\n\t"
"}"
: "=r"(result), "+r"(index): );
if(flag)
data[threadIdx.x] = result;
}
64b模數:
__device__ void mod(){
asm ("{\n\t"
".reg .u64 t1;\n\t"
"cvt.u64.u32 t1, %0;\n\t"
"rem.u64 t1, t1, t1;\n\t"
"}"
: : "r"(index));
}
和64b mul + mod:
__device__ void mulmod
asm ("{\n\t"
".reg .u64 t1;\n\t"
".reg .u64 t2;\n\t"
"mul.wide.u32 t1, %0, %0;\n\t"
"cvt.u64.u32 t2, %0;\n\t"
"rem.u64 t1, t1, t2;\n\t"
"}"
: : "r"(index));
}
我認為任何內存訪問對我的意圖都是完全無用的,我想使用線程索引變量作為輸入。
因為我要寫無寄存器,所以我不需要關心寄存器的使用情況,我可以啟動盡可能多的線程(每個GPU都允許)
我想知道:
如果這是正確的方法
是否有任何特定的線程配置,除了最大化線程數,我可以檢索最佳吞吐量?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.