เปิด cl ใน intel


9

วิธีการรวบรวมและเรียกใช้รหัสเปิดบนโปรเซสเซอร์ Intel i5 ที่มีหน่วย intel hd 4000 gpu ??? Open cl ได้รับ istalled ใน / opt / intel / opencl และ versionis ubuntu 12.04 ความช่วยเหลือใด ๆ จะเป็นความช่วยเหลือที่ดี ... ขอบคุณ


คุณกำลังประสบปัญหาอะไร
โทมัส

ดังนั้นโปรแกรมจำลองนี้ใช้งานได้กับ intel ....
Piyush Kumar

@ โทมัส, เมื่อฉันรันไฟล์, มันไม่พบไฟล์หรือไลบรารี่ใด ๆ ... ข้อผิดพลาดบอกว่าไม่พบไฟล์หรือไดเรกทอรี CL / cl.h นอกจากนี้ยังมีไฟล์หนึ่งชื่อ kernelBuilder เมื่อฉันพยายามเรียกใช้งานหนึ่งพรอมต์จะมา แต่มันก็หยุดและบอกว่าคำเตือน GCOnf ลูกค้าล้มเหลวในการเชื่อมต่อกับ D Bus Daemon และไม่ได้รับคำตอบ ....
Piyush Kumar

@PiyushKumar sudo apt-get install opencl-headersบางที หลังจากนั้นควรจะพบlibOpenCL.soแต่ฉันเคยมีปัญหาสำคัญในอดีตกับ Intel ล้มเหลวในการลงทะเบียนห้องสมุดและทำให้เกิดข้อผิดพลาดในการเชื่อมโยง
โทมัส

@Thomas จะลอง ... เดาว่าฉันสามารถใช้ประสบการณ์ของคุณได้
Piyush Kumar

คำตอบ:


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

แก้ไข makefile ให้มีลักษณะดังนี้:

all: capsbasic

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

clean:
    rm -f capsbasic

ไปแล้ว OpenCL ใช้งานได้ดีสำหรับตระกูลวิดีโอ Intel 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
ขอบคุณ แต่ตาม Intel พวกเขาไม่สนับสนุน OpenCL บน HD 4000 สำหรับ Linux: OpenCL SDK 1.2 สำหรับ Linux โดยไม่มี Xeon ใช่ไหม . การแสดงแบบไหนที่คุณได้รับ?
nealmcb

1
อ๊ะ - ตอนนี้ฉันเห็นแล้วว่า README.txt สำหรับ beignet อธิบายว่ามันเป็นทางเลือกของ OpenCL SDK ของ Intel ซึ่งรองรับ HD 4000 แน่นอนขอบคุณ !! โปรดทราบว่าmakeผู้ใช้จำเป็นต้องเรียกใช้งานจริงด้วย .... จำเป็นต้องเรียกใช้ldconfigหลักฐานของปัญหากับแพคเกจหรือไม่
nealmcb

2
การแสดงของ opencl นั้นค่อนข้างแย่และผิดพลาด รหัสที่ทำงานบนการใช้งาน opencl อื่น ๆ บางครั้งก็เกิดปัญหาหรือข้อผิดพลาดออก มันช่วยให้คุณสร้างสิ่งทดสอบเล็กน้อยโดยไม่ต้องไปที่เครื่องคำนวณ
RobotHumans

ฉันไม่คิดว่าการเพิ่มลงในพา ธ การค้นหาห้องสมุดของคุณเป็นปัญหากับห้องสมุด หากคุณใช้ OpenCL สมมุติว่าคุณมีความรู้ด้านเทคนิค โดยส่วนตัวฉันต้องการถ้าแพ็คเกจ OpenCL สามารถติดตั้งได้พร้อมกันทั้งหมดและคุณสามารถเปลี่ยนไลบรารี่ที่รวมอยู่ในพา ธ การค้นหาของคุณและรัน ldconfig อีกครั้งเพื่อชี้ไปยังอีกอันหนึ่ง สิ่งนี้อาจมีประโยชน์หากคุณมีกล่องทดสอบที่มี "ชิปเซ็ตวิดีโอ" ทั้ง 3 ยี่ห้อเป็นสภาพแวดล้อมในการทดสอบและคุณได้ทำการหาเกณฑ์มาตรฐานหรือทดสอบโค้ดของคุณตามเป้าหมายที่เป็นไปได้ทั้งหมด
RobotHumans

1
นั่นทำให้รู้สึก ฉันจะได้มากขึ้นบนกระดานกับสิ่งที่ชอบตบมันในจ็อคกี้อัพเดททางเลือกหรืออะไรก็ตาม สลับไลบรารีด้วยสิ่งที่ควรเปลี่ยนไลบรารีหรือไม่ แน่นอนว่ามันเป็นความคิดที่ดีสำหรับสถานการณ์ที่ไม่สามารถป้องกันได้
RobotHumans

0

ในการรวบรวมคุณต้องการคอมไพเลอร์เช่น gcc คุณสามารถดาวน์โหลด 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

และดูแลข้อผิดพลาดรันไทม์ที่คุณอาจได้รับ (รวมถึงการแก้ไขพา ธ ให้คุณ kernel.cl ฯลฯ )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.