nAG Fortran コンパイラ(Arm-Mac版)でLAPACKをビルドする方法

本記事は、Arm-Mac版のnAG Fortranコンパイラを用いてnetlibに公開されているLAPACK(及びBLAS)をビルドする方法をご紹介します。

LAPACKとBLASの準備

(1)LAPACKの公式ページ(https://netlib.org/lapack/)より最新のLAPACKのソースコードをダウンロードします。
本ドキュメント作成時の最新はlapack-3.11.0.tar.gz
(2)ターミナルでダウンロードしたファイルを展開します。
tar xzf v3.11.0.tar.gz
(3)展開したフォルダへ移動します。
cd lapack-3.11.0
(4)make.inc.exampleというファイルをmake.incとして複製します。
cp make.inc.example make.inc
(5)make.incを編集します。以下の設定を行ってください: (ここでTIMER = INT_CPU_TIMEはもともと#が行頭についてコメントとなっていますが、その#を外してください。)
FC = nagfor
FFLAGS = -O2 -dcfuns -ieee=full -fpp
FFLAGS_DRV = $(FFLAGS)
FFLAGS_NOOPT = -O0 -dcfuns -ieee=full -fpp
TIMER = INT_CPU_TIME
(6)LAPACKとBLASライブラリをビルドします。
make install blaslib lapacklib
(7)正常にビルドが終われば、以下の2つのファイルが生成されます。
liblapack.a
librefblas.a

テストプログラムの作成

次に、動作の確認をするための簡単なテストプログラム(以下は連立方程式を解くコードです)を作成します。以下のコードをtest.f90という名前のファイルに保存してください:

program main
  implicit none
  integer, parameter :: n = 3
  integer info
  integer ipiv(n)
  double precision a(n, n), b(n)
  a = reshape( [ 33D0,  16D0,  72D0, &
                -24D0, -10D0, -57D0, &
                 -8D0,  -4D0, -17D0 ], [3,3], order=[2,1] )
  b = [ -359D0, 281D0, 85D0 ]
  call dgesv(n, 1, a, n, ipiv, b, n, info)
  print '((f9.4))', b
end program

テストプログラムのコンパイルと実行

(1)テストプログラムをコンパイルします:
nagfor test.f90 -L. -llapack -lrefblas
(2)テストプログラムを実行します:
./a.out
出力:
  1.0000
 -2.0000
 -5.0000
関連情報
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks