インテルのoneAPIのニュースとかは見ている方も多いかと思いますが、この流れで一番大きなインパクトは今まで高嶺の花だったIntel compilerが2021年になってから実質的に無料になってしまったということです。こうでもしないとNVIDIA1には対抗できないってことなんでしょうけど、このディープラーニングの思わぬ副産物に対して従来型HPCユーザーも恩恵にあずからずにいるわけにはいかないでしょう。
とりあえずCentOS8へのyum (dnf)を使ったインストールはとても簡単だったので、手順を紹介することにします。とりあえず本家のガイドはこちらから。やるのはyumのリポジトリを作ってinstallコマンドを打つだけです(root権限で行います)。
yumでBase kitを入れる
/etc/yum.repos.d/oneAPI.repo
を以下の内容で作ります
[oneAPI]
name=Intel(R) oneAPI repository
baseurl=https://yum.repos.intel.com/oneapi
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
リダイレクトとかやるよりviか何かでコピペしてしまった方が簡単でしょう。
あとは単に
# yum install intel-basekit
5回ぐらいy
を叩くと(それなりにでかいのですが)インストールが始まります。
インストールされたものを使うには(こちらは一般ユーザー権限で)
$ . /opt/intel/oneapi/setvars.sh
とします。この段階でicx
(C言語)とicpx
(C++)のコンパイラが利用可能になりますが、これは昔チョットお付き合いしたことのあるicc
/icpc
とは別系統なコンパイラのようです。
$ mpiicpc --help
/opt/intel/oneapi/mpi/2021.2.0//bin/mpiicpc: 行 530: icpc: コマンドが見つかりません
こんなことにもなったり。
HPC kitを入れて古いコンパイラも入れる
実は古い方のコンパイラはoneAPI HPC Toolkitに含まれるintel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
というパッケージの方で提供されているようです。インストールするには
# yum install intel-hpckit
こんな感じで以後
$ icpc --version
icpc (ICC) 2021.2.0 20210228
Copyright (C) 1985-2021 Intel Corporation. All rights reserved.
$ icpx --version
Intel(R) oneAPI DPC++ Compiler 2021.2.0 (2021.2.0.20210317)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/intel/oneapi/compiler/2021.2.0/linux/bin
のようになれば成功です。
ログ置き場
Basekitでは以下のものが入りました(3 column):
インストール済み:
intel-basekit-2021.2.0-2883.x86_64 intel-basekit-getting-started-2021.2.0-2883.noarch intel-oneapi-advisor-2021.2.0-189.x86_64
intel-oneapi-ccl-2021.2.0-2021.2.0-269.x86_64 intel-oneapi-ccl-devel-2021.2.0-2021.2.0-269.x86_64 intel-oneapi-ccl-devel-2021.2.0-269.x86_64
intel-oneapi-common-licensing-2021.2.0-195.noarch intel-oneapi-common-licensing-2021.2.0-2021.2.0-195.noarch intel-oneapi-common-vars-2021.2.0-195.noarch
intel-oneapi-compiler-cpp-eclipse-cfg-2021.2.0-610.noarch intel-oneapi-compiler-dpcpp-cpp-2021.2.0-2021.2.0-610.x86_64 intel-oneapi-compiler-dpcpp-cpp-2021.2.0-610.x86_64
intel-oneapi-compiler-dpcpp-cpp-common-2021.2.0-2021.2.0-610.noarch intel-oneapi-compiler-dpcpp-cpp-runtime-2021.2.0-2021.2.0-610.x86_64 intel-oneapi-compiler-dpcpp-eclipse-cfg-2021.2.0-610.noarch
intel-oneapi-compiler-shared-2021.2.0-2021.2.0-610.x86_64 intel-oneapi-compiler-shared-common-2021.2.0-2021.2.0-610.noarch intel-oneapi-compiler-shared-common-runtime-2021.2.0-2021.2.0-610.noarch
intel-oneapi-compiler-shared-runtime-2021.2.0-2021.2.0-610.x86_64 intel-oneapi-condaindex-2021.2.0-94.x86_64 intel-oneapi-dal-2021.2.0-2021.2.0-358.x86_64
intel-oneapi-dal-common-2021.2.0-2021.2.0-358.noarch intel-oneapi-dal-common-devel-2021.2.0-2021.2.0-358.noarch intel-oneapi-dal-devel-2021.2.0-2021.2.0-358.x86_64
intel-oneapi-dal-devel-2021.2.0-358.x86_64 intel-oneapi-dev-utilities-2021.2.0-2021.2.0-493.x86_64 intel-oneapi-dev-utilities-2021.2.0-493.x86_64
intel-oneapi-dev-utilities-eclipse-cfg-2021.2.0-493.noarch intel-oneapi-dnnl-2021.2.0-228.x86_64 intel-oneapi-dnnl-devel-2021.2.0-228.x86_64
intel-oneapi-dpcpp-cpp-2021.2.0-2021.2.0-610.x86_64 intel-oneapi-dpcpp-ct-2021.2.0-2021.2.0-222.x86_64 intel-oneapi-dpcpp-ct-2021.2.0-222.x86_64
intel-oneapi-dpcpp-ct-eclipse-cfg-2021.2.0-222.noarch intel-oneapi-dpcpp-debugger-10.1.1-10.1.1-80.x86_64 intel-oneapi-dpcpp-debugger-10.1.1-80.x86_64
intel-oneapi-dpcpp-debugger-eclipse-cfg-10.1.1-80.noarch intel-oneapi-ipp-2021.2.0-2021.2.0-233.x86_64 intel-oneapi-ipp-common-2021.2.0-2021.2.0-233.noarch
intel-oneapi-ipp-common-devel-2021.2.0-2021.2.0-233.noarch intel-oneapi-ipp-devel-2021.2.0-2021.2.0-233.x86_64 intel-oneapi-ipp-devel-2021.2.0-233.x86_64
intel-oneapi-ippcp-2021.2.0-2021.2.0-231.x86_64 intel-oneapi-ippcp-common-2021.2.0-2021.2.0-231.noarch intel-oneapi-ippcp-common-devel-2021.2.0-2021.2.0-231.noarch
intel-oneapi-ippcp-devel-2021.2.0-2021.2.0-231.x86_64 intel-oneapi-ippcp-devel-2021.2.0-231.x86_64 intel-oneapi-libdpstd-devel-2021.2.0-2021.2.0-245.x86_64
intel-oneapi-libdpstd-devel-2021.2.0-245.x86_64 intel-oneapi-mkl-2021.2.0-2021.2.0-296.x86_64 intel-oneapi-mkl-common-2021.2.0-2021.2.0-296.noarch
intel-oneapi-mkl-common-devel-2021.2.0-2021.2.0-296.noarch intel-oneapi-mkl-devel-2021.2.0-2021.2.0-296.x86_64 intel-oneapi-mkl-devel-2021.2.0-296.x86_64
intel-oneapi-mpi-2021.2.0-2021.2.0-215.x86_64 intel-oneapi-mpi-devel-2021.2.0-2021.2.0-215.x86_64 intel-oneapi-onevpl-2021.2.2-2021.2.2-212.x86_64
intel-oneapi-onevpl-devel-2021.2.2-2021.2.2-212.x86_64 intel-oneapi-onevpl-devel-2021.2.2-212.x86_64 intel-oneapi-openmp-2021.2.0-2021.2.0-610.x86_64
intel-oneapi-openmp-common-2021.2.0-2021.2.0-610.noarch intel-oneapi-python-2021.2.0-161.x86_64 intel-oneapi-tbb-2021.2.0-2021.2.0-357.x86_64
intel-oneapi-tbb-common-2021.2.0-2021.2.0-357.noarch intel-oneapi-tbb-common-devel-2021.2.0-2021.2.0-357.noarch intel-oneapi-tbb-devel-2021.2.0-2021.2.0-357.x86_64
intel-oneapi-tbb-devel-2021.2.0-357.x86_64 intel-oneapi-vtune-2021.2.0-263.x86_64
HPCkitで入ったのは以下になります(2 column):
インストール済み:
intel-hpckit-2021.2.0-2997.x86_64 intel-hpckit-getting-started-2021.2.0-2997.noarch
intel-oneapi-clck-2021.2.2-2021.2.2-315.x86_64 intel-oneapi-clck-2021.2.2-315.x86_64
intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.2.0-2021.2.0-610.x86_64 intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2021.2.0-610.x86_64
intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-common-2021.2.0-2021.2.0-610.noarch intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-runtime-2021.2.0-2021.2.0-610.x86_64
intel-oneapi-compiler-dpcpp-cpp-classic-fortran-shared-runtime-2021.2.0-2021.2.0-610.x86_64 intel-oneapi-compiler-fortran-2021.2.0-2021.2.0-610.x86_64
intel-oneapi-compiler-fortran-2021.2.0-610.x86_64 intel-oneapi-compiler-fortran-common-2021.2.0-2021.2.0-610.noarch
intel-oneapi-compiler-fortran-runtime-2021.2.0-2021.2.0-610.x86_64 intel-oneapi-inspector-2021.2.0-145.x86_64
intel-oneapi-itac-2021.2.0-152.x86_64 intel-oneapi-itac-2021.2.0-2021.2.0-152.x86_64
-
自社のGPUでしか動かないCUDAを有償提供にするとかTeslaでしかGPGPUできないようにするといったような有り得ない経営判断をするようなことのない会社だったというのが、今日の栄華の一旦ではあるのかと思います。ソフト部門に「自分で金稼いでこい」というハードウェア会社はやっぱ駄目々々だと思うんです。 ↩