मैंने ओपनक्ल के साथ एक प्रोजेक्ट लागू किया है, तो recompile नहीं करता है। मेरे पास एक फ़ाइल है जिसमें कर्नेल फ़ंक्शन और कर्नेल द्वारा उपयोग किए जाने वाले फ़ंक्शंस को एक अलग शीर्षलेख फ़ाइल में शामिल किया गया है, लेकिन जब मैं फ़ाइल को शामिल करता हूं, तो कभी-कभी परिवर्तन लागू होते हैं और कभी-कभी वे नहीं होते हैं और यह मुझे भ्रमित कर देता है अगर आवेदन में बग है या नहीं।ओपनसीएल clBuildProgram कैश स्रोत, और # शामिल स्रोत स्रोत
मैंने स्टैक ओवरफ्लो में अन्य पोस्ट की जांच की है और -I{include directory}
पास करने के साथ एनवीडिया को गंभीर समस्या है, इसलिए मैंने इसे बदल दिया और हेडर फाइल पता स्पष्ट रूप से दिया, लेकिन फिर भी ओपनक्ल कंपाइलर हेडर फ़ाइल में त्रुटियों को ढूंढने में सक्षम नहीं है कर्नेल फ़ाइल नाम में शामिल है।
इसके अलावा, मैं एनवीडिया gtx 980 का उपयोग कर रहा हूं और मैंने अपने कंप्यूटर पर CUDA 7.0 को घुमाया है।
किसी के पास भी वही अनुभव है? मेरे द्वारा यह कैसे किया जा सकता है?
तो, मान लें मैं इस तरह एक गिरी है:
#include "../../src/cl/test_kernel_include.cl"
void __kernel test_kernel(
__global int* result,
int n
)
{
int thread_idx = get_global_id(0);
result[thread_idx] = test_func();
}
जो test_kernel_include.cl
इस प्रकार है:
int test_func()
{
return 1;
}
तब मैं कोड चलाने के लिए और मैं एक सरणी है जो सभी सदस्य हैं मिलता है जैसा कि हम उम्मीद करते हैं 1
के बराबर। अब, मैं बदल test_kernel_include.cl
रहे हैं:
int test_func()
{
return 2;
}
लेकिन परिणाम अभी भी एक सरणी जो सभी सदस्यों 1
के बराबर जो 2
में बदल जानी चाहिए, लेकिन वे नहीं कर रहे हैं है।
इसके अलावा, विंडोज़ में यह '% AppData% \ NVIDIA \ ComputeCache' पाया जा सकता है। क्या यह बेवकूफ चीज एएमडी और इंटेल पर भी लागू होती है या यह एनवीडिया कंपाइलर के लिए विशिष्ट है? – mmostajab
मैंने केवल एनवीआईडीआईए के साथ इस समस्या को देखा है। अन्य कैशिंग योजनाओं को भी लागू कर सकते हैं, लेकिन शायद वे हेडर्स को शामिल करते हैं। – jprice
मैंने दृश्य स्टूडियो में अपने प्रीबिल्ड इवेंट में 'डेल/क्यू/एस% एपडाटा%% \ NVIDIA \ ComputeCache * 'जोड़ा है, अब यह एप्लिकेशन को चलाने से पहले हमेशा कंपाइलर के कैश को हटा रहा है :) – mmostajab