gpu-programming

    1熱度

    3回答

    我正在嘗試編譯某人發給我的cuda項目。雖然編譯階段通過,但鏈接階段失敗。下面是錯誤的一個示例: Error 298 error LNK2005: "int __cdecl compare_ints(void const *,void const *)" ([email protected]@[email protected]) already defined in 3level_1.cu.obj

    13熱度

    1回答

    我只發現了一個說法,即本地內存比寄存器內存慢,每個線程類型爲兩個。 共享內存應該是快速的,但它比本地內存[線程]更快嗎? 我想要做的是一種中值過濾器,但是給定的百分位數而不是中位數。因此,我需要拿出大量的清單,對它們進行分類,然後選擇合適的清單。但是我無法開始排序共享內存列表或出錯。通過複製到本地內存,我會失去很多性能嗎?

    0熱度

    1回答

    假設,例如,我有一個10x10「布」網格,每個正方形都是兩個三角形。現在,如果我想動畫,我可以在CPU上進行彈簧計算。每個頂點都會有自己的「彈簧」數據,並希望能夠像任何類型的「布料」一樣反彈。 但是,這將涉及最低約380?每幀彈簧計算。令人高興的是,每個頂點的計算是「令人尷尬的並行」 - 如果每個頂點有一個CPU,每個頂點可以在單個CPU上運行。因此,GPU在理論上是運行此類計算的理想選擇。 除(

    6熱度

    5回答

    我是新來的GPU編程的世界裏,我已經試過閱讀維基百科和谷歌搜索,但我仍然有幾個問題: 我下載了一些GPU實例,支持CUDA,有一些.CU文件和一些CPP文件,但所有的代碼是正常的C/C++代碼只是一些奇怪的功能,如cudaMemcpyToSymbol,其餘的是純C代碼。問題是,.cu代碼是用nvcc編譯的,然後與gcc鏈接?或者它是如何編程的? 如果我編碼要在GPU上運行的東西,它會在所有GPU上

    2熱度

    1回答

    我對某些圖像處理工具使用GLSL,因此繪製了一個全屏四元組並在片段着色器中進行處理。我想知道我們是否可以期望碎片按照任何特定的優先順序進行處理? 我知道片段正在並行處理,我們不能保證任何特定片段的結束時間,那麼如何處理呢?這只是一個很大的隊列嗎?那麼這個模式會是什麼樣子呢?掃描線,塊等 這是驅動程序的依賴?正如你可以告訴我在這方面有幾個問題,而且我很難找到關於它的文檔。

    4熱度

    1回答

    我正在CUDA中實施凸包的分而治之的方法。這是我的方法: 自上而下: 創建列表以存儲凸包; curSize =輸入大小(所有點); 對於i:1至日誌N 開始 curSize = curSize/2; 以每2個相鄰的凸殼中列表的列表,並將它們 合併成更大的船體(使用標準的上部和下部共同切線爲鴻溝&治凸包 方法)在curSize線程 //最初,它合併每2然後在下一次迭代中使用 ,它將大小爲2的凸包合併

    0熱度

    1回答

    我創建了一個簡單的粒子系統。我有一臺具有計算能力的設備2.1。我可以改變什麼來優化內核? 我假設變量tPos和tVel存儲在寄存器中。 __global__ void particles_kernel(float4 *vbo, float4 *pos, float4 *vel) { int tid = blockIdx.x * blockDim.x + threadIdx.x;

    4熱度

    2回答

    CUDA-MEMCHECK報告這種信息的發佈模式CUDA內核: ========= Error: process didn't terminate successfully ========= Invalid __global__ read of size 4 ========= at 0x000002c8 in xx_kernel ========= by thread (0,0,0)

    12熱度

    4回答

    首先:是否可以使用Java並讓它(部分)在GPU上運行或使用GPU? 如果可能的話,是否可以使用普通的Java語法,而不是使用特殊的cuda或opencl語法? 我想只取我編碼的Java源代碼,讓它在GPU上執行最小的更改。 我將不勝感激代碼示例。

    1熱度

    2回答

    我想阻止一些塊,直到一個變量設置爲特定值。所以我編寫這段代碼來測試一個簡單的do-while循環是否可行。 __device__ int tag = 0; __global__ void kernel() { if (threadIdx.x == 0) { volatile int v; do { v = tag; } wh