Mở cl trong intel


9

Làm cách nào để biên dịch và chạy mã cl mở trên bộ xử lý intel i5 có đơn vị intel hd 4000 gpu ??? Open cl đã được kết hợp trong / opt / intel / opencl và phiên bản trên Ubuntu 12.04. Bất kỳ trợ giúp sẽ được giúp đỡ rất nhiều ... Cảm ơn


Vấn đề gì bạn đang gặp phải?
Thomas

vì vậy trình giả lập này hoạt động cho intel ....
Piyush Kumar

@thomas, khi tôi đang chạy tệp, nó không tìm thấy bất kỳ tệp hoặc thư viện nào ... lỗi nói rằng không tìm thấy tệp hoặc thư mục CL / cl.h như vậy. Ngoài ra còn có một tệp có tên kernelBuilder, khi tôi đang cố thực thi nó, một dấu nhắc xuất hiện nhưng nó dừng lại và nói rằng cảnh báo GCOnf, máy khách không kết nối được với D bus Daemon và không nhận được phản hồi ....
Piyush Kumar

@PiyushKumar sudo apt-get install opencl-headerscó lẽ. Sau đó, nó sẽ tìm thấy libOpenCL.so, nhưng tôi đã gặp vấn đề lớn trong quá khứ với việc Intel không đăng ký thư viện và gây ra lỗi liên kết.
Thomas

@Thomas, sẽ thử nó ... Đoán tôi có thể sử dụng ur experiances
Piyush Kumar

Câu trả lời:


10

Đầu tiên:
sudo apt-get install beignet opencl-headers

Thêm thư mục beignet vào đường dẫn tìm kiếm thư viện của bạn:

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

Nhận một nhị phân thử nghiệm đơn giản:

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

Chỉnh sửa makefile để trông giống như thế này:

all: capsbasic

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

clean:
    rm -f capsbasic

Có bạn đi. OpenCL work-ish dành cho dòng card màn hình 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
Cảm ơn, nhưng theo Intel, họ không hỗ trợ OpenCL trên HD 4000 cho Linux: OpenCL SDK 1.2 cho Linux, không có Xeon? . Những loại hiệu suất bạn đang nhận được?
nealmcb

1
Aha - bây giờ tôi thấy rằng README.txt cho beignet giải thích rằng nó là một thay thế cho SDK OpenCL của Intel, thực sự hỗ trợ HD 4000. Xin cảm ơn !! Lưu ý rằng mọi người cũng phải thực sự chạy make.... Có cần phải chạy ldconfigbằng chứng về sự cố với gói không?
nealmcb

2
Hiệu suất, như opencl đi, là khá nghèo nàn và khá rối mắt. Mã chạy trên các triển khai opencl khác đôi khi chỉ gặp sự cố hoặc lỗi. Nó không cho phép bạn xây dựng những thứ thử nghiệm tầm thường mà không cần đẩy vào một giàn tính toán.
RobotHumans

Tôi không nghĩ rằng việc cần thêm nó vào đường dẫn tìm kiếm thư viện của bạn là một vấn đề với thư viện. Nếu bạn đang sử dụng OpenCL, giả định là bạn có một số bí quyết kỹ thuật. Cá nhân, tôi muốn nó nếu các gói OpenCL đều có thể cài đặt đồng thời và bạn có thể chuyển đổi thư viện nào được bao gồm trong đường dẫn tìm kiếm của bạn và chạy lại ldconfig để trỏ đến một gói khác. Điều này có thể hữu ích nếu bạn có một hộp thử nghiệm với cả 3 "nhãn hiệu" chipset như một môi trường thử nghiệm và bạn đã tìm ra cách để điểm chuẩn hoặc chỉ chạy thử mã của mình trên tất cả các mục tiêu có thể.
RobotHumans

1
Điều đó có ý nghĩa. Tôi sẽ có nhiều hơn trên tàu với một cái gì đó như tát nó trong trò chơi đua xe, thay thế cập nhật, hoặc bất cứ điều gì. Chuyển đổi thư viện với một cái gì đó được cho là để chuyển đổi thư viện? Chắc chắn, đó có vẻ là một ý tưởng tốt cho một tình huống không thể kiểm soát.
RobotHumans

0

Để biên dịch, bạn cần một trình biên dịch như gcc. Bạn có thể tải gcc từ kho lưu trữ của nó. (chọn số phiên bản lớn nhất để có thêm tính năng C ++ 11).

$> sudo apt-get cài đặt gcc-4.7

Sau đó, bạn phải liên kết thư viện OpenCL của mình với ứng dụng bạn đang biên dịch. Giả sử mã ứng dụng Máy chủ (main.c) và mã ứng dụng kernel (kernel.cl) nằm trong thư mục có tên là test. Bạn nên làm như sau:

$ test> gcc -I / opt / intel / bao gồm -L / opt / intel / lib / [x86 hoặc x86_64] / main.c -o a.out

Nó sẽ chăm sóc biên dịch. Bạn nên chạy đầu ra dưới dạng:

$ kiểm tra> ./ a.out

và quan tâm đến bất kỳ lỗi thời gian chạy nào bạn có thể gặp phải (bao gồm sửa đường dẫn đến kernel.cl, v.v.).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.