Help us understand the problem. What is going on with this article?

TravisCIでIntel MKLを利用したFortranプログラムをCIする

はじめに

 Intel MKL1を利用したFortranプログラムをTravisCI2で継続的インテグレーション(CI : continuous integration)する方法を述べる.本テストで用いたリポジトリはtoya42/test_travisciである.
 

設定ファイル(.travis.yml)

 .travis.ymlをそのまま示す.TravisCIを使い慣れている方ならこれで十分かもしれないが,注意が必要な箇所についてはあとで述べる.

.travis.yml
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
compile.sh
#!/bin/bash
mkdir build
cd build
cmake -D CMAKE_Fortran_COMPILER=gfortran -D CMAKE_BUILD_TYPE=debug ../
make
execute.sh
#!/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をした.色々拙い点があると思う.間違っていることなどあれば,遠慮なくご指摘いただきたい


  1. Intel® Math Kernel Library, webサイト: https://software.intel.com/en-us/mkl , EULA: https://software.intel.com/en-us/articles/end-user-license-agreement 

  2. Travis CI - Test and Deploy Your Code with Confidence: https://travis-ci.org/  

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした