プラグイン集

無料ブログはココログ
2021年8月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

サンプルJS

  • ユーロバカ一代の締切
    ・・・初期化中・・・

« ゲーム業界行けなかった私から言える事。 | トップページ | msys2のpacmanがdescなんてファイル無いと言った時の対応 »

2021年7月17日 (土)

Intel oneAPI をインストールした

Intel oneAPI とは、 Intel Parallel Studio XE の後継のコンパイラスイートである。
基本的には、C++コンパイラ、オプションで fortran コンパイラが20万円~買える。
付随ツールとしてプロファイルを作成する VTune や MKL 、 TBB と言った機能スイートがある。

ソフトの詳細は、日本の代理店である、エクセルソフトさんに詳細を譲る。

真面目に買ったらん百万単位のコンパイラスイートが何と、無料開放されたのだ。
URL: https://software.intel.com/content/www/us/en/develop/articles/free-intel-software-developer-tools.html

無料と聞いて正直信じられなかったが、URL見て、" Free for All Developers " 、「 全ての開発者の皆さんはご自由にお持ち下さい。 」だと。

規約をざっと確認したところ、普通のコンパイラスイートとそん色がない。
と言うか、エクセルソフトさんのIntel製品を取り扱っている価値がぶっ飛んでしまう。
有料版との差分は、日本語サポートの有無・サポート優先権・ダウングレード権、アップグレード権、SA権が無い、
コンパイラにバグがあってもしばらくそのまま、コンパイラに個人情報ブッコ抜き機能があったとしてもそのままで保証なしぐらい。
要するに、コンパイラをそのまま使うだけの、サンデー開発者にとっては全く気にする事でない部分しか、
パッケージソフトと違いが無いのだ・・・。
※いつ提供を終了するかもわからないし、いつ有料化して、既存のユーザーは金払えと言ってくるか分からないのはリスクではあるが・・・。

尚、 Intel oneAPI のフル機能を活用するのは難しい。
最低限、第9世代以降のIntel社製Core i シリーズのCPU( Celeronはダメよ。 )AVX2 や AVX512 が使える 、
Xeon であればスケーラブルプロセッサにDLBoostが付いていること、
FPGA、GPU をつかうのであれば、「 Iris Xe MAX  ( DG1 ) 」が入っていることが望ましい。
メモリもFPGA使用時は、64GBのRAMを要求されることもある。( 動作要件

ちなみに、手元のパソコンのCPUは Core i7 3520M ( 第3世代 )でかろうじてAVX無印に対応しているだけである。
よっぽど性能クリティカルな用事があるような場合でないと入れる意味が無い。

OSの要件は、LinuxのUbuntuであれば20.04.02を入れれば、そこまで難しくはなさそう。
一方、 CentOS が Stream になって以降、落ち着けない RedHat クローンはインストールが面倒なようだ。
Windows であれば、 Windows10 の細かい世代は要求していない。OSは64bit の必要があるが。
Visual Studio 2017 以降であれば、開発環境は問題ないようだ。

手元のパソコンの Windows10 21H1 なので試しに入れてみることができる。
多分、CPUの拡張命令を見ても速くなることはほぼないでしょう。
普通にGCCやVC++で事足りる。まぁ、それじゃ記事にする理由が無いのでね・・・。

インストールは特に迷う部分は無いが、長い。UAC制御の確認画面が上がってくるまでに2分ぐらいはかかる。
BaseToolkit のインストールにSSDで1時間は軽くかかった。
HPCToolKitも30分はかかったかな。

今のところシステムパスに変更を加えることはしないので、
iccとかifortだけでコンパイラを動かしたいのであれば、パスを手動で通す必要がありそうだ。
intelPythonも入っていて、バージョン情報は「 Python 3.7.10 :: Intel Corporation 」だった。
自分用の Pythonha3.8 使ってるんだけどな。パスの邪魔してないしまぁ、いいか。
iccコマンドはicxに代わっていて、バージョンは、「 Intel(R) oneAPI DPC++/C++ Compiler for applications running on Intel(R) 64, Version 2021.3.0 Build 20210619 」、
ifortはifxに代わっていて、バージョンは「Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2021.3.0 Beta Build 20210619 」だった。

パフォーマンステストは、実行していないので、とりあえずここまで。

2021年7月18日追記、
1000×1000の行列積計算を実行するプログラムを自分の手でPythonとC言語で組んで比較した。
時間測定範囲は、プログラム開始から終了までをmsys2の/usr/bin/time.exe -p で測定している。
行列の初期化から、解のチェックの時間までもちろん測定時間に含んでいる。

20210718_mutmul_speed_test

icc( Linux )、icl( Windows )の旧コンパイラが最速を記録した。
1秒程度で1000×1000の行列積の計算を終わらせてしまう。

VisualC++が20秒ぐらいで計算が終わるように行列サイズを調整したので、まぁ、こんなものだと思う。
mingwのgccは本来Linux系のところをWindows系バイナリを出力させているので、VC++より若干遅くて普通だと思う。
VC++もgccも-O2オプションでほぼ同タイムが出ているので、処理系にあったコンパイラの性能と言える。

iccがチート性能と言われるゆえんはこれで、単純コンパイルで1/20の実行時間ですよ。
圧倒的性能じゃないか。

一方でデータパラレルが、GCC -O2 、 VC++ -O2 レベルのスピードしか出ていない。
出来立てほやほやコンパイラだからこんなものか?
それとも、IvyBridgeじゃデータ並列の性能が出せないと言う事か?

Pythonの方に注目すると、Python2.7が速いのはちょっと意外。
Python3.8はかなり進化しているし、xrangeではなくrangeを使っているので、Python2.7の方が不利になるはずなのに。
さらに言えば、Python2.7は日本語処理の都合で、標準入出力・エラー出力の文字コード切り替え時間も含まれている。
それなのに、Python3.8より早いというのはやはり不思議だ。

残念なのはIntel Python3.7だろう。公式サイト
「Intel Distribution for Python
Develop fast, performant Python code with this set of essential computational packages including NumPy, SciPy, scikit-learn, and more. 」
翻訳、
「Intel 配布の Python
高速開発、高性能Pythonコード(基本計算パッケージ Numpy、Scipy、Scikit-learnとその他を含む)。」
って言ってるのに。
ん!!翻訳してみると、高速なのは開発であって、計算速度が高速とは言ってない??
ん~、そう言う事にしておこうか。

一応、各ソースコードを添付する。CとPython大きい違いは、引数処理の違いがある。
C言語のgetoptはUnistd.hなので、Windowsでは使えない。
コマンドライン引数処理がC言語の方が軽くなっている。
それ以外の基本的な計算コードに差は無い(と思いたい)。

Pythonコード:ダウンロード - matmul.py

Cコード:ダウンロード - matmul.c

ハイパフォーマンスコンピューティングをかじっている人なら、最適化なしのオーソドックスな行列積計算コードだと分かると思う。
これをチューニングすれば、数倍早くなるが、サンデープログラマが普通にコーディングすればこうなると思う。

以上、2021年7月18日追記部分。

« ゲーム業界行けなかった私から言える事。 | トップページ | msys2のpacmanがdescなんてファイル無いと言った時の対応 »

プログラミング」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ゲーム業界行けなかった私から言える事。 | トップページ | msys2のpacmanがdescなんてファイル無いと言った時の対応 »