ORCA v4をBash on Ubuntu on Windows (BoW)で使う

ORCAはv4からWindows版がCygwinを使うようになりました。一方Linux版のShared Libraryバージョンは、Windows 10に搭載されているBash on Ubuntu on Windows(以下BoWと省略)で動作するとされています。BoWがどういうものかは各所に専門家の解説がありますのでそちらを参照して頂ければと思いますが、POSIX互換環境の代表格であるCygwinに比べてパフォーマンスが高い(というかロスが少ない)というのが私の印象です。BoWは基本的にLinux環境そのままで、Windows環境に落としてきたLinuxバイナリをそのまま動作させられる(※全てではありません)のも非常に面白いです。

というわけで、BoW上でORCA v4のLinux版(Shared Library)を動作させる手順をご紹介したいと思います。

  • ORCAバイナリのパスは /mnt/c/orca  (Window上はC:\orcaですが、BoWでは/mnt以下にマウントされます)に、OpenMPIのインストール先は /usr/local として話を進めますが、各自の環境に合わせて読み替えてください
  • bashの作業ディレクトリはホーム(~)を想定しています

①BoWの導入

BoWは開発者向け機能に位置づけられていて、デフォルトでは入っていません。Googleで検索すると沢山出てきますが、例えばここ等を参考に環境設定をしてください。以降は特に断りが無ければbash上での操作になります。

②OpenMPIの導入

  1. コンパイラのインストール
    sudo apt-get install <パッケージ名>

    ※必要なのはbuild-essential, gcc, gfortran, g++, make

  2. ソースコードのダウンロード
    wget https://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.2.tar.gz
    tar -xzvf openmpi-2.0.2.tar.gz

     

  3. コンパイルとインストール
    cd openmpi-2.0.2
    ./configure -prefix=/usr/local
    make
    sudo make install

    ※かなり時間がかかりますので気長に待ちましょう

③環境変数設定

  1. BoW環境でのライブラリパス設定
    sudo vi /etc/ld.so.conf
    ldconfig

    2行足して「/usr/local/lib」と「/mnt/c/orca」を追記します。

  2. 実行ファイルのパス設定
    vi .profile
    source .profile

    PATHの中に「/mnt/c/orca」を追記します。
    ※例えばPATH=”/for/example:$PATH”と入っていたら、PATH=”/mnt/c/orca:/for/example:$PATH”にするような感じで
    ※Windows側のシステム環境変数PATHに「C:\orca」を追加しても動作します

④実行用スクリプトの整備(必要に応じて)

例えば以下のようなバッチファイルを作成すると、Windows上で入力ファイルのドラッグアンドドロップにより計算を実行できます。

@echo off
set filecount=0
echo.

:start
if '%1'=='' goto end

rem Windows⇔Bash(Ubuntu)パス変換ブロック
set input=%1
set drive=%input:~0,1%
set fpath=%~p1
set fname=%~n1
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set drive=%%drive:%%i=%%i%%
set drive=/mnt/%drive%
set fpath=%fpath:\=/%
set bashpath=%drive%%fpath%%fname%

rem プログラム実行ブロック
set /A filecount=%filecount%+1
cd /D %~dp1 > nul
echo.
echo 《 Job #%filecount% : %~n1 》
echo     start : %date% %time%
bash -c "/mnt/c/orca/orca %bashpath%.inp 1> %bashpath%.log 2> /mnt/c/orca/error.txt"
echo     finish : %date% %time%
echo.
shift
goto start

:end
pause
exit

※大文字を小文字に揃える部分はhttp://qiita.com/q1701/items/d81e51a64f41ca841da6#2-5をそのまま引用させて頂きました

 

Be the first to comment

Leave a Reply