[問題] 請問CUDA能否做linked list

看板C_and_CPP (C/C++)作者 (複甦哩)時間16年前 (2010/01/19 01:10), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/1
隨便舉個應用例好了: 有M*N寬度的matrix (M,N都很大) 把上面的點與周圍數字做比較,若超過某個比例就把這點的做標還有值,存起來 for(i = 0; i<M;i++){ for(j = 0; j<N ;j++){ /*參數規零*/ for(ii = n; ii<= s; ii++ ){ for(jj = w ; jj<= e; jj++ ){ /*一些疊加的算法*/ }/*for jj*/ }/*for ii*/ /*一些比較的算法*/ /*若過關就計下這點的座標還有值*/ }/*for j*/ }/*for i*/ 外面的 i, j loop非常適合用CUDA(或ATI的STREAM,或更廣義的OPENCL )平行之 而儲存結果最好的做法是用linked list (幾個點會過關事先不知道 ,且點的次序不重要,只要知道那些點過關) 但貌似CUDA的device不能主動開(顯存)memory? 那請問版上大牛是怎處理這種問題的呢? (直接開個bool或int array去把那些過關那些不過關, 強行存起來。。真的很蠢。。) 有無聰明點的做法呢,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.206.101 ※ 編輯: RisingForce 來自: 219.70.206.101 (01/19 01:13)

01/19 06:22, , 1F
你需要的可能是scan(prefix sum)
01/19 06:22, 1F

01/19 15:05, , 2F
你可以在kernel code作個簡單的alloca
01/19 15:05, 2F
文章代碼(AID): #1BL9O1F- (C_and_CPP)
文章代碼(AID): #1BL9O1F- (C_and_CPP)