インテルでclを開く


9

インテルHD 4000 GPUユニットを搭載したインテルi5プロセッサーでオープンCLコードをコンパイルして実行する方法??? Open clは/ opt / intel / openclおよびversionis ubuntu 12.04にインストールされています。どんな助けも大いに役立つでしょう...ありがとう


どのような問題が発生していますか?
トーマス

したがって、このエミュレータは....インテルのために働く
Piyush Kumar氏

@thomas、ファイルを実行しているときに、ファイルまたはライブラリが見つからない...エラーは、そのようなファイルまたはディレクトリCL / cl.hが見つからないことを示しています。また、kernelBuilderと呼ばれるファイルが1つあり、それを実行しようとすると、プロンプトが1つ表示されますが、停止して、GCOnf警告、クライアントがDバスデーモンに接続できず、応答を受信しなかったというメッセージが表示されます。–
Piyush Kumar

@PiyushKumar sudo apt-get install opencl-headersたぶん。その後、それはを見つけるはずですが、libOpenCL.so過去にIntelがライブラリを登録できず、リンクエラーが発生するという大きな問題がありました。
トーマス

@トーマス、試してみる...私はあなたの経験を使うことができると思います
Piyush Kumar 14年

回答:


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

どうぞ。インテルHDビデオファミリのOpenCL実用的...

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によると、彼らはLinuxのHD 4000でOpenCLをサポートしていません:XeonがないLinuxのOpenCL SDK 1.2?。どんなパフォーマンスを得ていますか?
nealmcb

1
Aha-beignetのREADME.txtは、それがIntelのOpenCL SDKの代替であり、実際にHD 4000をサポートしていることを説明していることがわかりました。ありがとうございます。人々makeも実際に実行する必要があることに注意してください... ldconfigパッケージの問題の証拠を実行する必要がありますか?
nealmcb 2015年

2
openclが行っているように、パフォーマンスはかなり低く、かなりグリッチです。他のopencl実装で実行されるコードは、クラッシュまたはエラーになる場合があります。コンピューティングリグにプッシュすることなく、簡単なテストを構築できます。
RobotHumans、2015年

ライブラリの検索パスに追加する必要があることは、ライブラリの問題ではないと思います。OpenCLを使用している場合は、技術的なノウハウがあることを前提としています。個人的には、OpenCLパッケージがすべて同時にインストール可能であり、検索パスに含まれているライブラリを切り替えて、ldconfigを再実行して別のライブラリを指すようにしたい場合は、これを希望します。これは、テスト環境として3つのビデオチップセット「ブランド」すべてを備えたテストボックスがあり、すべての可能なターゲットでコードをベンチマークまたは実行テストする方法を考え出した場合に役立ちます。
RobotHumans、2015年

1
それは理にかなっている。私は、騎手で叩いたり、アップデートの代わりにしたりするようなものでもっと乗り込むでしょう。ライブラリを切り替えることになっているものでライブラリを切り替えますか?確かに、それは耐えられない状況では良い考えのようです。
RobotHumans、2015年

0

コンパイルするには、gccなどのコンパイラが必要です。リポジトリからgccをダウンロードできます。(より多くのC ++ 11機能の最大バージョン番号を選択してください)。

$> sudo apt-get install gcc-4.7

その後、OpenCLライブラリをコンパイルするアプリケーションにリンクする必要があります。ホストアプリケーション(main.c)のコードとカーネルアプリケーション(kernel.cl)のコードがtestというフォルダーにあるとしましょう。次のようにする必要があります。

$ test> gcc -I / opt / intel / include -L / opt / intel / lib / [x86 or x86_64] / main.c -o a.out

コンパイルを処理する必要があります。次のように出力を実行する必要があります。

$ test> ./ a.out

発生する可能性のあるランタイムエラーに対処します(kernel.clへのパスの修正など)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.