dynamic-parallelism

    0熱度

    1回答

    我正嘗試使用CUDA的動態並行機制,但是我無法通過編譯步驟。 我正在使用Compute Capability 3.5和CUDA 7.5版GPU。 根據在我使用,我得到不同的錯誤信息,編譯命令的選項,但使用的documentation, 我到達一個線通向成功編譯: nvcc -arch=compute_35 -rdc=true cudaDynamic.cu -o cudaDynamic.out -l

    0熱度

    1回答

    我想爲我的應用程序之一使用開普勒的動態並行性。在子內核中需要啓動子內核的線程的全局索引(在父內核中)。換句話說,我想訪問父內核座標變量。 有沒有規範的方法來做到這一點?或者我應該計算父線程的全局索引(使用內置變量,如threadIdx.x等),並通過子內核的一個參數傳入它?

    3熱度

    1回答

    我正在嘗試GTX 980 ti卡上的動態並行。 運行代碼的所有嘗試都返回「未知錯誤」。 簡單代碼如下所示,帶有編譯選項。 我可以執行內核depth=0沒有問題。 第一次調用小孩時,會給出錯誤。 cudaDeviceSynchronize()在查看其他問題後被納入,但沒有解決問題。 任何想法?這可能是一個驅動程序問題嗎? 編輯1: 操作系統:Linux-x86_64的 的Nvidia驅動程序版本:3

    -1熱度

    1回答

    爲了測試動態並行性,我編寫了一個簡單的代碼,並使用以下命令將其編譯到GTX1080上。 nvcc -arch=sm_35 -dc dynamic_test.cu -o dynamic_test.o nvcc -arch=sm_35 dynamic_test.o -lcudadevrt -o dynamic_test 但是,輸出並不如預期。看起來像傳遞給子內核的指針被取消引用。 #includ

    0熱度

    1回答

    我正在嘗試編寫一個在內核中執行多個向量點積的代碼。我正在使用cublasSdot功能從cublas庫執行矢量點產品。這是我的代碼: using namespace std; __global__ void ker(float * a, float * c,long long result_size,int n, int m) { float *sum; int id = blockIdx.

    2熱度

    1回答

    我切換到使用cc 5.2的新GPU GeForce GTX 980,因此它必須支持動態並行性。但是,我甚至無法編譯一個簡單的代碼(來自編程指南)。我不會在這裏提供它(不是必要的,只是有一個全局內核調用另一個全局內核)。 1)我使用VS2013進行編碼。在property pages -> CUDA C/C++ -> device,我改變code generation屬性爲compute_35,sm

    3熱度

    1回答

    當您從GPU上的主內核啓動次內核時,會產生一些開銷。造成或影響這種開銷的因素是什麼?例如內核代碼的大小,啓動內核的SM的佔用情況,內核參數的大小等。 爲了這個問題,讓我們具有包容性,並將「開銷」定義爲以下總和時間間隔: 開始:一個SM看到啓動指示 結束:一個SM開始執行的子內核 加 開始的指令:最後SM執行子的任何指令內核(或者可能最後由子內核指令寫入致力於相關的內存空間) 結束:執行子內核啓動後

    0熱度

    1回答

    產生錯誤內核代碼: __kernel void testDynamic(__global int *data) { int id=get_global_id(0); atomic_add(&data[1],2); } __kernel void test(__global int * data) { int id=get_global_id(0);

    0熱度

    1回答

    在here羅伯特克羅維拉說,cublas例程可以從設備代碼調用。雖然我使用動態並行和使用計算能力3.5進行編譯,但我無法通過設備函數調用Cublas例程。我總是得到錯誤我的代碼包含了設備的功能,其調用CUBLAS程序一樣cublsAlloc,cublasGetVector,cublasSetVector和cublasDgemm 我的編輯和「從設備/全球功能是不允許調用主機功能」聯的命令: n

    0熱度

    1回答

    的cubin我有個CUDA核心,看起來像下面這樣: #include <cublas_v2.h> #include <math_constants.h> #include <stdio.h> extern "C" { __device__ float ONE = 1.0f; __device__ float M_ONE = -1.0f; __device_