2014-05-12 5 views
9

CUDA 6.0 में प्रबंधित मेमोरी को आजमाकर पर कॉल करते समय मुझे operation not supported देता है।cudaMallocManaged() रिटर्न "ऑपरेशन समर्थित नहीं है"

#include "cuda_runtime.h" 

#include <stdio.h> 

#define CHECK(r) {_check((r), __LINE__);} 

void _check(cudaError_t r, int line) { 
    if (r != cudaSuccess) { 
    printf("CUDA error on line %d: %s\n", line, cudaGetErrorString(r), line); 
    exit(0); 
    } 
} 

int main() 
{ 
    int *c; 
    CHECK(cudaMallocManaged(&c, sizeof(int))); 
    *c = 0; 
    return 0; 
} 

GeForce GTX 750 ती (मैक्सवेल), compute_50 का उपयोग कर, sm_50 CUDA 6.0 के साथ संकलित। विंडोज 7 64-बिट। ड्राइवरों 335.23 (whql) और 337.50 (बीटा) के साथ परीक्षण किया। विजुअल स्टूडियो 2012. 32-बिट डीबग और रिलीज बिल्ड का प्रयास किया।

C: \ वां \ परियोजनाओं \ सीपीपी \ test_cuda6 \ test_cuda6> "C: \ Program Files \ NVIDIA GPU कम्प्यूटिंग टूलकिट \ CUDA \ v6.0 \ बिन \ nvcc.exe" -gencode = मेहराब = compute_50, कोड = \ "sm_50, compute_50 \" --use-local-env --cl-version 2012 -ccbin "सी: \ प्रोग्राम फ़ाइलें (x86) \ Microsoft Visual Studio 11.0 \ VC \ bin" -I \ C \ सामान्य \ inc-I "सी: \ प्रोग्राम फ़ाइलें \ NVIDIA GPU कंप्यूटिंग टूलकिट \ CUDA \ v6.0 \" "I" सी: \ प्रोग्राम फ़ाइलें \ NVIDIA GPU कंप्यूटिंग टूलकिट \ CUDA \ v6.0 \ "शामिल है -dir रिलीज- maxrregcount = 0 - machine 32 --compile -cudart static -DWIN32 -DNDEBUG -D_CONSOLE -D_MBCS -Xcompiler "/ EHsc/W3 /nologo/O2/Zi/MD" -o रिलीज \ kernel.cu। obj "सी: \ rd \ परियोजना \ cpp \ test_cuda6 \ test_cuda6 \ kernel.cu"

यदि मैं cudaMallocManaged()cudaMalloc() के साथ प्रतिस्थापित करता हूं तो प्रोग्राम बिना त्रुटि के चलता है।

cudaMallocManaged() कैसे काम करने के बारे में कोई विचार?

उत्तर

11

32-बिट डीबग और रिलीज बिल्ड का प्रयास किया।

64 बिट डीबग या रिलीज बिल्ड का उपयोग करें।

the documentation से

:

J.1.4। सिस्टम आवश्यकताएँ

एकीकृत मेमोरी तीन बुनियादी आवश्यकताओं हैं:

एसएम वास्तुकला 3.0 या उच्चतर (केपलर वर्ग या नया)

64-बिट मेजबान आवेदन और ऑपरेटिंग सिस्टम • के साथ एक GPU •, Android पर छोड़कर

• लिनक्स या विंडोज

64 बिट मेजबान आवेदन आप एक 32 बिट डिबग के लिए संकलन नहीं कर सकते हैं या जारी निर्माण का मतलब है।

+0

हे - सिस्टम आवश्यकताओं के माध्यम से पढ़ें और पूरी तरह से 64-बिट ऐप आवश्यकता को याद किया। यह पहली बार है जब मुझे कुछ भी सामना करना पड़ा जहां 64-बिट बिल्ड की आवश्यकता है। क्या आप तकनीकी कारण जानते हैं? आपकी सहायता के लिए एक बार फिर से धन्यवाद। यह हमेशा के रूप में बहुत सराहना की है। –

+1

यूएम को सिस्टम में सभी जीपीयू और सीपीयू, [जैसे यूवीएम/यूए] (http://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__UNIFIED.html#group__CUDART__UNIFIED) में एक एकीकृत पता स्थान की आवश्यकता है। । 64-बिट स्पेस में इसे पूरा करना आसान है। –

संबंधित मुद्दे