cuda

    0熱度

    1回答

    我需要生成大量的隨機數(從零到1,均勻分佈)。 我最初有一個Do循環,並在飛行中產生的隨機數爲這樣: Real :: RandomN Integer :: N DO N = 1, 10000 Call RANDOM_NUMBER(RandomN) ... Some Code ... ENDDO 然而,生成數字時(如果我評論了「呼叫RANDOM_NUMBER(我得到一個

    3熱度

    1回答

    優化掉了我編了內核NVRTC: __global__ void kernel_A(/* args */) { unsigned short idx = threadIdx.x; unsigned char warp_id = idx/32; unsigned char lane_id = idx % 32; /* ... */ } 我知道整數除法和模數

    0熱度

    1回答

    我正在擺弄一些SASS,同時看着使用%laneid的方式。這浪費了別人的生命一分鐘(約抱歉 - 你知道你是誰)失態後,我現在有以下幾點: CUDA代碼: __forceinline__ __device__ unsigned lane_id() { unsigned ret; asm volatile ("mov.u32 %0, %laneid;" : "=r"(ret));

    -1熱度

    1回答

    所以我在CUDA中實現了(或者至少試過)Sobel濾波器,我的代碼如下。當我執行這個文件時,我得到一個正確的Sobel過濾圖像的一半,另一半是黑色的。我無法上傳圖片,因爲它們的格式爲.pgm。因此,代碼所執行的操作是以.pgm格式的灰度圖像讀取的,並使用共享內存概念將Sobel濾鏡遮罩與其進行卷積。我用一個1024×1024的圖像作爲輸入,它返回一個Sobel濾波圖像,其邊緣有一半水平切割,因此它

    -1熱度

    1回答

    我正在開發一個cuda程序來處理2D圖像。 問題是當我嘗試訪問blockDim.x和blockId.x時,內核總是無法啓動並輸出unknown error。 此外,如果我使用3x5圖像,我可以訪問threadId.x,而我使用2048x2048圖像,我不能。 當我使用PyCuda時,我的內核代碼運行正常,但現在我必須切換到cuda C。 我認爲這個問題可能與 我通過數組指針和有什麼毛病cudaMa

    0熱度

    1回答

    CUDA設備存儲器可使用cudaMalloc/cudaFree,確定被分配。這很好,但很原始。 我很想知道,是以某種方式虛擬化的設備內存?是否有與mmap等效的操作,更重要的是,對於設備存儲器有mremap? 如果設備內存是虛擬化的,我希望這些功能應該存在。看來現代GPU驅動程序實現分頁時出現爭用多個進程有限的視頻資源,這表明它的虛擬化在一些這樣或那樣... 有誰知道在哪裏可以閱讀更多關於這個?

    0熱度

    1回答

    我在我的代碼中有很多附加模式。基本上,它相當於第一個用於過濾大型數據集的內核,其中返回的選定條目將非常稀疏,然後是第二個內核,用於在大大簡化的數據集上執行更多涉及的計算。 似乎cudaStreamSynchronize幾乎是多餘的,但我看不到任何方式。 是否有避免內核之間同步的替代模式? CUDA動態並行性會以任何方式提供幫助嗎? 示例代碼: /* Pseudocode. Won't Compil

    1熱度

    1回答

    我剛開始與CUDA編程和我被迷惑的速度相對於正常的CPU。但是,我現在正在運行一個簡單的邏輯考慮。我在設備代碼,我有4D檢查。餘由恆定變量和我用atomicAdd通過設備代碼通過每次迭代增加。 //get global counter int global_index = atomicAdd(&counter, 1); 然後我考慮一個4D體積,我試圖將線性索引映射到4D體積。我知道,對於2D

    -1熱度

    1回答

    我一直在使用tensorflow近兩年來,還從來沒見過這樣的。在一個新的Ubuntu盒子上,我在virtualenv中安裝了tensorflow。當我運行示例代碼時,出現無效設備錯誤。它發生在調用tf.Session()時。 WARNING:tensorflow:From full_code.py:27: initialize_all_variables (from tensorflow.pyth

    1熱度

    2回答

    錯誤「表達式必須具有整數或枚舉類型」在這就是代碼:在「Z」 __global__ void VectorKernel(float *a, float *b, float *c, int n) { int i = threadIdx.x; float y = 0, z = 0; if (i < n) y = (b-a)/n; for (float j