はじめに
Intel MKL1を利用したFortranプログラムをTravisCI2で継続的インテグレーション(CI : continuous integration)する方法を述べる.本テストで用いたリポジトリはtoya42/test_travisciである.
設定ファイル(.travis.yml)
.travis.yml
をそのまま示す.TravisCIを使い慣れている方ならこれで十分かもしれないが,注意が必要な箇所についてはあとで述べる.
os:
- linux
matrix:
include:
- dist: xenial
- dist: bionic
sudo: required
addons:
apt:
packages:
- gfortran
install:
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
- mkdir ${DEPS_DIR}
- cd ${DEPS_DIR}
- travis_retry wget https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3.tar.gz
- tar -xzvf cmake-3.15.3.tar.gz >log1
- mv cmake-3.15.3 cmake_install
- cd cmake_install
- ./configure >log2
- make >log3
- sudo make install >log4
- PATH=${DEPS_DIR}/cmake_install:${DEPS_DIR}/cmake_install/bin:$PATH
- cd ${TRAVIS_BUILD_DIR}
before_script:
- wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
- sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
- sudo wget https://apt.repos.intel.com/setup/intelproducts.list -O /etc/apt/sources.list.d/intelproducts.list
- sudo apt-get update
- sudo apt-get install intel-mkl-2019.4-070 --allow-unauthenticated
- source /opt/intel/mkl/bin/mklvars.sh intel64 lp64
script:
- bash compile.sh
- bash execute.sh
#!/bin/bash
mkdir build
cd build
cmake -D CMAKE_Fortran_COMPILER=gfortran -D CMAKE_BUILD_TYPE=debug ../
make
#!/bin/sh
ulimit -s unlimited
mkdir run
cd run
mkdir output
ln -s ../build/2dvorticity_psm.exe ./
./2dvorticity_psm.exe
利用の際に引っかかった事,注意する事
OSのversion
使用言語language
をFortranにするとdist
で定義されたOSおよびバージョンにならない場合がある.例えば以下のような設定ファイルを書いても,ubuntu14.04で実行される.(bionicはubuntu18.04を意味する)
dist: bionic
language: Fortran
#~~~~~~~~~~~~~~~~~~#
よって,language
は記述せず,デフォルトのRubyのままで良い.またsudo
を許可することも明記する.さらに,ubuntuの現行LTS2種をCIに用いたいので,matrix
を使って次のように書く
os:
- linux
matrix:
include:
- dist: xenial
- dist: bionic
sudo: required
TravisCIでFortran
TravisCIでFortranをCIする
より,apt-get
でコンパイラをインストールできるなら利用できる.という訳で,gfortran
が使える
addons:
apt:
packages:
- gfortran
CMake
デフォルトのCMakeは古い場合があるので,次のページに従って新しいバージョンを用いる
Configure Travis CI with newest CMake
画面出力が多すぎてうるさかったのでlog
ファイルに書き込ませている.
install:
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
- mkdir ${DEPS_DIR}
- cd ${DEPS_DIR}
- travis_retry wget https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3.tar.gz
- tar -xzvf cmake-3.15.3.tar.gz >log1
- mv cmake-3.15.3 cmake_install
- cd cmake_install
- ./configure >log2
- make >log3
- sudo make install >log4
- PATH=${DEPS_DIR}/cmake_install:${DEPS_DIR}/cmake_install/bin:$PATH
- cd ${TRAVIS_BUILD_DIR}
Intel MKL
Intel MKLをAPTでインストールする
より,コマンドライン(apt)でIntel MKLをインストールできる.注意する点は,下から二行目のオプション--allow-unauthenticated
をつけること.
before_script:
- wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
- sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
- sudo wget https://apt.repos.intel.com/setup/intelproducts.list -O /etc/apt/sources.list.d/intelproducts.list
- sudo apt-get update
- sudo apt-get install intel-mkl-2019.4-070 --allow-unauthenticated
- source /opt/intel/mkl/bin/mklvars.sh intel64 lp64
終わりに
初めてGithubにリポジトリを作り,初めてTravisCIでCIをした.色々拙い点があると思う.間違っていることなどあれば,遠慮なくご指摘いただきたい
-
Intel® Math Kernel Library, webサイト: https://software.intel.com/en-us/mkl , EULA: https://software.intel.com/en-us/articles/end-user-license-agreement ↩
-
Travis CI - Test and Deploy Your Code with Confidence: https://travis-ci.org/ ↩