我想更好地理解減少,我目前正在看兩個算法,「中位數」和Quicksort。 我知道這兩種算法都使用類似的(有效的)分區子程序來幫助解決他們的問題,最終使他們非常相似。 Select(A[1...n],k): // Pseudocode for median of medians
m = [n/5]
for i from 1 to m:
B[i] = Select(A[
我想申請在這片我的內核的代碼減少(1個維數據): __local float sum = 0;
int i;
for(i = 0; i < length; i++)
sum += //some operation depending on i here;
代替具有正好1個線程執行此操作的,我想有n個線程(n =長度),最後有1個線程作總和。 在僞代碼,我想能寫這樣的事: int
讀書的問題,並從以下 LINK 的答案後,我仍然留在我的腦海裏的問題。來自我在C/C++中的背景;我明白使用volatile有缺點。並且在答案中指出,對於CUDA,如果不使用volatile關鍵字,優化可以用寄存器替換共享數組以保留數據。 我想知道計算(總和)減少時可能遇到的性能問題。例如 __device__ void sum(volatile int *s_data, int tid)
{