→ johnjohnlin: do something 裡面通常還要有一個 syncthread 10/03 10:30
→ hardman1110: 原因是什? 前面的同步不算嗎? 困惑中= = 10/03 10:40
→ johnjohnlin: 你迴圈繞回去的時候會寫到 shared memory 10/03 10:44
→ hardman1110: Do something 之後就不會更改值了 10/03 11:27
→ hardman1110: 所以我才在一開始同步 10/03 11:28
→ hardman1110: 就算繞回去應該再同步一次不是嗎? 10/03 11:32
推 a1u1usul3: do something的時候有的thread提早做完先去改值了,有 10/03 12:16
→ a1u1usul3: 的thread還沒做完需要用舊的值,但被改了 10/03 12:16
→ hardman1110: 所以我只要在使用前一刻同步就好囉? 10/03 12:37
→ hardman1110: 還有在assign值前同步 10/03 13:00
※ 編輯: hardman1110 (114.34.230.27), 10/03/2017 13:24:40
→ hardman1110: 已嘗試在assign前後都同步,但結果還是會錯(暈 10/03 13:26
※ 編輯: hardman1110 (114.34.230.27), 10/03/2017 13:31:48
→ johnjohnlin: 那 do something 裡面是不是有 break 之類的 10/03 14:00
→ johnjohnlin: BTW, blockDim.x = 135 是個很糟糕的選擇,盡量避免 10/03 14:01
→ a1u1usul3: code還是貼在codepad吧 10/03 14:09
→ a1u1usul3: 然後你的code會不會邏輯上就錯了 10/03 14:19
→ a1u1usul3: 不用sharedMeomry的時候,每個thread從自己的TmpPos拿 10/03 14:19
→ a1u1usul3: 32個元素進private memory,而TmpPos每個thread都不同 10/03 14:20
※ 編輯: hardman1110 (114.34.230.27), 10/03/2017 14:21:21
→ a1u1usul3: 結果用SharedMemory的時候32人從自己的TmpPos拿一個 10/03 14:22
→ a1u1usul3: 元素進SharedMemory 10/03 14:23
→ hardman1110: a1大 已補上github好讀版連結 10/03 14:24
→ hardman1110: 我這邊純粹想讓多個thread 同時assign值 甭跑回圈 10/03 14:25
→ a1u1usul3: SharedMemory的功能是讓多個thread共用的資料不用重複 10/03 14:27
→ a1u1usul3: 你資料的並沒有共用不是嗎@@? 10/03 14:27
→ hardman1110: 我想通了~抱歉 確實把y當執行緒切 每個thread y不同 10/03 14:28
→ hardman1110: 純共用的話 感覺用register 就好 陣列大小不大 10/03 14:30
→ a1u1usul3: thread內共用->register threads間共用->sharedMemory 10/03 14:31
→ a1u1usul3: Blocks間共用->GlobalMemory 10/03 14:32
→ a1u1usul3: 好像還有很潮的shuffle,threads間共用的樣子 10/03 14:36
→ hardman1110: 要在加速的話 好像還可以用surface memory來讀寫? 10/03 14:55
→ hardman1110: 感謝各位大大指點 10/03 14:56