bank-conflict

    1熱度

    1回答

    我正在設計一個CUDA內核,它將以每個線程塊16個線程啓動。我在我想處理的共享內存(即每個線程塊)中有N個ints數組。 如果線程的訪問模式連續進入數組,那麼這是否意味着沒有銀行衝突?我明白如果數組是一個char數組,那麼會有bank衝突,但我不完全確定如果它是一個int數組會發生什麼。 我猜猜會有銀行衝突,因爲每組4個連續的int共享相同的內存銀行? 如果這是真的,那麼防止銀行衝突的正確解決方案

    1熱度

    1回答

    在NVIDIA的2.x架構上,每個warp有64kb的內存,默認分區爲48kb的共享內存和16kb的L1緩存(服務於global和constant內存)。 我們都知道訪問共享內存的銀行衝突 - 內存被分成32個大小爲32位的銀行,以允許所有32個線程同時獨立訪問。另一方面,全局內存雖然慢得多,但不會經歷存儲體衝突,因爲內存請求會在整個warp中進行合併。 問題:假設來自全局或常量內存的某些數據緩存

    0熱度

    1回答

    這段CUDA代碼在Nsight分析時會報告很多銀行衝突。第一個片段包含常量的定義和內核調用: // Front update related constants #define NDEQUES 6 #define FRONT_UPDATE_THREADS 480 #define BVTT_DEQUE_SIZE 500000 #define FRONT_DEQUE_SIZE 5000000

    -1熱度

    2回答

    我一直在努力優化一些代碼,並遇到了與CUDA Nsight性能分析共享內存銀行衝突報告的問題。我能夠將它簡化爲一個非常簡單的代碼,Nsight報告這個代碼存在銀行衝突,但似乎並不存在。下面是內核: __global__ void conflict() { __shared__ double values[33]; values[threadIdx.x] = threadIdx.

    1熱度

    1回答

    對於這個問題的模糊性,我很抱歉。 背景: 我試圖寫在OpenCL的形態學圖像處理功能。我有一個__local緩衝區,用於存儲每個像素的數據(每個像素由一個工作項目表示,尚未展開循環)。另外,由於我在測試早期,我只使用一個工作組(8x8像素圖像,因此我可以手動驗證結果)。 問題: 有當數據從一個,兩個,三個或甚至四個像素必須加入到另一個的像素緩衝器的場合。由於這些是相同工作組中的相鄰像素,我相信我會

    1熱度

    1回答

    我有一個這樣的陣列: data[16] = {10,1,8,-1,0,-2,3,5,-2,-3,2,7,0,11,0,2} 我想計算上使用G80 GPU共享存儲器數組的減少。 爲NVIDIA文檔中引用的內核是這樣的: __global__ void reduce1(int *g_idata, int *g_odata) { extern __shared__ int sdata[]; u

    4熱度

    1回答

    我剛剛從Why only one of the warps is executed by a SM in cuda?得知Kepler GPU可以一次執行幾條(顯然是4條)的指令。 共享內存銀行可以同時提供四個請求嗎?如果不是這樣,那意味着即使在任何單獨的warp中沒有銀行衝突,銀行衝突也可能發生在恰好同時執行的不同warp線程之間,對嗎?有沒有關於這方面的任何信息?

    1熱度

    1回答

    具有2.x設備的設備中的銀行衝突是什麼?據我瞭解CUDA C編程指南,在2.x設備中,如果兩個線程在同一個共享內存庫中訪問相同的32位字,它不會導致銀行衝突。相反,這個詞是廣播。當兩個線程在同一個共享內存組中寫入相同的32位字時,則只有一個線程成功。由於片上存儲器爲64KB(共享內存爲48KB,L1爲16KB,反之亦然),並且它以32個存儲體組織,因此我假設每個存儲體都由2 KB組成。所以我認爲如

    8熱度

    1回答

    內核參數存儲在片上共享內存中。如果線程嘗試訪問同一個銀行,共享內存可能會發生銀行衝突。 所以我的問題是:這是否意味着使用內核參數線程將導致銀行的衝突?

    3熱度

    1回答

    我在CUDA內核中遇到(我認爲是)共享內存bank衝突。代碼本身相當複雜,但我在下面的簡單示例中轉載了它。 在這種情況下,使用可能在右側填充的共享存儲器陣列(變量ng)將其簡化爲來自全局 - >共享 - >全局存儲器的大小爲16x16的二維數組的簡單副本, 。 如果我編譯ng=0的代碼,並檢查與NVVP的共享存儲訪問模式,它告訴我,有「沒有任何問題」。例如, ng=2我在標有「NVVP警告」的行上