julia」カテゴリーアーカイブ

VTK on Julia

JuliaでVTKのデータを扱いたかったのだが、Mohamed Tarek氏によるライブラリが公開されていた。こういうのを作ってくれるのは本当にありがたい。 VTKDataTypes.jlVTKDataIO.jlをPkg.cloneでインストールし、適当に依存関係を解決すれば使える。

たとえばVTKの矩形メッシュ上のデータは以下のようにすると読める:

using VTKDataTypes
using VTKDataIO

data = read_vtk("m000000.vts")

data. point_coordsがメッシュの座標データで、data.point_dataが辞書型のデータになっている。

Juliaのコンパイル with MKL

Juliaというスクリプト言語を数値処理に使いだした。速いし、線形代数ライブラリが整備されており使いやすい。今までMatlabが独占的だった数値計算用のスクリプト言語に新たな風を吹かせている。Intel CompilerなしでもビルドすればIntel MKLが使える。ただし、以下のようにコンパイルする必要がある(Julia v0.6 & Ubuntu 16.04のとき).

    1. Intel MKLをインストールしておく
    2. git で juliaのリポジトリをローカルにクローン
    3. Makefile.userを以下の内容で準備してjuliaのメインディレクトリに置く (最後はインストールディレクトリ)
      override USE_INTEL_MKL=1
      override USE_INTEL_LIBM = 0
      prefix=/home/hoge/julia
    4. そのまますると固有値計算のライブラリであるARPACKがうまくコンパイルできないので、以下をdeps/tools/common.mkに記述:

      ifeq  ($(USE_INTEL_MKL), 1)
      ifneq ($(USEIFC),1)
      USE_BLAS_FFLAGS += -ff2c
      endif
      endif
      

      参考:

    5. source /opt/intel/mkl/bin/mklvars.sh intel64 ilp64としてからmake -j4する
    6. make testallでコンパイル結果をチェックできる。
    7. ただし、cmdlineargs.jlの以下の箇所でエラーがでるが、解決できていない。あまり関係なさそうなので放置中。
      if !is_windows() && VersionNumber(Base.libllvm_version) > v"3.3"
      testdir = mktempdir()
      cd(testdir) do
      rm(testdir)
      @test success(`$exename -e "exit(0)"`)
      end
      end
      
    8. make installする