web-dev-qa-db-ja.com

ubuntu 16.04、Intel i5第7世代Dell InspironノートパソコンにOpenCLをインストールします

最近、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形式が自分のハードウェアに適しているのかわかりません。

どんなアドバイスでも本当に素晴らしいでしょう:)

2
AnirudhJ

わかりましたので、私はそれを理解しました。また、それはロケット科学ではありませんでした:/

リンク( OpenCL On ubuntu 16.04、Intel Sandy Bridge CP )Xeonマシンで作業していたので、前に続いていたのは完璧でした。明らかにXeonマシンではないので、私のラップトップでは動作しませんでした(大きな驚きです!)。

Linuxの場合は sdk を使用する必要がありましたが、これはフォームに記入した後に使用できます。フォームに記入すると、製品とバージョンを選択し、.gzファイルまたは.tgzファイルをダウンロードできるページにリダイレクトされます。 .tgzは Yocto OS用ですが、インストール中にUbuntu 16.04の一般化を失うことなく実行できます。

非常に便利な実行可能なinstall.shシェルスクリプトを使用するため、インストールは非常に簡単です。

一般的な手順は次のとおりです。

  1. フォルダーを抽出する

    tar -xzvf intel_sdk_for_opencl_2017_yocto_7.0.0.2567_x64.tgz
    
  2. シェルスクリプトを実行する

    ./install.sh
    
  3. 指示に従ってください

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
2
AnirudhJ

OpenCLをWindowsおよびLinuxで16時間以上動作させた後、 OpenCL On ubuntu 16.04では、Intel Sandy Bridge CP が動作するのに最も近いことに気付きました。

私にとってうまくいかなかったのは、ドライバーのインストールと構成からでした。その後、さらにいくつかの場所から試しました。ええ、バージョンは異なっていました。私はそれを可能な限り考慮に入れました。しかし、その後、ライブラリをインストールしてリンクするのは初めてでした。それで、これが私のような初心者に役立つことを願っています。インテルGPUについてのみ説明しました

OpenCLを機能させる

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の出力を毎回確認してください。上記の行が含まれている場合、完了です。

Intel OpenCLドライバーのインストール

それでもうまくいかない場合は、 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をインストールします

ここから 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-sa​​mples/blob/master/src/Chapter_3/OpenCLInfo/OpenCLInfo.cpp

クレジット:インターネット

1
digikar