2011-01-18 14 views
8

द्वारा CUDA फ़ंक्शन कॉल-सक्षम मेरे पास कुछ CUDA कोड में पुन: उपयोग करने योग्य फ़ंक्शन है जिसे डिवाइस और होस्ट दोनों से कॉल करने की आवश्यकता है। क्या इसके लिए कोई उपयुक्त योग्यता है?या तो डिवाइस या होस्ट

उदा। मेजबान के लिए एक बार डिवाइस के लिए स्पष्ट रूप से और एक बार:

int func1 (int a, int b) { 
    return a+b; 
} 

__global__ devicecode (float *A) { 
    int i = blockDim.x * blockIdx.x + threadIdx.x; 
    A[i] = func1(i,i); 
} 

void main() { 
    // Normal cuda memory set-up 

    // Call func1 from inside main: 
    int j = func1(2,4) 

    // Normal cuda memory copy/program run/retrieve data 
} 

अब तक मैं केवल इस समारोह में दो बार होने से काम करने के लिए प्राप्त कर सकते हैं: क्या इस मामले में func1 के लिए सही परिभाषा है। क्या कोई बेहतर तरीका है?

उत्तर

16

CUDA प्रोग्रामिंग गाइड से:

__device__ और __host__ क्वालिफायर एक साथ तथापि इस्तेमाल किया जा सकता, में जो मामले समारोह दोनों मेजबान और डिवाइस के लिए संकलित किया गया है।

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