2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VisualStudioでLAPACKを使うならOpenBLAS

Posted at

概要

  • Windows & Visual Studio環境でのC++の開発においてLAPACKを使いたいときは、OpenBLASが簡単です。
  • OpenBLASという名前ですが、LAPACKの関数も実装されています。
  • 公式のgithubでコンパイル済みbinaryも配布されているので、ダウンロードして配置するだけで使えます。つまりインストール不要。

個人的な背景

Windows上でのアプリ開発にてLAPACKを使いたい場合、ソースを持ってきてコンパイルするにしても、面倒だなあという印象がありました。Visual Studioを使う場合には、FORTRANが使えなかったり、C系列の派生ソースを持ってきてもコンパイルが上手くいかなかったりしました。結局Intel MKLを使いたいだけのためにIntelコンパイラを導入するのが楽ですが、Visual Studioのエディタの動きがますます遅くなったり、ノートPCに入れるには容量が大きかったりします。

そんなとき、金子邦彦先生の以下のWebページを見つけました。

https://www.kkaneko.jp/tools/win/openblasvc.html

え?OpenBLASって名前なのにLAPACKも入ってるの?

OpenBLASの公式サイトや公式githubを見てみると、

https://www.openblas.net/

https://github.com/xianyi/OpenBLAS/

確かにLAPACKの実装も含まれている様子。

ただし、LAPACKも使えるようにソースからコンパイルするにはFORTRANコンパイラも必要なようです。Windows + Visual Studio環境だとFORTRANコンパイラの利用は難しいです。ですが、OpenBLAS公式がコンパイル済みのbinalyも配布してくれており、Visual Studioでリンクできるlibdllも配布されています。しかもLAPACKも含まれています。これは嬉しい!

使い方(簡単に)

インストールも必要ありません。公式からbinaryをダウンロードして解凍し、Visual Studioのプロジェクトのプロパティーを設定するだけです。

ダウンロード

まず、OpenBLAS公式のgithubのReleaseからOpenBLAS-0.3.21-x64.zipをダウンロードします(バージョンやx86など、環境に合わせて適宜読み替えてください)。

解凍すると、bin, include, libの三つのディレクトリが入っています。これらを適当な場所におきましょう。例として、Visual Studioのソリューション・プロジェクト名をMyAppとします。OpenBLAS-0.3.21-x64ディレクトリを次のように配置することにします。

repos
|-- MyApp
|   |-- MyApp.sln
|   |-- MyApp.vcxproj
|   |-- sources
|       |-- ...
|-- OpenBLAS-0.3.21-x64
    |-- bin
    |-- include
    |-- lib

Visual Studioの設定

次に、Visual Studioを立ち上げ、MyAppプロジェクトのプロパティーを設定します。

  1. Visual Studioのメニューから「プロジェクト」→「プロパティ」を選択して「MyAppプロパティ ページ」というウィンドウを開きます。
  2. 「構成プロパティー」→「VC++ ディレクトリ」→「インクルードディレクトリ」に../OpenBLAS-0.3.21-x64/includeを追加します。(「構成プロパティ」→「C/C++」→「全般」→「追加のインクルードディレクトリ」で可)
  3. 「構成プロパティー」→「VC++ ディレクトリ」→「ライブラリディレクトリ」に../OpenBLAS-0.3.21-x64/libを追加します。(「構成プロパティ」→「リンカー」→「全般」→「追加のライブラリディレクトリ」でも可)
  4. 「構成プロパティ」→「リンカー」→「入力」→「追加の依存ファイル」にlibopenblas.libを追加します。
  5. (これは無くてもいいかも)「構成プロパティー」→「VC++ ディレクトリ」→「実行可能ファイルディレクトリ」に../OpenBLAS-0.3.21-x64/binを追加します。

すでに別の内容が設定されているときは、セミコロン;区切りで追加します。

DLLの配置

自作のアプリMyApp.exeの実行時にはOpenBLASのDLLを読み込む必要があります。次のどちらかの方法で設定してください。

  • Windowsの環境変数のPath項目に、OpenBLAS-0.3.21-x64/binのフルパスを登録してください。フルパスなので、c:\...\...\...\OpenBLAS-0.3.21-x64\binなどとなるでしょう。
  • OpenBLAS-0.3.21-x64/binの中にあるlibopenblas.dllだけを、MyAppの実行ファイルと同じ場所にコピーします。デフォルトだとMyApp/x64/Release/になると思います。自作のアプリMyApp.exeを配布する場合にも、libopenblas.dllを同梱すればユーザーに環境変数の設定をしてもらう必要はありません。

これで、LAPACKを利用するプロジェクトのコンパイルが通るようになり、実行もできると思います。

感想

ありがとう OpenBLAS。ありがとう、金子邦彦先生。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?