-1
我在主機上執行以下代碼時遇到問題,不確定我要出錯的位置。我的理解是我需要分配足夠的內存來存儲設備上的textLength大小的textData內容,我使用sizeof(char)* textLength malloc來給我足夠的空間,然後使用cudaMemcpy將所有的從textData到設備上分配的空間的值。我的異常讀取「訪問衝突讀取位置0x000000000501f80400」,這是我的cuTextArray在設備上的內存地址。cudaMalloc運行時錯誤
texture<char, cudaTextureType1D, cudaReadModeElementType> textDataRef;
int textLength = 10000000
cudaArray *cuTextArray;
checkCudaErrors (cudaMalloc(&cuTextArray, sizeof(char)*textLength));
checkCudaErrors(cudaMemcpy(cuTextArray, textData, sizeof(char)*textLength, cudaMemcpyHostToDevice));
checkCudaErrors(cudaBindTextureToArray(textDataRef, cuTextArray, textDataRef.channelDesc));
我的數據是太大緩衝區我不能使用cudaMallocArray - 最大的8192個字節
異常這兒,似乎在裏面cuda_runtime.h結合紋理的代碼片斷陣列崩潰:
其中3個操作('cudaMalloc','cudaMemcpy','cudaBindTextureToArray')實際上失敗,異常
查找值?請提供[MCVE](http://stackoverflow.com/help/mcve)。 –
行爲真的沒有什麼幫助,我在cudaMalloc調用中設置了一個斷點,運行程序時斷點轉移到了cudaMemcpy調用。按f10一次將我帶到cuda_runtime.h到cudaMemcpyToSymbolAsync,再次按f10將導致異常 – Oliver
請提供一個資源鏈接,其中說明使用'cudaArray'的限制爲8kB。如果它也涉及'cudaMemcpyToArray',那麼你應該清楚地說明它。另外,如果極限確實是_is_ 8kB並且您想要分配更多,那麼您可能會濫用'cudaArray' ... –