OpenBLAS のインストール(Ubuntu 上)
OpenBLAS は,BLAS 実装.
URL: https://www.kkaneko.jp/tools/win/openblas.html
ソフトウェア等の利用条件は,利用者自身で確認下さい.
【サイト内の関連ページ】
BLAS の機能の概要
- Level 1 ベクトルとベクトルの演算
- DOT : 内積
- AXPY : AXPY 演算 ( y <- ax + y の形など)
- NORM : ノルム など
- Level 2 行列とベクトルと計算
- 行列とベクトルの積 ( y <- Ax )
- 行列の rank-1 更新 ( A <- A + xy' )
- Level 3 行列同士の演算
- 行列と行列の積 ( Z <- XY )
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.
sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now
C/C++ コンパイラー,make,パッケージツールのインストール(Ubuntu 上)
インストールするには,端末で,次のコマンドを実行する.
sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config
gfortrain のインストール(Ubuntu 上)
端末で,次のコマンドを実行する.
sudo apt -y update
sudo apt -y install gfortran
OpenBLAS のソースコードのダウンロード
【関連する外部ページ】 https://github.com/xianyi/OpenBLAS/wiki/Installation-Guide
- OpenBLAS のウェブページを開く
- このウェブページで利用条件などを確認
必ず、最新情報を確認すること
- ソースコードのダウンロード
cd /tmp rm -rf OpenBLAS git clone https://github.com/xianyi/OpenBLAS.git
OpenBLAS のビルドとインストール(Ubuntu 上)
- cmake の実行
https://github.com/xianyi/OpenBLAS/wiki/Installation-Guide の記述による
cd /tmp cd OpenBLAS rm -rf build mkdir build cd build rm -f CMakeCache.txt cmake .. \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_Fortran_COMPILER=gfortran \ -DNOFORTRAN=0 -DDYNAMIC_ARCH=OFF \ -DCMAKE_INSTALL_PREFIX="/usr/local/OpenBLAS" \ -DCMAKE_BUILD_TYPE=Release
- cmake の結果の確認
Ubuntu での実行結果例
- ビルドして,インストール
make sudo make install
- 結果の確認
エラーメッセージが出ていないこと.
ld.so.confの設定
スーパーユーザで、下記を実行
- /etc/ld.so.confに以下の行を追加
-------------ここから----------- /usr/local/OpenBLAS/lib --------------ここまで---------
- 「sudo /sbin/ldconfig」の実行
サンプルプログラム
OpenBLAS を用いて行列の積を求める.実行結果は何も表示されない.
#include<stdio.h>
#include<stdlib.h>
#include<cblas.h>
#define N 2000
int main()
{
// C = AB
int i;
double *A, *B, *C;
A = (double *)malloc(sizeof(double) * N * N);
B = (double *)malloc(sizeof(double) * N * N);
C = (double *)malloc(sizeof(double) * N * N);
for (i = 0; i < N * N; i++) {
A[i] = (double)rand() / RAND_MAX;
B[i] = (double)rand() / RAND_MAX;
}
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, N, N, N, 1.0, A, N, B, N, 0.0, C, N);
free(A);
free(B);
free(C);
return 0;
}
上のプログラムを hoge.c のようなファイル名で保存.
次コマンドでコンパイル
gcc -o a.out hoge.c -L/usr/local/OpenBLAS/lib -lopenblas -lpthread
./a.out で実行
