広告

Sandia National Laboratories が開発した大規模集積回路向けの回路シミュレータ

XyceSandia National Laboratories が開発したオープンソースの大規模集積回路向けの回路シミュレータ

MPIを用いた並列計算に対応している。

インストール。Building Guideを参照

少し面倒。バージョン6.3で説明

  • まずダウンロード。ユーザー登録(無償)が必要--Xyce-6.3.tar.gzとテスト用のXyce_Regression-6.3.tar.gzを取ってくる
  • 必要なパッケージをインストール。多少バージョンが違うかも
    • gcc
    • g++
    • gfortran
    • make
    • cmake
    • bison
    • flex
    • libfftw3-3-dev
    • libsuitesparse-dev
    • libblas-dev
    • liblapack-dev
    • libtool
  • 並列計算するならMPI関係もインストール
    • libopenmpi-dev
    • libparmetis-dev
  • Sandia National Laboratories が開発した数値計算パッケージ「Trilinos」をダウンロード
    • Building GuideにはVersion 11.14.2を使えと書いてあったけど11.14.3しかないのでこれをダウンロード。
    • メールアドレスを登録する必要がある。
  • Trilinosのコンパイル
    • ソースを展開したディレクトリに適当なディレクトリ(例えばbuild)を作製
    • 作ったディレクトリ(例えばbuild)に移動
    • この後は並列計算(Parallel)か違う(Serial)かで変わってくる。以下は並列計算の場合。
      • Building Guideにビルド用のスクリプト例が載っているのでそれを自分の環境に合わせて編集する。特にSRCDIRとARCHDIRを変える。
        #!/bin/bash
        SRCDIR=$HOME/Trilinos11.14/trilinos-11.14.2-Source
        ARCHDIR=$HOME/XyceLibs/Parallel
        FLAGS="-O3 -fPIC"
        cmake \
        -G "Unix Makefiles" \
        -DCMAKE_C_COMPILER=mpicc \
        -DCMAKE_CXX_COMPILER=mpic++ \
        -DCMAKE_Fortran_COMPILER=mpif77 \
        -DCMAKE_CXX_FLAGS="$FLAGS" \
        -DCMAKE_C_FLAGS="$FLAGS" \
        -DCMAKE_Fortran_FLAGS="$FLAGS" \
        -DCMAKE_INSTALL_PREFIX=$ARCHDIR \
        -DCMAKE_MAKE_PROGRAM="make" \
        -DTrilinos_ENABLE_NOX=ON \
        -DNOX_ENABLE_LOCA=ON \
        -DTrilinos_ENABLE_EpetraExt=ON \
        -DEpetraExt_BUILD_BTF=ON \
        -DEpetraExt_BUILD_EXPERIMENTAL=ON \
        -DEpetraExt_BUILD_GRAPH_REORDERINGS=ON \
        -DTrilinos_ENABLE_TrilinosCouplings=ON \
        -DTrilinos_ENABLE_Ifpack=ON \
        -DTrilinos_ENABLE_ShyLU=ON \
        -DTrilinos_ENABLE_Isorropia=ON \
        -DTrilinos_ENABLE_AztecOO=ON \
        -DTrilinos_ENABLE_Belos=ON \
        -DTrilinos_ENABLE_Teuchos=ON \
        -DTeuchos_ENABLE_COMPLEX=ON \
        -DTrilinos_ENABLE_Amesos=ON \
        -DAmesos_ENABLE_KLU=ON \
        -DAmesos_ENABLE_UMFPACK=ON \
        -DTrilinos_ENABLE_Sacado=ON \
        -DTrilinos_ENABLE_Kokkos=OFF \
        -DTrilinos_ENABLE_Zoltan=ON \
        -DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \
        -DTPL_ENABLE_AMD=ON \
        -DAMD_LIBRARY_DIRS="/usr/lib" \
        -DTPL_AMD_INCLUDE_DIRS="/usr/include/suitesparse" \
        -DTPL_ENABLE_UMFPACK=ON \
        -DUMFPACK_LIBRARY_DIRS="/usr/lib" \
        -DTPL_UMFPACK_INCLUDE_DIRS="/usr/include/suitesparse" \
        -DTPL_ENABLE_BLAS=ON \
        -DTPL_ENABLE_LAPACK=ON \
        -DTPL_ENABLE_ParMETIS=ON \
        -DParMETIS_LIBRARY_DIRS="$ARCHDIR/lib" \
        -DParMETIS_INCLUDE_DIRS="$ARCHDIR/include" \
        -DTPL_ENABLE_MPI=ON \
        $SRCDIR
    • 上で作ったスクリプトを作ったディレクトリ(例えばbuild)で実行
    • コンパイルとインストール
      make
      sudo make install
  • Xyceのコンパイル
    • Trilinosと同様にソースを展開したディレクトリに適当なディレクトリ(例えばbuild)を作製しそこに移動
    • そこでビルド用の設定スクリプトを作製。以下は並列計算用。「/path/to/Xyce/configure」の部分を編集する(多分「../configure」)。ARCHDIRはTrilinosと合わせる
      #!/bin/bash
      /path/to/Xyce/configure \
      CXXFLAGS="-O3" \
      ARCHDIR="$HOME/XyceLibs/Parallel" \
      CPPFLAGS="-I/usr/include/suitesparse" \
      --enable-mpi \
      CXX=mpiCC \
      CC=mpicc \
      F77=mpif77
    • 上で作ったスクリプトを実行
    • 「make」を実行してコンパイル
  • インストールの前にコンパイル後のテスト
    • Xyce_Regression-6.3.tar.gzをソースを展開したところとは違うところに展開。例ではホームディレクトリに展開している。
  • テストプログラムを実行。以下はコマンド例。パス等に注意
    $HOME/Xyce_Regression-6.3/TestScripts/run_xyce_regression \
    --output=`pwd`/Xyce_Test --xyce_test="$HOME/Xyce_Regression-6.3" \
    --taglist="+parallel+nightly?noverbose-klu-verbose-fft" \
    --resultfile=`pwd`/parallel_results \
    "mpirun -np 2 `pwd`/src/Xyce"
  • うまく動いたら、Xyceをコンパイルしたディレクトリに戻ってインストール
    sudo make install

テストしてみた結果

上の一番下の使うCPU数の設定「-np 2」をいろいろ変えてみてXyce Regressionテストを実行してみた。

CPU 2個(上の例のまま)

All Test runs complete - All Tests PASSED
Total testing time:  26.4m (wall),  1160s (user),    94s (system)

エラー無く終了。大丈夫そう?

CPU 10個(mpirun -np 10)

All Test runs complete - Warning 7 Tests FAILED
                                4 Tests EXITED WITH ERROR
Total testing time:  36.1m (wall),  8716s (user),  2393s (system)

あれ遅いし、エラーが出ている

CPU 1個(mpirun -np 1)

All Test runs complete - Warning 0 Tests FAILED
                                1 Tests EXITED WITH ERROR
Total testing time:   9.3m (wall),   461s (user),    57s (system)

CPU 2個より速いがエラーが出ている。何かおかしいのかもしれない。

Qucsをフロントエンドにする


広告

リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS