最近、Intel i5第7世代プロセッサを搭載したDell Inspiron 3000シリーズラップトップを購入しました。マシンにはWindows 8がプリロードされていましたが、Ubuntuの支持者なので、Ubuntu 16.04をインストールしました。
私はラップトップでOpenCLを使用する必要があり、このスレッドにリストされている手順( OpenCL On ubuntu 16.04、Intel Sandy Bridge CP )を使用し、PyOpenCLをインストールしました(偶然、このスレッドは完全に機能しました) Xeonマシンがある職場のワークステーション用)
次のpythonスクリプト( https://github.com/benshope/PyOpenCL-Tutorial/blob/master/010_introspection.py )を使用して、ラップトップでこの出力を取得しました。
============================================================
OpenCL Platforms and Devices
============================================================
Platform - Name: Intel Gen OCL Driver
Platform - Vendor: Intel
Platform - Version: OpenCL 1.2 beignet 1.1.1
Platform - Profile: FULL_PROFILE
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)
ワークステーションで同じスクリプトを使用すると、次のことがわかります。
============================================================
Platform - Name: Intel(R) OpenCL
Platform - Vendor: Intel(R) Corporation
Platform - Version: OpenCL 2.0 LINUX
Platform - Profile: FULL_PROFILE
--------------------------------------------------------
Device - Name: Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
Device - Type: CPU
Device - Max Clock Speed: 2200 Mhz
Device - Compute Units: 24
Device - Local Memory: 32 KB
Device - Constant Memory: 128 KB
Device - Global Memory: 31 GB
Device - Max Buffer/Image Size: 8013 MB
Device - Max Work Group Size: 8192
lspciは私に与えます:
lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Device 5916 (rev 02)
(おそらく無関係なノートで、OpenCLを最初にインストールしようとしたときはそうではなかったグラフィックドライバーもラップトップにインストールしました)
基本的に、どのOpenCL形式が自分のハードウェアに適しているのかわかりません。
どんなアドバイスでも本当に素晴らしいでしょう:)
わかりましたので、私はそれを理解しました。また、それはロケット科学ではありませんでした:/
リンク( OpenCL On ubuntu 16.04、Intel Sandy Bridge CP )Xeonマシンで作業していたので、前に続いていたのは完璧でした。明らかにXeonマシンではないので、私のラップトップでは動作しませんでした(大きな驚きです!)。
Linuxの場合は sdk を使用する必要がありましたが、これはフォームに記入した後に使用できます。フォームに記入すると、製品とバージョンを選択し、.gzファイルまたは.tgzファイルをダウンロードできるページにリダイレクトされます。 .tgzは Yocto OS用ですが、インストール中にUbuntu 16.04の一般化を失うことなく実行できます。
非常に便利な実行可能なinstall.shシェルスクリプトを使用するため、インストールは非常に簡単です。
一般的な手順は次のとおりです。
フォルダーを抽出する
tar -xzvf intel_sdk_for_opencl_2017_yocto_7.0.0.2567_x64.tgz
シェルスクリプトを実行する
./install.sh
pythonスクリプトの出力は次のように表示されます。
============================================================
OpenCL Platforms and Devices
============================================================
Platform - Name: Intel Gen OCL Driver
Platform - Vendor: Intel
Platform - Version: OpenCL 1.2 beignet 1.1.1
Platform - Profile: FULL_PROFILE
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)
============================================================
Platform - Name: Experimental OpenCL 2.1 CPU Only Platform
Platform - Vendor: Intel(R) Corporation
Platform - Version: OpenCL 2.1 LINUX
Platform - Profile: FULL_PROFILE
--------------------------------------------------------
Device - Name: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
Device - Type: CPU
Device - Max Clock Speed: 2500 Mhz
Device - Compute Units: 4
Device - Local Memory: 32 KB
Device - Constant Memory: 128 KB
Device - Global Memory: 8 GB
Device - Max Buffer/Image Size: 1962 MB
Device - Max Work Group Size: 8192
============================================================
Platform - Name: Intel(R) OpenCL
Platform - Vendor: Intel(R) Corporation
Platform - Version: OpenCL 2.0
Platform - Profile: FULL_PROFILE
--------------------------------------------------------
Device - Name: Intel(R) HD Graphics
Device - Type: GPU
Device - Max Clock Speed: 1000 Mhz
Device - Compute Units: 23
Device - Local Memory: 64 KB
Device - Constant Memory: 3209904 KB
Device - Global Memory: 6 GB
Device - Max Buffer/Image Size: 3135 MB
Device - Max Work Group Size: 256
--------------------------------------------------------
Device - Name: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
Device - Type: CPU
Device - Max Clock Speed: 2500 Mhz
Device - Compute Units: 4
Device - Local Memory: 32 KB
Device - Constant Memory: 128 KB
Device - Global Memory: 8 GB
Device - Max Buffer/Image Size: 1962 MB
Device - Max Work Group Size: 8192
OpenCLをWindowsおよびLinuxで16時間以上動作させた後、 OpenCL On ubuntu 16.04では、Intel Sandy Bridge CP が動作するのに最も近いことに気付きました。
私にとってうまくいかなかったのは、ドライバーのインストールと構成からでした。その後、さらにいくつかの場所から試しました。ええ、バージョンは異なっていました。私はそれを可能な限り考慮に入れました。しかし、その後、ライブラリをインストールしてリンクするのは初めてでした。それで、これが私のような初心者に役立つことを願っています。インテルGPUについてのみ説明しました
Sudo apt install clinfo ocl-icd-opencl-dev opencl-headers
Clinfoの出力を確認します
clinfo | grep "GPU"
gPUが含まれているかどうかを確認します。次のような行がない場合
Device Type GPU
出力では、GPUはまだOpenCLをサポートしていません。その場合は、beignet-opencl-icd、mesa-opencl-icdなどをインストールしてみてください(一度に1つずつ)。 clinfo
の出力を毎回確認してください。上記の行が含まれている場合、完了です。
それでもうまくいかない場合は、 https://software.intel.com/en-us/articles/opencl-drivers#latest_linux_driver からインテルのopenclドライバーをインストールしてください。自動インストールには膨大な時間とスペースが必要です。ただし、別の方法があります。アーカイブを解凍します。まだインストールしていない場合は、エイリアンをインストールします:Sudo apt install alien
cd
を解凍したフォルダーに入れ、実行します
Sudo alien -i *.rpm
「clinfo」の出力をもう一度確認します。 GPUが必要です。 clinfo | grep“ GPU”
この時点で、OpenCLの実用的な実装が得られます。
ただし、サンプルを試してみると( here から)、ほとんどのサンプルはIntelのライブラリ(下記参照)で動作しますが、一部はディストリビューションと共にインストールされたライブラリ(上記でインストール)で動作しません。 (これは、関連するopenCLバージョンが異なるためだと思います。)
ここから Intel OpenCL SDK for Linux を使用して、Intel OpenCL SDK for Linuxを(無料で登録した後)インストールします。インストーラースクリプトを実行するだけです。Eclipseおよびすべてで動作するようにする部分に取り組む必要はありません。あなたがする必要があるかもしれません
Sudo apt install dkms
この時点で、すべての準備が整っているはずです。
Cプログラムのコンパイルプロセスを理解します。まず、オブジェクトファイルが生成され、次にリンクされます。 https://stackoverflow.com/questions/31179452/what-exactly-is-in-a-o-a-so-file を参照してください。
IDE(端末については知りません)には、ライブラリを扱う2つの部分があります。まず、ヘッダーファイルへのパスを含めます。 2つ目は、プロジェクトにライブラリファイルを含めることです。
CodeBlocksを使用しています。 Linuxが愛されている理由は、この回答の最初のコマンドがファイルを目的の場所に送信したためです。ヘッダーファイルは、「CL」フォルダーの下の/ usr/includeディレクトリーにあります。ライブラリ(私の場合)は/ usr/lib/x86_64-linux-gnuの下にあり、「libOpenCL.so」という名前です。それらを使用するためにこれ以上何もする必要はありません。コーディングを開始できます-
#include<CL/cl.h>
Intel OpenCL SDKの場合、ヘッダーファイルは/ opt/intel/opencl-sdk/includeの下にあります。ライブラリファイルは[インストール後]の下にありますが、/ opt/intel/openclの内容を確認してください。これらにもライブラリがあります。ただし、ライブラリファイルの1つに構文エラー(libclang.so)がありました。 Intel OpenCL SDKは、主に/ opt/intel/opencl-sdk/lib64-.soファイルのみのヘッダーファイル用にダウンロードされます。 (libclang.soファイルで構文エラーが発生していることがわかりました。プログラムの実行中に確認してください。)
CodeBlocksの場合、これらのIntelのファイル(デフォルト以外のファイル)を使用するには、新しいプロジェクトを作成します。 manager-subwindowでプロジェクトを右クリックします。 「ビルドオプション」に進みます。左ペインでプロジェクト名を選択します。したがって、設定はリリースバージョンとデバッグバージョンの両方に適用されます。 [リンカー設定]-> [リンクライブラリ]で、[追加]をクリックします。ここで、ライブラリ(ヘッダーファイルではなく、すべての.soファイル)を追加します:/ opt/intel/opencl-sdk/lib64 [検索ディレクトリ]タブの[コンパイラ]で、/ opt/intel/opencl/include(またはヘッダーファイルがある場所)を追加します。
Eclipseの場合、最初にCDTをインストールします。次に、プロジェクトを作成した後、[プロジェクト]-> [プロパティ]-> [C/C++ビルド]-> [設定]-> [ツール設定]で、(1)GCC C++コンパイラの下に、ヘッダーファイルディレクトリを追加します。 (2)GCC C++リンカーの[ライブラリ]セクションでOpenCLを追加し、下部の[ライブラリパス]セクションでパスを追加します。私の場合、それを機能させるには、最初の部分に/ opt/intel/opencl/includeを、2番目の部分に/ opt/intel/opencl/SDK/lib64を必要としました。 Codeblocksの場合のデフォルトは機能しませんでした。おそらく、そのバージョンが原因であるか、私が適切に試していない-Eclipseは私にとって新しいものです。
以下を実行してコンパイルする必要があります。 https://github.com/bgaster/opencl-book-samples/blob/master/src/Chapter_3/OpenCLInfo/OpenCLInfo.cpp
クレジット:インターネット