【試験研究】NewPort社製 光パワーメーター 843-R

はじめに

ひょんなことから、NewPort社製の光パワーメーター Model 843-Rを入手しました。 メモを書きます。

NewPort社はアメリカの会社で、光学実験台などの製品をいろいろな研究機関で目にします。 日本の総代理店は日本レーザー(ジャパンレーザー)です。 "Power Meter Model 843-R-USB" は、2024年1月段階でも現役のようで、HPを見ると税抜249,000円です。 eBayでは中古品が550USDぐらいで出回っています。 青色のNewPortカラーがカッコいい光パワーメーターです。

外見

  • ディスプレイのついたハンドヘルド型
  • 上面に、ディテクタ接続端子としてDSUBにBNCがついたものがある。その両脇に、USB-MicroBコネクタとACアダプタのコネクタ、そして"ANOUT" と書かれたアナログ出力がある。
  • ディテクタは、818-ST2がついていた。厚さ5mmの薄型。818-ST2-UVでも、818-ST2-IRでもないので、可視光用。400-1100nmが測定レンジ。税抜161,000円する。

NewPort Power Meter Model 843-R front

NewPort Power Meter Model 843-R top

NewPort Photodetector 818-ST2

特徴

  • 内蔵バッテリがある。12V 2AのACアダプタでチャージする。
  • 側面がゴムになっていて、持ちやすい。
  • ディテクタは設定で変更するのではなく、メーカーによる校正データとともに埋め込まれる形。ユーザーは変更できない。この本体には、818-ST2がついていた。シリコンフォトダイオード
  • ディテクタ測定波長は、400, 750, 1100から選べるようになっている。
  • 平均化機能は 1, 3, 10, 30 sec, 1, 5, 10, 30 min, 1hから選べる。
  • 商用周波数を50/60Hzから選べるようになっている。電池電源からではなく、ACアダプタからも給電されるので、そこからのノイズを除去するためか。
  • [設定]>[フィルタ]の「フィルタ」とは、attenuation filter (減光フィルタ) の意味です。ディテクタには1/1000にするフィルタがあり、これを入れたときはここを "IN" にします。外した時は "OUT" にします。IN/OUTを切り替えると、値がほぼ3桁変化します。減光フィルタはNDフィルタでしょうが、厳密には波長依存性があります。恐らくですが、この波長依存性を込みで校正してくれているのだと思います。

ファームウェアアップデート

 ファームウェアのバージョンが古かったのでアップデートしました。

  1. NewPortのサイトから、"843-R Firmware Version 1.56 (11MB, ZIP)"をダウンロードします。ファイル名は "843-R_Ver156.zip" でした。
  2. 解凍(普通のWindowsなら上記のzipファイルをダブルクリックするだけ)して、デスクトップなどに "843-R_Ver156.exe" をコピーします。
  3. 843-R_Ver156.exe をダブルクリックして実行します。Windows.NET Framework 4がなければダウンロードしてインストールする必要があります。.NET Frameworkとは、WindowsGUI関係のライブラリです。
  4. ファームウェアをアップロードします。手順は下記のとおりです。("843-R-Field-Upgrade-Instructions.pdf" に書かれていますが…)
  5. 843-Rの電源をオフにする。電源ボタン(中央下の丸いボタン)を長押しします。マニュアルには5秒とか書かれていますが、2秒ほどで電源が切れます。
  6. USBケーブルをPCと接続します。Type-AとMicro Bです。
  7. [Next] をクリックします。
  8. 843Rのディスプレイの下に並んだ4つ並んだボタンのうち、右から2つ目を押しながら、電源を入れます。
  9. 検出器を見つけたというメッセージが出て、ファームウェアが転送されます。しばらく待ちます。"Firmware upgrade in progress" と表示されます。
  10. もう一度電源ボタンを押して、[Exit]をクリックします。
  11. 10秒ほど待ってから電源ボタンを入れます。
  12. 「次回校正日」というメッセージが出ます。センサの校正期限が過ぎたので、メンテに出しなさいと言うことです。843-Rの右端のボタン(続ける)を押します。
  13. 843-Rの右から2番目のボタンを押して、右上にあるファームウェアバージョンを確認します。"843-R 1.56" になっていました。

【雑記】中島みゆき「心音/有謬の者共」

2023年9月13日発売の中島みゆきさんのシングルCD、「心音/有謬の者共」(しんおん/うびゅうのものども)を買いました。このブログを書いているのは10月下旬です。普段は「心音」をYoutubeで聴いていたのですが、「有謬の者共」がYoutubeで公開されたときに、もうちょっといい音でリピートして聴きたくなりました。Amazonの特典であるメガジャケがなくなる前にと思い、急いでCDを購入したという次第です。ポスターを貼るのがためらわれる年齢の私にとって、Amazonのメガジャケはうれしい特典です。ジャケットの絵は宣伝に使われているものだったこともあって、新たな感激はありませんでした。しかし、CDを紙ケースから取り出したあと、CDのポリカーボネートの面に描かれているイラストの美しさにはっとし、縦書きの楽曲名にこだわりを感じました。手に取りたくなるCDといったところです。

 このCDに収録されている楽曲は、『アリスとテレスのまぼろし工場』というアニメーション映画の主題歌として制作されたものです。この映画はMAPPAというアニメ制作会社の初オリジナル作品です。MAPPAという制作会社は、「この世界の片隅に(2016年)」というアニメーション作品で名が知られるようになった会社です。とても丁寧な作りをする制作会社というのが私の印象です。原作・脚本・監督は岡田麿里さん。機動戦士ガンダム鉄血のオルフェンズ (2015年) という、ガンダムシリーズの中でも、記憶に残る作品を手掛けられた方です。

 映画の内容を雑駁に紹介すると、製鉄所の事故によって、ある街全体が閉じられた空間となってしまいます。物理的にも社会システム的にもおかしくなってしまった街で生きる人たちの人間模様を描いた作品です。おかしいと思ったら、疑問をもったら、そのまま踊らされるのではなく、各人が信じる方向を大事にしなさいというのが、作品が描こうとしている大まかな内容でしょうか。「心音」を聞きなさい、というわけです。こだわって描かれている、美しいシーンがいくつもあり、純文学に類するアニメーション作品だなあというのが見終わった直後の私の感想です。セカイ系とはちょっと違うように思います。最後のカーチェイスは冗長だったなと思わなくはないしですが、全体に記憶に残る良い作品でした。映画では、閉じられた街にいる主人公と、その外にある正常な現実世界の主人公がだぶって現れます。この作品を考えるときのポイントは、この辺にありそうです。

 さて、この「心音」という楽曲は、映画の本編が終わってから流れます。まるで映画の内容をかみしめて下さいと訴えかけてくるように流れてきます。「味方だろうか、悪意だろうか」は「味方と敵」ではなく「味方と悪意」で対比させ、「でも聞こえてしまったんだ/僕の中の心音」に続き、「僕は本当の僕へと 祈りのように叫ぶだろう」と、「本当の僕」という言葉が、ストーリーとつながるようにも、独立したようにも聞こえる歌詞につながっていきます。映画の内容を引き締めてくれる歌詞と楽曲、歌唱です。

 「有謬の者共」は、タイアップ曲としてCDに収録されており、劇中では流れませんでした。「有謬」という言葉は中島みゆきさんの造語かもしれません。しかし、「無謬」が「誤りのないこと」という意味ですから、その反対ということは容易に分かります。この曲の歌詞にある「間違うのがニンゲン」というフレーズは、映画の作中で、皆を間違った方向に導いた佐上衛というキャラクターのことを表現したのでしょう。作中では悪役扱いですが、彼がとった行動は、悪い方向へ導こうと思っての行動ではありません。映画の中で対立軸となった双方の立場にコメントしようとする、やさしい考えの楽曲のペアとなっています。

 映画の興行収入は上がっていないようですが、作品のクオリティは高いです。ブルーレイが出たら買うと思います。

 以上が映画を見てから、映画の主題歌という内容に即した「心音」の感想です。ここから、映画からは少し距離をおいたとき、と言いますか、映画を見る前にYoutubeで公開されていたときに聞いたこの歌についての感想です。

 「味方だろうか、悪意だろうか」というところの対比にまず気づきます。昔読んだ本に、批判的なことを言われても、それが悪意なのかどうかは考えなければならないとあったのを思い出しました。さらには「ひりつく日々も、眩しい日々も、閉じ込める夜」と、悪意の可能性、悪意でない可能性、疑うことへのある種の怖れを抱きながら、「誰も触れない、誰も問わない、時は進まない」という具合に、周囲が黙っているのでとりあえず黙っておいて流されていっている現状への認識を嘆息します。これは現代的な集団心理です。何か主張すると攻撃されるかもしれないから、黙って集団に埋没しておこうというわけです。たとえそれが正しく、素晴らしい主張であっても、です。そこで主人公は「でも聞こえてしまったんだ/僕の中の心音」と、自らの中に沸き起こった違和感への答えを「心音」という言葉で反映させます。さらに、巧みに隠された悪意や、黙っておいて責任から逃れようとするこの立場を「綺麗で醜い嘘たちを」と表現し、「僕はここで抱き留めながら/僕は本当の僕へと/祈りのように叫ぶだろう」と続けます。ここで、「僕」は「本当の僕」との2人に分裂します。両者は同一の肉体をもつ者なのか。そして「未来へ/未来へ/君だけでゆけ」と、もう一人の「僕」に言うわけです。前者の「僕」は醜い嘘をその身に受けていずれ滅びるが、後者の「僕」は醜い嘘が取り払われた未来へ進みなさい、ならば両者は別なのか?という疑問が湧きます。映画を見た後なら、「君」は「五実(いつみ)」のことだと思われますが、歌詞だけ見ればどうなのでしょう。

 現在、昭和に活躍した人たちが次々にこの世を去るという形で、昭和が消え去っていっています。さまざまな軛が外されつつあります。昭和世代には、現在の社会を作った功績もありますが、あまりにも大きな多くの問題点を後の世代に残置しようとしていることも事実です。年配の方々の中には、今の日本が豊かなのは誰のおかげだ、と主張する方もおられますが、さまざまな問題点を整理してからこの世を去りたいと思っておられる方もいます。中島みゆきさんについては、アルバム「組曲」の「空がある限り」あたりから、嘆きというよりも訴えが明確に感じられるようになったと思います。「心音」の歌詞に返ります。2番の歌詞では「ほころびつつある世界の/瀬戸際で愛を振り絞り」「僕は現実の僕へと/願いのように叫ぶだろう」となっています。「僕」と「現実の僕」に分裂しています。やはり、この楽曲、ひいては映画を感じるためには、二人の「僕」は同一の「僕」なのかを、考える必要があります。興味深い歌詞です。

【試験研究】第一原理計算セットアップ(3):サポートプログラムのインストール (Intel Compilers, wannier90, HDF5, libxc, etc.), (3) installing support programs and libraries for VASP 6.4.2

概要

 vaspをコンパイルするために必要なソフトウェアのインストールを行う。

  • Intel Compilers: intel oneAPI
  • HDF5
  • wannier90
  • libxc
  • libbeef

コンパイラインストール

Intel oneAPI

IntelコンパイラIntel oneAPIというものに統合されており、無料でダウンロード、インストール、運用できるようになっていた。 これまでIntelコンパイラは、有料だったり、学生だけ無料だったり、お試し期間中無料だったりいろいろあったが、完全無料になったようである。 有料のものもあって、「商用優先サポート」が受けられるようです。 ダウンロード先は、Vaspwikiの上記のInstalling_VASP.6.X.Xにあります。 検索しても容易にでてくる。 また、Ubuntuの場合はaptでも入れることができます。aptで入れてもインストーラーは起動するようなので、ダウンロードしても同じのようです。

