Intel コンパイラ + MKL で R をビルド

ふつうの手順でできるので慣れていれば難しくはないと思う.メモ程度に.

前提として,コンパイラセットがインストールされていて,MKL を含め PATH や LD_LIBRARY_PATH が適切に設定されているものとする. なお,手元で実行した環境は icc 13.1.3 + MKL 11.0.5 + R 3.1.1.

config.site の編集

R ソースのルートディレクトリにある config.site を次のように編集して,Intel コンパイラツール一式を使うよう変更する.

#!/bin/sh
CC=icc
CFLAGS="-O2 -wd188 -ip -std=c99 -mieee-fp"
F77=ifort
FFLAGS="-O2 -mieee-fp -ip"
CXX=icpc
CXXFLAGS="-O2 -mieee-fp -ip"
FC=ifort
FCFLAGS="-O2 -mieee-fp -ip"
AR=xiar
LD=xild
LDFLAGS=
SHLIB_CXXLD=xild
SHLIB_CXXLDFLAGS=-shared

-ip は icc の最適化オプション. MKL に LD_LIBRARY_PATH が通っていなければ,LDFLAGS=”-L$MKLROOT/lib/intel64″ などとする.

なお,この設定だと Objective C のコンパイラは依然として gcc が使われるので,Objective C コードを含むパッケージをインストールしようとすると失敗するかもしれない. いちおう OBJC= でコンパイラを指定することもできるが,そもそも Objective C 向けの Intel コンパイラはないので,どのみち適当にあしらうしかない.

configure

BLAS および LAPACK として MKL を使うようにオプション指定する.

$ ./configure --enable-R-shlib --with-blas="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread" --with-lapack

MKL は環境によってリンクするライブラリが異なるが,何をリンクすればよいかは Intel Math Kernel Library Link Line Advisor を使って調べられる.

configure できたら,あとは make すればよい.

参考

2つ目のページは gcc + MKL で R をビルドする手順の解説.gcc でビルドする場合は,リンクする MKL ライブラリが libmkl_intel_lp64.so でなく libmkl_gf_lp64.so に代わる. この二つは double complex の扱いが異なる.詳細はこちら.

Intel コンパイラ + MKL で R をビルド」への3件のフィードバック

  1. 返信
  2. 返信
  3. 返信
    http://www./

    sustainable and repeatable small business is key to continued success. In an earlier post I asked Is Your Business Suffering Enough for You to Embrace Change? Well what if your business is thriving? Does this mean that you can kickback and let the money roll

コメントを残す

メールアドレスが公開されることはありません。