金子邦彦研究室インストールUbuntu, WSL2OpenBLAS のインストール(Ubuntu 上)

OpenBLAS のインストール(Ubuntu 上)

OpenBLAS は,BLAS 実装.

URL: https://www.kkaneko.jp/tools/win/openblas.html

ソフトウェア等の利用条件は,利用者自身で確認下さい.

サイト内の関連ページ

BLAS の機能の概要

前準備

Ubuntu のシステム更新

UbuntuUbuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.

UbuntuUbuntu のインストールは別ページ »で説明

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

  1. OpenBLAS のウェブページを開く

    https://www.openblas.net/

  2. このウェブページで利用条件などを確認

    必ず、最新情報を確認すること

    [image]
  3. ソースコードのダウンロード
    cd /tmp
    rm -rf OpenBLAS
    git clone https://github.com/xianyi/OpenBLAS.git
    

    [image]

OpenBLAS のビルドとインストール(Ubuntu 上)

  1. 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
    

    [image]
  2. cmake の結果の確認

    Ubuntu での実行結果例

    [image]
  3. ビルドして,インストール
    make 
    sudo make install
    
  4. 結果の確認

    エラーメッセージが出ていないこと.

    [image]

ld.so.confの設定

スーパーユーザで、下記を実行

  1. /etc/ld.so.confに以下の行を追加

    -------------ここから-----------
    /usr/local/OpenBLAS/lib
    --------------ここまで---------
    
  2. 「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 で実行

[image]