www.intel.com

Intel GPU Driversのインストール

oneAPI toolkitのインストールのときにWarningが出るので、先に Intel GPU Driversを入れておく。IntelのArcというGPUのドライバーであるが、 将来必要になるかもしれないのと、Warningは気持ち悪いので入れておく。 Instllation guideはこちら。 このページ、Google Chromeだと表示がおかしくなるのだが、Microsoft Edgeなら正常に表示される。 でも、クリックすると崩れてくる。困ったもんだ。 ここのUbuntu (20.04以上) のstableバージョンをインストールする。 方法は、Intel GPU Driver Installation guideの該当セクションに書かれているとおり。

sudo apt install -y gpg-agent wget
wget -qO - https://repositories.intel.com/graphics/intel-graphics.key | sudo gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/graphics/ubuntu focal main' |  sudo tee -a /etc/apt/sources.list.d/intel.list

のあと、

sudo apt update
sudo apt dist-upgrade
sudo apt install intel-opencl-icd intel-level-zero-gpu level-zero intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2
sudo apt install libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev level-zero-dev

とする。4行目(最後の行)は開発者パッケージだが、念のため入れておく。

Intel oneAPI インストール

下記の2つのファイルをダウンロードし、インストールする。MPI, MKLはHPCKitに入っている。

sudo sh l_BaseKit_p_2023.2.0.49397_offline.sh
sudo sh l_HPCKit_p_2023.2.0.49440_offline.sh

キャラクタ端末 (Putty, Teraterm使用時) で操作する場合には、[tab]で項目移動、[space] でチェックON/OFF、[Enter]で確定という操作となる。

BaseKit

下記のパッケージがインストールされる。

 WHAT'S INCLUDED:
    - Intel® DPC++ Compatibility Tool (2023.2.0)                               X
    - Intel® Distribution for GDB* (2023.2.0)                                  |
    - Intel® oneAPI DPC++ Library (2022.2.0)                                   |
    - Intel® oneAPI Threading Building Blocks (2021.10.0)                      |
    - Intel® oneAPI Collective Communications Library (2021.10.0)              |
    - Intel® oneAPI DPC++/C++ Compiler (2023.2.0)                              |

  INSTALLATION LOCATION: /opt/intel/oneapi
  SPACE REQUIRED TO INSTALL: 25.6 GB      SPACE REQUIRED TO DOWNLOAD: 0 Bytes
  CAN INTEGRATE WITH: Eclipse*.
  Intel® Software Installer:  4.3.2.892
  • Eclipseはサポートなしを選んだ ([X] Skip Eclipse* IDE Configuration とした。Eclipseをインストールしていないから。)。
  • Intelに情報は送信しないという選択肢を選んだ ( [x] I do NOT consent to the collection of my information とした。これはどちらでもいい。)。

HPCkit

下記のパッケージがインストールされる。

 WHAT'S INCLUDED:
    - Intel® Inspector (2023.2.0)
    - Intel® Trace Analyzer and Collector (2021.10.0)
    - Intel® MPI Library (2021.10.0)
    - Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic (2023.2.0)
    - Intel® Fortran Compiler & Intel® Fortran Compiler Classic (2023.2.0)
  INSTALLATION LOCATION: /opt/intel/oneapi
  SPACE REQUIRED TO INSTALL: 1.4 GB      SPACE REQUIRED TO DOWNLOAD: 0 Bytes
  CAN INTEGRATE WITH: Eclipse*.
  Intel® Software Installer:  4.3.2.892

上記のリストの中にMKL (Intel Math Kernel Library) がない!と思っていたら、どれかに入っていたみたいです。 /opt/intel/oneapi/mklがあるし、環境変数MKLROOTも設定されている。

環境設定

.bashrcの最後の行に、"source /opt/intel/oneapi/setvars.sh" を追加して環境設定する。1行目のulimit -s unlimitedは、スタックサイズを無制限にする設定。これをやっておかないと、スーパーセルの計算でsegmentation faultが出る。2行目がIntel Compiler関係の設定をするシェルスクリプト。これまでのIntel Compilerと同様のノリである。

# VASP
ulimit -s unlimited
source /opt/intel/oneapi/setvars.sh

oneAPIのアンインストール (おまけ)

下記を実行すると、Intel oneAPIがアンインストールできる。

sudo rm -rf /opt/intel/*
sudo rm -rf /var/intel/*

サポートプログラムのインストール

HDF5

HDFはHierarchical Data Formatの略称である。

  • HDF5のHPに移動して、ユーザー登録(無料)する。
  • HDF5は、ubuntuならaptで入るが、Fortranでuse hdf5するときにエラーになる。同じコンパイラで生成したかどうかが問題になるようだ。
  • ソースファイルをダウンロードする。最初に、zlib, szipをインストールする。
  • 以下、ダウンロード後の手順。インストールディレクトリは/usr/local/の下。HDF5はvaspオンリーのものではなさそうなので、/usr/local/vaspの下には置かなかった。
wget http://www.zlib.net/zlib-1.3.tar.gz
tar zxvf zlib-1.3.tar.gz
cd  cd zlib-1.3
./configure --prefix=/usr/local
make
sudo make install
cd ..
wget  wget https://support.hdfgroup.org/ftp/lib-external/szip/2.1.1/src/szip-2.1.1.tar.gz
tar zxvf szip-2.1.1.tar.gz
cd szip-2.1.1/
./configure --prefix=/usr/local
make
sudo make install
cd ..
tar zxvf hdf5-1.14.2.tar.gz
cd hdf5-1.14.2
FC=ifort ./configure --prefix=/usr/local/hdf5-1.14.2  --enable-fortran --enable-cxx --with-szlib=/usr/local
make
make check
sudo bash
source /opt/intel/oneapi/setvars.sh
make install
make check-install
exit
  • 最後に、LD_LIBRARY_PATHの設定をする。
export LD_LIBRARY_PATH=/usr/local/hdf5-1.14.2/lib:/usr/local/lib:$LD_LIBRARY_PATH

wannier90

  • これはvasp.5.4のときから使っていたので入れておきます。
  • wanner90のサイトから最新版をダウンロードする。
  • デフォルトのままだとmpi版が生成される。これを使うと、vaspのtest_allのCo_2E4W_Tというテストのwannier90のところでフリーズする。非パラレル版を生成する。
  • 以下、非パラレル版のインストール手順。
tar zxvf wannier90-3.1.0.tar.gz
cd wannier90-3.1.0
cp config/make.inc.ifort make.inc

としておいて、make.incを修正。下記はmake.incの全体。

#=====================================================
# For Linux with intel version 11/12 on 64bit machines
#=====================================================
F90 = ifort
#COMMS=mpi
#MPIF90=mpiifort
MPIF90=ifort
FCOPTS=-O2
LDOPTS=-O2

#========================================================
# Intel mkl libraries. Set LIBPATH if not in default path
#========================================================

LIBDIR =  /opt/intel/oneapi/mkl/latest/lib/intel64
LIBS   =  -L$(LIBDIR) -lmkl_core -lmkl_intel_lp64 -lmkl_sequential -lpthread

#=======================
# ATLAS Blas and LAPACK
#=======================
#LIBDIR = /usr/local/lib
#LIBS = -L$(LIBDIR)  -llapack -lf77blas -lcblas -latlas

そしてコンパイルして出来上がりです。再度やる時は、make cleanすること。

make
make lib
mkdir /usr/local/vasp/tools
mkdir /usr/local/vasp/tools/lib
cp libwannier.a /usr/local/vasp/tools/lib
cp wannier90.x /usr/local/vasp/tools
cp postw90.x /usr/local/vasp/tools

libbeef

  • とりあえず入れておくだけ。
  • githubにあるlibbeefのサイトから最新版をダウンロードする。[CODE]>{Download ZIP]から。2023年10月現在、6年ぐらいメンテされてない感じ。
  • 以下手順。デフォルトでは、/usr/local/libにインストールされる。ここでは、/usr/local/vasp/toolsにインストールする。toolsディレクトリはなければmkdirする。
unzip libbeef-master.zip
cd libbeef-master
./configure --prefix=/usr/local/vasp/tools
make
make install

libxc

  • とりあえずインストールしておく。交換相互作用の計算をしてくれて、並列性が高くなると高速化するらしい。しかし、HPCという会社が紹介している検証結果によると、それによるとそれほどありがたいものではなさそう。
  • 最新版をここからダウンロード。wgetで取ると、ファイル名がおかしくなる。phpスクリプトが悪い。Windowsでダウンロードすると、「安全でないダウンロードがブロックされました」となるので、手動で[保存]とする。結局、Windowsでダウンロードして、FTPで送った。
  • vasp本体をIntel Fortranコンパイルするならば、icc, ifortを指定してconfigureしないとコンパイル時にエラーが出る。icc, ifortはicx, ifxに名前が変わる予定だが、libxc-6.2.2のconfigureはicx, ifxを知らないので、これらを指定してもはじかれる。なお、iccを使うと、いちいちiccは使えなくなりますというreminderが出るのでうっとおしい。抑制するオプションをつければいいが面倒なのでパス。
  • VASPに組み込むには--disable-fhcを入れないとだめなのだが、入れると下記にあるlibxcのmake checkでFAILが1つでます。
  • 以下手順。/usr/local/vasp/toolsはなければmkdirする。
tar zxvf libxc-6.2.2.tar.gz
cd libxc-6.2.2
CC=icc FC=ifort ./configure --prefix=/usr/local/vasp/tools --disable-fhc
make
make check
make install

【試験研究】第一原理計算セットアップ(5):VASP.5.4.4.pl2のコンパイル(Intel Fortran版), (5) VASP 5.4.4.pl2 compile by Intel oneAPI

概要

 VASP5.4.4で十分な計算もあるので、インストールしておくことにした。MPI並列化版。 あっさりとバイナリが生成でき、それなりの速さで、過去に実行したことのある計算が高速に行えた。

インストール手順

  • Intel oneAPI BaseKit 2023.2, HPCKit 2023.2をインストール
  • wannier90-3.1.0をインストール
tar zxvf vasp.5.4.4.pl2.tgz
cd vasp.5.4.4.pl2
cp arch/makefile.include.linux_intel makefile.include

としておいて、makefile.includeを編集。下記のとおり。

# Precompiler options
CPP_OPTIONS= -DHOST=\"LinuxIFC\"\
             -DMPI -DMPI_BLOCK=8000 \
             -Duse_collective \
             -DscaLAPACK \
             -DCACHE_SIZE=4000 \
             -Davoidalloc \
             -Duse_bse_te \
             -Dtbdyn \
             -Duse_shmem \
             -DVASP2WANNIER90

CPP        = fpp -f_com=no -free -w0  $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)

FC         = mpiifort
FCL        = mpiifort -qmkl=sequential -lstdc++

FREE       = -free -names lowercase

FFLAGS     = -assume byterecl -w
OFLAG      = -O2
OFLAG_IN   = $(OFLAG)
DEBUG      = -O0

MKL_PATH   = $(MKLROOT)/lib/intel64
BLAS       =
LAPACK     =
BLACS      = -lmkl_blacs_intelmpi_lp64
SCALAPACK  = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)

OBJECTS    = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o

INCS       =-I$(MKLROOT)/include/fftw

LLIBS      = $(SCALAPACK) $(LAPACK) $(BLAS) /usr/local/vasp/tools/lib/libwannier.a


OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
OBJECTS_O2 += fft3dlib.o

# For what used to be vasp.5.lib
CPP_LIB    = $(CPP)
FC_LIB     = $(FC)
CC_LIB     = icc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB   = $(FREE)

OBJECTS_LIB= linpack_double.o getshmem.o

# For the parser library
CXX_PARS   = icpc

LIBS       += parser
LLIBS      += -Lparser -lparser -lstdc++

# Normally no need to change this
SRCDIR     = ../../src
BINDIR     = ../../bin

#================================================
# GPU Stuff

CPP_GPU    = -DCUDA_GPU -DRPROMU_CPROJ_OVERLAP -DUSE_PINNED_MEMORY -DCUFFT_MIN=28 -UscaLAPACK

OBJECTS_GPU = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d_gpu.o fftmpiw_gpu.o

CC         = icc
CXX        = icpc
CFLAGS     = -fPIC -DADD_ -Wall -openmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DGPUSHMEM=300 -DHAVE_CUBLAS

CUDA_ROOT  ?= /usr/local/cuda/
NVCC       := $(CUDA_ROOT)/bin/nvcc -ccbin=icc
CUDA_LIB   := -L$(CUDA_ROOT)/lib64 -lnvToolsExt -lcudart -lcuda -lcufft -lcublas

GENCODE_ARCH    := -gencode=arch=compute_30,code=\"sm_30,compute_30\" \
                   -gencode=arch=compute_35,code=\"sm_35,compute_35\" \
                   -gencode=arch=compute_60,code=\"sm_60,compute_60\"

MPI_INC    = $(I_MPI_ROOT)/include64/

その後、コンパイル

make std
make gam
make ncl

bin/vasp_std, bin/vasp_gam, bin/vasp_nclができるので、これをコピーして使う。

mkdir /usr/local/vasp/vasp544bin
cp bin/vasp_std /usr/local/vasp/vasp544bin
cp bin/vasp_gam /usr/local/vasp/vasp544bin
cp bin/vasp_ncl /usr/local/vasp/vasp544bin

実行

  • vasp6, serial version, 3'30'' (210 sec)
  • vasp.5.4.4.pl2, MPI 4 core, 1'23'' (83 sec)
  • vasp.5.4.4.pl2, MPI 8 core, 60'' (60 sec)
  • vasp.5.4.4.pl2, MPI 4 core, NCORE=4 in INCAR, 1'09'' (69 sec)
  • vasp.5.4.4.pl2, MPI 6 core, NCORE=6 in INCAR, 49'' (49 sec)
  • vasp.5.4.4.pl2, MPI 8 core, NCORE=8 in INCAR, 49'' (49 sec)

という結果が得られた。 - やっぱり並列化の威力は大きい - vasp6で発揮できていないのは残念 - INCARにNCOREを指定しておくと20%ほどスピードアップ - ポテンシャルはPBE64を使った。 - vasp 5.4.4にはtestsuiteがないので完璧なバイナリかと問われたら何とも言えないが、あっさりと並列計算バイナリが生成できた。

【試験研究】第一原理計算セットアップ(4):VASP.6.4.2のコンパイル(Intel Fortran版), (4) VASP 6.4.2 compile by Intel oneAPI

概要

 VASP ver.6.4.2をインストールしていきます。 方法は、Vaspwikiの Installing VASP.6.X.X - Vaspwiki を参考に進めていけばいいことになっているが、うまくビルドするためには、typoも含めていろいろありました。

  • make testでvasp_ncl版の部分がすべてエラーになる。
  • ISIF=3の構造緩和計算がsegmentation faultになる。
  • mpirun -np 4で実行すると、やたらと遅い。
  • serial版のみがまともか?と思ってmake testしたらフリーズする。

という、どうにもならない状態がしばらく続きました。 それがある時からなぜかうまく動くようになりました。やったことは…sudo apt upgradeと、sudo apt autoremove。ubuntuの問題だったのか !? libc++あたりの問題だったのか? 原因は良く分からないのですが、Validation Testsは問題なくパスするようになったので、コンパイル方法を紹介します。ただし、test_allはすべてパスしていませんので念のため。

コンパイル環境と方針

  • vasp 6.4.2
  • Compilers and MKL: Intel oneAPI 2023.2
  • arch/makefile.include.intel を使用。
  • /usr/local/vaspにvasp関係のプログラムを入れる。/usr/local/vaspのownerはrootではなく、私(ユーザー)にする。
  • /usr/local/vasp/vasp642mpibinに、mpiバージョンのVASPを入れる。
  • /usr/local/vasp/potpawLDA64, /usr/local/vasp/potpawPBE64にポテンシャルファイルを入れる。
  • wannier90などのVASP関連で使うツールは、/usr/local/vasp/tools/lib に入れておく。

VASPコンパイル

ソースファイル展開

 tarコマンドで行う。vasp.6.4.2というディレクトリができて、その下にソースファイル一式が入る。

tar zxvf vasp.6.4.2.tgz

とりあえずのVASPコンパイル

archディレクトリの下から適切なものを選んで、makefile.includeとし、コンパイルする。 どれを選ぶかは、Vaspwikiの makefile.include を見る。

いま、vasp.6.4.2ディレクトリにいると仮定して、

cd vasp.6.4.2
cp arch/makefile.include.intel makefile.include

とする。makefile.includeに手を入れるのは、下のほうにあるHDF5, wannier90, libxcのところのみ。 makefile.include全体は下記のとおり。

# Default precompiler options
CPP_OPTIONS = -DHOST=\"LinuxIFC\" \
              -DMPI -DMPI_BLOCK=8000 -Duse_collective \
              -DscaLAPACK \
              -DCACHE_SIZE=4000 \
              -Davoidalloc \
              -Dvasp6 \
              -Duse_bse_te \
              -Dtbdyn \
              -Dfock_dblbuf

CPP         = fpp -f_com=no -free -w0  $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)

FC          = mpiifort
FCL         = mpiifort

FREE        = -free -names lowercase

FFLAGS      = -assume byterecl -w

OFLAG       = -O2
OFLAG_IN    = $(OFLAG)
DEBUG       = -O0

OBJECTS     = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o
OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
OBJECTS_O2 += fft3dlib.o

# For what used to be vasp.5.lib
CPP_LIB     = $(CPP)
FC_LIB      = $(FC)
CC_LIB      = icc
CFLAGS_LIB  = -O
FFLAGS_LIB  = -O1
FREE_LIB    = $(FREE)

OBJECTS_LIB = linpack_double.o

# For the parser library
CXX_PARS    = icpc
LLIBS       = -lstdc++

##
## Customize as of this point! Of course you may change the preceding
## part of this file as well if you like, but it should rarely be
## necessary ...
##

# When compiling on the target machine itself, change this to the
# relevant target when cross-compiling for another architecture
VASP_TARGET_CPU ?= -xHOST
FFLAGS     += $(VASP_TARGET_CPU)

# Intel MKL (FFTW, BLAS, LAPACK, and scaLAPACK)
# (Note: for Intel Parallel Studio's MKL use -mkl instead of -qmkl)
FCL        += -qmkl=sequential
MKLROOT    ?= /path/to/your/mkl/installation
LLIBS      += -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
INCS        =-I$(MKLROOT)/include/fftw

# HDF5-support (optional but strongly recommended)
CPP_OPTIONS+= -DVASP_HDF5
HDF5_ROOT  ?= /usr/local/hdf5-1.14.2
LLIBS      += -L$(HDF5_ROOT)/lib -lhdf5_fortran
INCS       += -I$(HDF5_ROOT)/include

# For the VASP-2-Wannier90 interface (optional)
CPP_OPTIONS    += -DVASP2WANNIER90
WANNIER90_ROOT ?= /usr/local/vasp/tools
LLIBS          += -L$(WANNIER90_ROOT)/lib -lwannier

# Libxc
CPP_OPTIONS += -DUSELIBXC
LIBXC_ROOT  += /usr/local/vasp/tools
INCS        += -I$(LIBXC_ROOT)/include
LLIBS       += -L$(LIBXC_ROOT) -lxcf03 -lxc

# Libbeef
CPP_OPTIONS  += -Dlibbeef
LIBBEEF_ROOT ?= /usr/local/vasp/tools
LLIBS        += -L$(LIBBEEF_ROOT)/lib -lbeef

makeする。最初のmake verycleanは初回は必要ない。 makeの-j4オプションは、4並列でmakeを実行するという指定。-j8が使ったCPUの最大だが、これぐらいやると速さを実感できる。

make veryclean
make DEPS=1 -j4

VASPのテスト (Validation Test)

VASPにはその後、テストを行う。まずは

make test

として、テストを走らせてみる。バイナリに不具合があれば、この時点でエラーがいろいろ出て来る。 出てこなければ、[Ctrl]+[c]でテストを中断し、

nohup make test &

としてあとは放置する。画面出力は、nohup.outとtestsuit/testsuite.logにも格納されている。 make testのデフォルトは、mpirun -np 4での実行で、4並列である。

Validation Testの補足

2回目以降のmake testは、実行する前に

cd testsuite; make cleantest; cd ..

をしたほうがいい。これまでのテスト結果を消去して、新たにテストを行う処理である。

make testでは、特定のテストのみを行ったり、スキップすることができる。 たとえば、ncl版を除いて実行する。下記のようにする。

export VASP_TESTSUITE_SKIP_NCL=Y
nohup make test &

特定のテストをしたいときや、特定のテストを省きたいときは、下記の環境変数をexportする。

export VASP_TESTSUITE_TESTS="bulk_GaAs_ACFDT"
export VASP_TESTSUITE_SKIP_TESTS="bulk_GaAs_ACFDT"

下記の表示が出てくれば成功。

==================================================================
SUCCESS: ALL SELECTED TESTS PASSED
==================================================================
  • 画面出力の69行目に実行開始時間が記録されている。それとnohup.outのタイムスタンプの差をとると、テストにかかった時間が分かる。
  • make testのIntel Core i7-13700Fでの実行時間は25分、Core i7-9700Kでの実行時間は40分、Xeon E5-1650 v3 @3.5GHzでの実行時間は50分だった。
  • make test_allのCore i7-13700Fでの実行時間は1時間50分(110分)。ただし、エラーが2箇所で出た。Core i7-9700Kでの実行時間は2時間50分(170分)でエラーは1つだけだった。どうして?Xeon E5-1650での実行時間は3時間48分(228分)でした。こちらはエラーなし。
    • bulk_BN_SCAN_Libxc mlwf_lif_scdm_optics でFAILが出た。libxcの再インストールや、libbeefを入れても無駄だった。
  • Core i7-13700FはCore i7-9700Kの約1.5倍の速度というところ。この速度比を反映しているベンチマーク指標はCinebench R23 (Single-Core) です。Core i7-13700Fが2107で、Core i7-9700Kが1336なので、比は1.58です。VASPの速度を見積もるときはCinebench R23 (Single-Core) で速度比較すればいいのかもしれません。VASPの処理は浮動小数点演算が主なので、ハイパースレッディングの恩恵が薄いのかもしれません。ただし、この比較にはメモリアクセス速度が反映されていませんので、あくまで目安です。

【試験研究】第一原理計算セットアップ(2):PCセットアップ, (2) PC setup for VASP

PCの購入

  • PCは普通のPCを買いました。DOS/Vパラダイスで注文。値段は送料込みで21万円ちょっと。納期は3日程度だった。メモリの価格が下がっているとか、PCの販売台数が落ち込んでいるとかいう報道があるので、そのせいかもしれない。スペックは下記のとおり。
    • ミニタワー:Magnate XV 第13世代Core
    • Intel Core i7-13700F, グリスとファンは少しアップグレード
    • 32GB (16GBx2) DDR4-3200, 500GB SSD (NVMe Gen3)
    • NVIDIA GeForce RTX3060 12GB GDDR6
    • DVDドライブ、5インチベイ小物入れつき
  • 選び方の方針は下記のとおり。
    • CPUはIntel Core i7を選ぶ。数値計算ライブラリIntel MKLがインテルCPUに特化しているため。
    • Xeonのほうが同世代だと少し速いし、パリティ付きのメモリが選べるので安心というメリットがあるのは分かるが、Xeonは価格が高いのでパス。
    • 計算が始まると、CPUファンが回り続けるようになったりするので、放熱は強化しておく。
    • メモリは32GB。これ以上のメモリが必要な計算をするときは、そのときに考える。
    • SSDは500GBytesにしておいた。Gaussianのように、計算途中の結果を細かなファイルで出力するソフトウェアだと、大容量高速のストレージが必要だが、VASPはそうでもない。
    • VASPはCUDAをサポートするようになって、高速化できるようになった。しかし、Vaskwikiの OpenACC GPU port of VASPのページには、NVIDIAのP100, V100, A100, GV100, GP100が必要であると書かれている。これ以外のGPUでは、高速の64bit浮動小数点演算ができないらしい。NVIDIAGPUは在庫切れの場合が多いので、今回はGeForce製品で高速化はできるのか試してみる。
    • DVDドライブと小物入れは、あったほうがいいのでつけておいた。インストールメディアを入れておいたりできる。
    • ミニタワーにしたのは、Core i7 + GPUの組み合わせで小型のものがミニタワーだったため。GPUがあると、電源容量の問題と放熱の問題でミニタワーかミドルタワーになるようです。

 

Ubuntuのインストール

 Linuxでの運用を行うときには、どのディストリビューションを使うのかを選ばなければなりません。Debianディストリビューションの一つであるUbuntuにしました。理由はメジャーだからというのと、いま運用しているサーバーがUbuntuだからです。

  • ubuntuのLTS(5年サポートしてくれるもの)を用意する。2023年9月時点で、22.04.3が使える。デスクトップ版とサーバー版があるが、GUIがついているデスクトップ版を使う。
  • ubuntu-22.04.3-desktop-amd64.isoを、ダウンロードした。本家からダウンロードしてもよいが、非常に遅いときがある。日本語関係のパッケージを足したものがUbuntu Japanese Teamから配布されているが、使わなかった。日本語は基本的に使わない。たとえば北陸先端大学のダウンロードサイトは下記。

    http://ftp.jaist.ac.jp/pub/Linux/ubuntu-releases/

  • インストール用USBメモリを作成。ダウンロードしたUbuntuのイメージがisoファイルだったのでDVD-Rに書き込めると思いきや、サイズが微妙に大きく、単層DVD-Rに書き込めなかった。Rufusというフリーソフトで、ブート可能な(ブータブルな)USBメモリを作って書き込んだ。円盤に書き込んで立ち上げる時代は終わったということか。
    • ブートファイルはISOファイルを指定する。
    • パーティション構成」はGPTとした。「ターゲットシステム」は「UEFI」となった。
  • Ubuntuインストール。
    • GNU GRUBブートローダー)が起動する。「Ubuntu (safe graphics)」を選択。
    • "Welcome" 画面では、"English" でインストール。ホームに日本語のディレクトリ(「デスクトップ」とか「ドキュメント」)を作成してほしくないから。
    • ”Keyboard layout" 画面では、左側で "Japanese", 続けて右側で "Japanese" を選択。
    • "Updates and other software" では、"Minimal Instllation" を選択。その下の "Install third-party software for graphics and Wifi..." を選択。これを選んでおかないと、グラボのドライバがインストールされないので、インストール終了後にウィンドゥが出ない。下にある "Configure Secure Boot" のチェックは外しておく。
    • ”Installation type" は、"Erase disk and install Ubuntu" を選択。何回かインストールテストをした後だったので、ディスク上に古いイメージがあった。これを消すため。”Write the changes to disk?" と聞かれるので、 [Continue]で次へ。
    • ”Where are you?" で、timezoneを聞かれるので、地図上で東京を選択。
    • ”Who are you?" で、ユーザー名やパスワードを聞かれるので設定。”Requre my password to login" にチェックを入れておく。
    • インストール開始。あとは流れ作業。Restartして、メディアを抜く。
  • Ubuntuのセットアップをする。
    • ネットワーク設定をする。画面右上のところのメニューに "Settings" があるので、そこをクリックし、IPアドレス、ネットマスク、DNSの設定などをする。
    • Firefoxが使えるはずなので、youtubeなどを再生して接続を確認する。
    • updateする。[Win]キーを押して "Command" と押すと「端末」がメニューに出る。右クリックして、 "My Fovorite" にしておくと、左側のメニューに「端末」がセットされ、次回からの起動が便利になる。
    • 「端末」から、"sudo apt update" [Enter], "sudo apt upgrade" [Enter] としてソフトウェアを最新にする。
    • 外部からログインするためにsshを入れる。"sudo apt install openssh-client" [Enter] とする。すでに入っていて、最新だと言われるはず。続いて、"sudo apt install openssh-server" [Eneter]とする。ssh serverがインストールされる。
    • SSHの設定をする。"sudo vi /etc/ssh/sshd_config" [Enter]として、sshd_configを編集する。
      • "PermitRootLogin no"
      • "PermitEmptyPasswords no"
      • "MaxAuthTries 6"
      • "Port xxxx" (xxxx)は適当な数値。22でないほうがよい。 
      • 組織外からの接続をする場合や、セキュリティを高めたいときは公開鍵暗号の設定をする。(いろいろなサイトに解説がある)
    • "sudo service ssh restart" [Enter] としてssh サーバーを起動する。他のサーバーからログインできることを確認。
    • その他、"sudo apt install xxx"により、xxx = emacs, gcc, cmake, pkg-config, build-essential, slurm-wml をインストールした。pythonも入っていないので、インストールしたら記述を追加する予定。

【試験研究】第一原理計算セットアップ(1):VASPアップグレード契約, (1) VASP upgrade contract from VASP 5.

VASP

 VASPは、ウィーン大学で開発された、固体のDFT計算を行うための第一原理計算用のソフトウェアです。もう少し簡単に書くと「物質の性質を予測するための理論計算ソフト」ということになります。同じようなソフトは他にもありますが、最もメジャーと言われています。最近はQuantum Espressoというフリーソフトを使って計算した論文もよくみられるようになっています。私は、新しい計算方法の導入が早いことや、自己無撞着計算の収束が早くて上手と信じてVASPを使っています。なお、私は実験屋であって、理論計算を主には行っておりませんので念のため。

 VASPは直接ライセンス契約を結ぶとソースコードで提供されます。自分でコンパイルして実行環境が構築できるのならば、最新バージョンやバグ修正バージョンがすぐに入手でき、up-to-dateに使えます。

 

VASPのアップグレード

 私はVASP4→VASP5と使ってきたユーザーなので、アップグレード契約を行いました。vaspはバージョン6になってから機能改善がかなりあることはネットからの情報で知っており、いいなあと思っていました。予算の関係もあってアップグレードはペンディングしていたのですが、2022年末に、2023年6月までならアップグレード対象ですよ、というメールが来ました。新年度になって予算の準備ができたので、Ver.5.8から6へのアップグレード作業開始です。

 アップグレードにあたっての契約上のポイントは下記になります。

  • 契約の結びなおしが必要になります。vasp.5.8までは、ウィーン大学とのライセンス契約でしたが、2018年からはVASP Software GmbHという会社とのライセンス契約になりました。Kresse先生、ベンチャー企業を作ったんですね。
  • 「租税条約に関する届出書」が必要となります。二重課税と脱税防止のための条約です。実際にライセンス料を振り込む前に、税務署に提出しておく必要があります。
  • 今回は私が立替えて支払うことにしました。自分の銀行口座のある銀行でないと 外国送金の面倒を見てくれないようです。まず最初に「仕向送金申込書」をwebから入力し、来店予約し、自分の銀行口座から引き落とす形で外国送金となります。身分証の他にマイナンバーカード、銀行印が必要です。
  • 入金が確認できたら、ダウンロードできるようになります。

 

手続きにどのぐらいかかったのか
  • 4月17日に「アップグレード希望」とメールを送ると、翌日には手続き方法を知らせるメールが届きました。License Agreementの書類と、租税条約に関する届出書 ("tax form F3" と呼ばれるもの)がPDFファイルで届きました。書類の書き方は、メールに事細かに書いてあるので、専門家に頼む必要はありません。誰にでもできる感じではありませんが、よく読めば分かります。租税条約についてはちょっと調べる必要がありました。
  • License Agreementを印刷し、使用責任者である私の手書きのサインを書きます。使用責任者のサイン以外に、経理責任者(大学だと学部長 (Dean) )のサインが必要でした。しかし事務が書類を放置していた+学部長が体調不良だとかで、学部長のサインをもらうのに1か月以上かかりました。(そのせいで、オーストリアは夏休み期間に突入)
  • 租税条約に関する届出書の様式3= "tax form F3" を出すと、税金は支払わなくて良くなります。VASP GmbH担当者から送られてきているにPDFファイルの中に、"tax form F3" という書類がありますので、ここに住所などを記入します。大学の場合は、「使用者の支払者に関する事項」において「個人番号又は法人番号」はありませんので空欄のままです。なお、この書類には日本語を書いてはいけません。英語と併記する形での日本語の記入をしてもいけません。
  • "License Agreement" と "tax form F3" をスキャンしてPDF化し、VASP GmbHの担当者にメールで送付しました。この時点で5月末でした。
  • オーストリア側から "Certificate of Residence, according to the Double Taxation Convention between Austria and Japan" が送られてきたのが8月4日でした。2か月かかりました。2-3週間かかるのが普通だそうですが、7月初旬に問い合わせたときには「長期休暇期間中なので時間がかかっている」と言われました。
  • VASPのinvoceも送られてきたので、外国送金をします。事務に相談すると「立替払いでお願いします」と言われたので立替払いに。ところが8月中旬は大学の試験期間中+出張などでバタバタ。
  • 書類を揃えて、大学最寄りの税務署に「租税条約に関する届出書 様式3」を、オーストリア側の書類と共に提出します。これらの書類は返してもらえません。提出前にスキャンしておいてよかったです。
  • 自分の口座のある銀行のHPから、「仕向送金申込書」をweb入力し、来店予約をしました。申込後、銀行窓口に行ってハンコをいろいろ押して海外送金完了となります。海外送金ができる支店は限られているので、訪問日の3営業日以前に申し込みする必要があります。書類は一発で揃えられませんでした。何があったかは下記です。
    • 依頼人住所を銀行口座の届出住所(自宅の住所)に、送金人住所を職場の住所にしたところ、同じにしてくれと言われました。両方とも銀行口座の届出住所にしました。
    • いろいろな銀行を経由して送金された場合、途中の銀行が手数料を抜くことがあるようです。そこで、「お受取人へのメッセージ」のところに "Please pay in full" と書いておきました。無視されたらどうしようもないのですが、念のために、です。
    • 「仕向送金申込書」には、お受取人口座番号(IBAN等)がありますが、同時にBIC (SWIFT) CODE も記入しておく必要がありました。IBANコードがあれば不要とwebページにはあったのですが、両方あったほうが良いようです。
  • 送金までは1-2週間かかります。私の場合も、送金してから2週間ぐらいで確認しましたというメールがきました。VASP GmbH側の対応は早いです。ありがとうございました!