いろいろと苦労したのでメモ。
ORCAのパスはC:\orca (/mnt/c/orca)と仮定。
①必要なプログラムのインストール
OpenMPIが必須だが、Ubuntu 18.04 LTSならば
sudo apt-get install openmpi-bin
でver.2.1.1がインストールされる。OpenMPI v.2系統向けのバイナリであればこれで動く(公式にはver.2.1.5にlinkされたバイナリだが)。4.1.0で追加されたConfscriptを使う場合、gawkも必要。
②ライブラリのパス設定
sudo vi /etc/ld.so.conf
でORCAのパス(/mnt/c/orca)を追記。
sudo ldconfig
でライブラリリストを更新。
③実行ファイルのパス設定
ホームディレクトリに戻り、
vi .profile
に、以下のような要領でorcaのパスを追加。
PATH="/mnt/c/orca:$PATH"
source .profile
で変更を反映させる。
④OpenMPIのエラー対策
ORCAを並列で実行すると、Linux kernel CMA support was requested via the btl_vader_single_copy_mechanism MCA variable…とか何とかいうエラーを吐くことがある(私の環境ではOpenMPIがv.2系統でもv.3系統でも吐いた)。これを回避するためには、WSL環境でprocpsサービスを起動し維持する必要がある。
(4-1) ptrace_scope値の設定
sudo vi /etc/sysctl.d/10-ptrace.conf
で、kernel.yama.ptrace_scopeを1から0に変更。
(4-2) procpsサービス起動時のパスワード省略設定
sudo visudo
でsudoersファイルを開き、下記の3行目を追記する。
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL [WSL上のユーザー名] ALL=NOPASSWD: /etc/init.d/procps
(4-3) WSLでのprocps起動スクリプト設定
WSLのホームディレクトリに以下のシェルスクリプトを作成。
#!/bin/sh sudo /etc/init.d/procps start read INPUT
最後のread INPUTは、タスクのアクティブ状態を維持するために入れている。
(4-4) Windowsでのprocps起動スクリプト設定
Windowsのスタートアップフォルダ(C:\Users\WindowsユーザーID\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)に以下のVBSを格納。
set ws=wscript.createobject("wscript.shell") ws.run "C:\Windows\System32\bash.exe -c '~/startprocps.sh'",0
もう少しスマートな方法があるかもしれないが、以上の作業で、Windowsログオン時に水面下で(kernel.yama.ptrace_scope=0の設定で)procpsサービスが起動し、OpenMPIのエラーを回避できるようになる。回避せずとも計算自体は可能だが、回避したほうが明らかに安定してJobを走らせることができる(不慮の停止がほとんど起こらなくなる)。
【参考にしたWeb sites】
http://www.nwchem-sw.org/index.php/Special:AWCforum/st/id2939/mpirun_nwchem_on_Windows_Subsyst….html
https://pleiades.io/help/clion/attaching-to-local-process.html
https://qiita.com/RyodoTanaka/items/e9b15d579d17651650b7
Leave a Reply
コメントを投稿するにはログインしてください。