इंटेल में खुला सीएल


9

कैसे संकलित करने के लिए और इंटेल i5 प्रोसेसर पर इंटेल HD 4000 gpu इकाई के खुले क्लिप कोड चलाने के लिए ??? ओपन सीएल को / opt / Intel / opencl और varis ubuntu 12.04 में istalled किया गया है। कोई मदद बहुत मदद की होगी ... धन्यवाद


आपको क्या समस्या आ रही है?
थॉमस

इसलिए यह एम्यूलेटर इंटेल के लिए काम करता है ....
पीयूष कुमार

@thomas, जब मैं फ़ाइल चला रहा हूँ, तो उसकी कोई फ़ाइल या लाइब्रेरी नहीं मिल रही है ... त्रुटि का कहना है कि ऐसी कोई फ़ाइल या निर्देशिका CL / cl.h नहीं मिली है। इसके अलावा एक फाइल है, जिसे कर्नेलबुर्टल कहा जाता है, जब मैं इसे निष्पादित करने की कोशिश करता हूं, तो एक संकेत आता है, लेकिन यह रुक जाता है और कहता है कि GCOnf चेतावनी, ग्राहक डी बस डेमॉन से जुड़ने में विफल रहा और उसने उत्तर नहीं दिया ....
पीयूष कुमार

@ पियूषकुमार sudo apt-get install opencl-headersशायद। उसके बाद इसे ढूंढना चाहिए libOpenCL.so, लेकिन मेरे पास अतीत में इंटेल के साथ प्रमुख मुद्दे थे जो पुस्तकालय को पंजीकृत करने में विफल रहे और लिंकिंग त्रुटियों का कारण बने।
थॉमस

@Thomas, यह कोशिश करेंगे ... मैं उर experiances इस्तेमाल कर सकते हैं लगता
पीयूष कुमार

जवाबों:


10

प्रथम:
sudo apt-get install beignet opencl-headers

अपने लाइब्रेरी खोज पथ में beignet फ़ोल्डर जोड़ें:

sudo su
echo "/usr/lib/beignet/" > /etc/ld.so.conf.d/beignet.conf
ldconfig
exit

एक साधारण परीक्षण बाइनरी प्राप्त करें:

git clone https://github.com/vpereira/CapsBasic-beignet

इस तरह से देखने के लिए मेकफिल संपादित करें:

all: capsbasic

capsbasic: capsbasic.cpp Makefile
    g++ capsbasic.cpp -lcl -ocapsbasic -I/usr/include -L/usr/lib/beignet

clean:
    rm -f capsbasic

तुम वहाँ जाओ। OpenCL वर्किंग-ish इंटेल HD वीडियो कार्ड के परिवार के लिए ...

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)

./capsbasic

Number of available platforms: 1
Platform names:
    [0] Experiment Intel Gen OCL Driver [Selected]
Number of devices available for each type:
    CL_DEVICE_TYPE_CPU: 0
    CL_DEVICE_TYPE_GPU: 1
    CL_DEVICE_TYPE_ACCELERATOR: 0

*** Detailed information for each device ***

CL_DEVICE_TYPE_GPU[0]
    CL_DEVICE_NAME: Intel HD Graphics Family
    CL_DEVICE_AVAILABLE: 1
    CL_DEVICE_VENDOR: Intel
    CL_DEVICE_PROFILE: FULL_PROFILE
    CL_DEVICE_VERSION: OpenCL 1.1
    CL_DRIVER_VERSION: 0.2
    CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.1
    CL_DEVICE_MAX_COMPUTE_UNITS: 128
    CL_DEVICE_MAX_CLOCK_FREQUENCY: 1000
    CL_DEVICE_MAX_WORK_GROUP_SIZE: 512
    CL_DEVICE_ADDRESS_BITS: 32
    CL_DEVICE_MEM_BASE_ADDR_ALIGN: 32
    CL_DEVICE_MAX_MEM_ALLOC_SIZE: 134217728
    CL_DEVICE_GLOBAL_MEM_SIZE: 4
    CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 65536
    CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: 8192
    CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 128
    CL_DEVICE_LOCAL_MEM_SIZE: 65536
    CL_DEVICE_PROFILING_TIMER_RESOLUTION: 80
    CL_DEVICE_IMAGE_SUPPORT: 1
    CL_DEVICE_ERROR_CORRECTION_SUPPORT: 0
    CL_DEVICE_HOST_UNIFIED_MEMORY: 0
    CL_DEVICE_EXTENSIONS: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_fp64 cl_khr_icd cl_khr_gl_sharing
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: 0
    CL_DEVICE_NATIVE_VECTOR_WIDTH_INT: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE: 16

1
धन्यवाद, लेकिन इंटेल के अनुसार वे Linux के लिए HD 4000 पर OpenCL का समर्थन नहीं करते हैं: OpenCL SDK 1.2 लिनक्स के लिए, बिना Xeon के? । आपको किस तरह का प्रदर्शन मिल रहा है?
nealmcb

1
अहा - अब मैं देख रहा हूँ कि Beignet के लिए README.txt बताते हैं कि यह Intel के OpenCL SDK का विकल्प है, जो वास्तव में HD 4000 का समर्थन करता है। धन्यवाद !! ध्यान दें कि लोगों को वास्तव में makeभी दौड़ना पड़ता है .... क्या ldconfigपैकेज के साथ समस्या का सबूत चलाने की आवश्यकता है ?
nealmcb

2
प्रदर्शन, जैसा कि opencl जाता है, बहुत खराब और बहुत गड़बड़ है। कोड जो अन्य opencl कार्यान्वयन पर चलता है कभी-कभी क्रैश या त्रुटियां होती हैं। यह आपको कम्प्यूटेशनल रिग पर धकेलने के बिना तुच्छ परीक्षण चीजों का निर्माण करने देता है।
रोबॉटहैंस

मुझे नहीं लगता कि इसे आपके पुस्तकालय खोज पथ में जोड़ने की आवश्यकता पुस्तकालय के साथ एक समस्या है। यदि आप OpenCL का उपयोग कर रहे हैं, तो धारणा यह है कि आपके पास कुछ तकनीकी जानकारी है। व्यक्तिगत रूप से, मुझे यह पसंद आएगा यदि ओपनसीएल पैकेज सभी संकलित होते हैं और आप बस स्विच कर सकते हैं कि आपके खोज पथ में कौन सी लाइब्रेरी शामिल थी और एक अलग से इंगित करने के लिए ldconfig को फिर से चलाएं। यह उपयोगी हो सकता है यदि आपके पास परीक्षण वातावरण के रूप में सभी 3 वीडियो चिपसेट "ब्रांडों" के साथ एक परीक्षण बॉक्स था और आपने सभी संभावित लक्ष्यों पर अपने कोड को बेंचमार्क या सिर्फ रन-टेस्ट करने का एक तरीका काम किया।
रोबॉटहूमंस

1
यह समझ आता है। मैं जॉकी, अपडेट-विकल्प, या जो भी हो, उस पर थप्पड़ मारने जैसी चीज के साथ और अधिक होऊंगा। पुस्तकालयों को स्विच करने वाली किसी चीज़ के साथ पुस्तकालयों को स्विच करें? यकीन है, कि एक अस्थिर स्थिति के लिए एक अच्छा विचार की तरह लगता है।
रोबॉटहूमंस

0

संकलित करने के लिए आपको एक संकलक की आवश्यकता होती है जैसे gcc। आप इसके भंडार से जीसीसी डाउनलोड कर सकते हैं। (अधिक C ++ 11 सुविधा के लिए सबसे बड़ा संस्करण संख्या चुनें)।

$> sudo apt-get install gcc-4.7

उसके बाद आपको अपनी OpenCL लाइब्रेरी को उस एप्लिकेशन से लिंक करना होगा जिसे आप संकलित कर रहे हैं। कहते हैं कि होस्ट एप्लिकेशन (main.c) कोड और कर्नेल एप्लिकेशन (kernel.cl) कोड एक फ़ोल्डर में रहता है जिसे परीक्षण कहा जाता है। आपको निम्न कार्य करना चाहिए:

$ परीक्षण> gcc -I / opt / Intel / शामिल -L / opt / Intel / lib / [x86 या x86_64] / main.c -o a.out

इसे संकलन का ध्यान रखना चाहिए। आपको आउटपुट को इस प्रकार चलाना चाहिए:

$ परीक्षण> ./ a.out

और आपको प्राप्त होने वाली किसी भी रनटाइम त्रुटि का ध्यान रखें (आप के लिए पथ को सही करने सहित)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.