├── .gitignore ├── .gitmodules ├── ChangeLog ├── Makefile ├── README.md ├── README_JP.md ├── README_SX-Aurora.md ├── README_SX-Aurora_JP.md └── utils ├── rccx ├── README ├── README_JP ├── client │ ├── build.sh │ ├── rccx.c │ └── rccx.exe └── server │ └── ccx_wrapper └── wsl-ccx ├── README.md ├── README_JP.md ├── client └── wsl-ccx.bat └── server ├── ccx_sxat.sh └── ccx_wrapper.sh /.gitignore: -------------------------------------------------------------------------------- 1 | src 2 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "ccx"] 2 | path = ccx 3 | url = https://github.com/ISCPC/CalculiX-ccx.git 4 | [submodule "lib/ARPACK"] 5 | path = lib/ARPACK 6 | url = https://github.com/ISCPC/ARPACK.git 7 | branch = intel 8 | [submodule "lib/SPOOLES"] 9 | path = lib/SPOOLES 10 | url = https://github.com/ISCPC/SPOOLES.git 11 | branch = gcc 12 | [submodule "lib/calculix-adapter"] 13 | path = lib/calculix-adapter 14 | url = https://github.com/precice/calculix-adapter.git 15 | -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- 1 | 2021/06/12 2 | - Fix memory leak bug on SX-AUR_SCALING solver 3 | - Fix ordering method to METIS on SX-AUR_HS solver for memory efficiency 4 | 5 | 2020/06/19 6 | - First release for public 7 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # CalculiX-Builder: Build your customized ccx. 3 | # Currently with: 4 | # - Intel-MKL(PARDISO) support 5 | # - ExodusII support imported from https://www.openaircraft.com/calculix-extras/ 6 | # - SX-Aurora support enhanced by ISCPC 7 | # - preCICE support imported from https://github.com/precice/calculix-adapter 8 | # 9 | 10 | # 11 | # Set install path 12 | # 13 | #PREFIX = /opt/local 14 | PREFIX = $(HOME)/local 15 | 16 | # 17 | # Enable/Disable ExodusII support 18 | # 19 | WITH_EXODUSII=true 20 | 21 | # 22 | # Enable/Disable Intel-MKL(PARDISO) support 23 | # 24 | WITH_MKL=true 25 | WITH_MKL_STATIC=false 26 | 27 | # 28 | # Enable/Disable SX-Aurora support 29 | # 30 | WITH_AURORA=false 31 | VESOLVERPATH=$(PREFIX) 32 | 33 | # 34 | # Enable/Disable preCICE support 35 | # 36 | WITH_PRECICE=false 37 | 38 | 39 | ##################################################### 40 | # In General, You don't have to touch blow. 41 | ##################################################### 42 | OPTS = WITH_EXODUSII=$(WITH_EXODUSII) 43 | OPTS += WITH_MKL=$(WITH_MKL) WITH_MKL_STATIC=$(WITH_MKL_STATIC) 44 | OPTS += WITH_AURORA=$(WITH_AURORA) LIBCCXPATH=$(PREFIX)/ve/lib/libccx.so 45 | OPTS += VESOLVERPATH=$(VESOLVERPATH) 46 | OPTS += WITH_PRECICE=$(WITH_PRECICE) 47 | 48 | #CC=gcc-4.8 49 | #FC=gfortran-4.8 50 | #OPTS += CC=$(CC) FC=$(FC) 51 | 52 | CCX_BIN = ccx_2.21_MT 53 | CCX_CMD = src/$(CCX_BIN) 54 | INSTALL = /usr/bin/install 55 | 56 | ARPACKLIB = lib/ARPACK/libarpack_INTEL.a 57 | SPOOLESLIB = lib/SPOOLES/spooles.a lib/SPOOLES/MT/src/spoolesMT.a 58 | 59 | all: $(CCX_CMD) $(VEOLIBCCX) 60 | 61 | $(CCX_CMD): lib 62 | if [ ! -d src ]; then \ 63 | cp -rp ccx/src .; \ 64 | cd src; \ 65 | for p in ../patches/*; do patch -p2 < $$p; done; \ 66 | else \ 67 | cd src; \ 68 | fi; \ 69 | $(MAKE) -j $(NPROCS) -f Makefile_MT $(OPTS) 70 | 71 | lib: $(ARPACKLIB) $(SPOOLESLIB) 72 | 73 | $(ARPACKLIB): 74 | cd lib/ARPACK; \ 75 | $(MAKE) WORKDIR=$(PWD)/lib/ARPACK lib 76 | 77 | $(SPOOLESLIB): 78 | cd lib/SPOOLES; \ 79 | $(MAKE) -j ${NPROCS} lib; \ 80 | cd MT; \ 81 | $(MAKE) lib 82 | 83 | install: 84 | $(INSTALL) -D -t $(PREFIX)/bin $(CCX_CMD) 85 | 86 | clean: 87 | -rm -rf src 88 | 89 | clean-all: clean 90 | rm $(ARPACKLIB); \ 91 | cd $(PWD)/lib/ARPACK; $(MAKE) WORKDIR=$(PWD)/lib/ARPACK clean; \ 92 | cd $(PWD)/lib/SPOOLES; $(MAKE) clean; cd MT; $(MAKE) clean; 93 | 94 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CalculiX-Builder 2 | ## About 3 | This is a tool for building Calculix-ccx module more easily. 4 | You can enable additional functions such as ExodusII output, IntelMKL(PARDISO) 5 | or SX-Aurora suport by configuration. 6 | 7 | - [CalculiX](http://www.calculix.de/) 8 | - [CalculiX-extras](https://www.openaircraft.com/calculix-extras/) 9 | 10 | ## Build 11 | ### 1. Install dependent package 12 | #### 1.1 Install build tools and BLAS/LAPACK \[Required\] 13 | - Ubuntu: Install following packages 14 | ``` 15 | % sudo apt install git make patch libblas-dev liblapack-dev 16 | ``` 17 | - CentOS: Install following packages 18 | ``` 19 | % sudo yum install git make patch epel-release atlas-devel lapack-devel blas-devel 20 | ``` 21 | - AlmaLinux 8: Install following packages 22 | ``` 23 | % sudo dnf install git make patch 24 | % sudo dnf install --enablerepo=powertools lapack-devel blas-devel 25 | ``` 26 | 27 | #### 1.2 Install PARDISO(Intel-MKL) \[Optional\] 28 | Now, Intel-MKL is a part of Intel® oneAPI Base Toolkit. 29 | Please install from [Get the Intel® oneAPI Base Toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html) 30 | 31 | #### 1.3 Install ExodusII \[Optional\] 32 | - Ubuntu: Install following packages 33 | ``` 34 | % sudo apt install libexodusii5 libexodusii-dev 35 | ``` 36 | - CentOS: Install following packages 37 | ``` 38 | % sudo yum install exodusii exodusii-devel 39 | ``` 40 | - AlmaLinux 8/RockyLinux 8: No RPM packages 41 | 42 | #### 1.4 Install preCICE \[Optional\] 43 | Install preCICE by [instruction on the preCICE official site](https://github.com/precice/precice/wiki/Building:-Using-CMake). 44 | Currently, CalculiX-Builder supports ONLY preCICE v2.x. 45 | 46 | ### 2. get sources for CalculiX-Builder 47 | Get CalculiX-Builder from this repository and the base ccx sources and required libraries such as ARPACK and SPOOLES as submodules. 48 | ``` 49 | % git clone https://github.com/ISCPC/CalculiX-Builder.git 50 | % cd CalculiX-Builder 51 | % git submodule update --init --recursive 52 | ``` 53 | 54 | ### 3. Edit Makefile 55 | Edit Makefile to enable/disable optional functions. 56 | - `WITH_EXODUSII={true|false}` : ExodusII Output(-o exo) support(require libexodus.so) 57 | - `WITH_MKL={true|false}` : IntelMKL(SOLVER=PARDISO) support(require Intel-MKL library) 58 | - `WITH_MKL_STATIC={true|false}`: Link IntelMKL(PARDISO) statically 59 | - `WITH_PRECICE={true|false}` : preCICE-adapter support 60 | 61 | SX-Aurora specific options: 62 | - `WITH_AURORA={ture|false}` : solvers using SX-Aurora VE (SOLVER=HETEROSOLVER,CGONVE) 63 | 64 | You can specify install path by editting PREFIX. By default, the modules are installed under /opt/local. 65 | 66 | ### 4. Build 67 | ``` 68 | % make 69 | ``` 70 | 71 | For bulilding with multiple core: 72 | 73 | ``` 74 | % make NPROCS= 75 | ``` 76 | 77 | ## Install 78 | ``` 79 | % make install 80 | ``` 81 | -------------------------------------------------------------------------------- /README_JP.md: -------------------------------------------------------------------------------- 1 | # CalculiX-Builder 2 | ## About 3 | 本ツールはCalculiXのビルドを簡単に行うためのツールです。 4 | コンフィグレーションにより、ExodusII出力、IntelMKL(PARDISO)、SX-Aurora対応の 5 | 実行モジュールを作成可能です。 6 | 7 | - [CalculiX](http://www.calculix.de/) 8 | - [CalculiX-extras](https://www.openaircraft.com/calculix-extras/) 9 | 10 | ## Build 11 | ### 1. 依存パッケージのインストール 12 | #### 1.1 ビルドツールおよびBLAS/LAPACKのインストール(必須) 13 | - Ubuntu: 以下のパッケージをインストール 14 | ``` 15 | % sudo apt install git make patch libblas-dev liblapack-dev 16 | ``` 17 | - CentOS7: 以下のパッケージをインストール 18 | ``` 19 | % sudo yum install git make patch epel-release atlas-devel lapack-devel blas-devel 20 | ``` 21 | - AlmaLinux 8: 以下のパッケージをインストール 22 | ``` 23 | % sudo dnf install git make patch 24 | % sudo dnf install --enablerepo=powertools lapack-devel blas-devel 25 | ``` 26 | 27 | #### 1.2 PARDISO(Intel-MKL)のインストール(Optional) 28 | 現在Intel-MKLは、Intel® oneAPI Base Toolkit の一部として提供されています。 29 | [Get the Intel® oneAPI Base Toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html)よりインストールしてください。 30 | 31 | #### 1.3 ExodusIIのインストール(Optional) 32 | - Ubuntu: 以下のパッケージをインストール 33 | ``` 34 | % sudo apt install libexodusii5 libexodusii-dev 35 | ``` 36 | - CentOS: 以下のパッケージをインストール 37 | ``` 38 | % sudo yum install exodusii exodusii-devel 39 | ``` 40 | 41 | - AlmaLinux 8: RPMパッケージなし 42 | 43 | #### 1.4 preCICEインストール(Optional) 44 | [preCICE公式の手順](https://github.com/precice/precice/wiki/Building:-Using-CMake)にてインストールする。 45 | 現状本ビルダーで対応しているバージョンはpreCICE v2.xです。 46 | 47 | ### 2. CalculiX-Builder ソースの取得 48 | CalculiX-Builder及びパッチのベースとなるccx 及び前提ライブラリ(ARPACK, SPOOLES)のソースを取得します。 49 | ``` 50 | % git clone https://github.com/ISCPC/CalculiX-Builder.git 51 | % cd ~/CalculiX-Builder 52 | % git submodule update --init --recursive 53 | ``` 54 | 55 | ### 3. Makefileの設定 56 | 使用したい機能に合わせてMakefileを修正します。 57 | - `WITH_EXODUSII={true|false}` : ExodusII出力(-o exo)をサポート(libexodus.so が必要) 58 | - `WITH_MKL={true|false}` : IntelMKL(SOLVER=PARDISO)をサポート(Intel-MKL library が必要) 59 | - `WITH_MKL_STATIC={true|false}`: IntelMKLをstatic linkしたモジュールを作成 60 | - `WITH_PRECICE={true|false}` : preCICE-adapterを有効にします。 61 | 62 | SX-Aurora固有のオプション 63 | - `WITH_AURORA={ture|false}` : SX-AuroraのVEを用いたソルバ(SOLVER=HETEROSOLVER,CGONVE)をサポート 64 | 65 | また、PREFIXにより作成した実行モジュール・ライブラリのインストール先を指定可能です。 66 | (defaultは/opt/local配下) 67 | 68 | ### 4. ビルド 69 | ``` 70 | % make 71 | ``` 72 | マルチコアで並列ビルドをする場合は以下。 73 | 74 | ``` 75 | % make NPROCS= 76 | ``` 77 | 78 | ## Install 79 | ``` 80 | % make install 81 | ``` 82 | -------------------------------------------------------------------------------- /README_SX-Aurora.md: -------------------------------------------------------------------------------- 1 | # CalculiX for SX-Aurora TSUBASA 2 | ## 1. About 3 | This document describes how to use CalculiX on SX-Aurora TSUBASA. 4 | 5 | ## 2. Build & Install 6 | ### 2.1 Install vesolver 7 | Download vesolver library fron following URL and extract it on ~/local. 8 | ``` 9 | % wget https://github.com/ISCPC/vesolver/releases/download/Release_20240224_beta/vesolver_20240224_beta.tar.gz 10 | % cd ~/local 11 | % tar xf /vesolver_20240224_beta.tar.gz 12 | ``` 13 | 14 | ### 2.2 Build and install ccx with SX-Aurora VE support 15 | Refer [README.md](https://github.com/ISCPC/CalculiX-Builder/blob/develop/README.md) for build. 16 | 17 | SX-Aurora specific options: 18 | - `WITH_AURORA={ture|false}` : solvers using SX-Aurora VE (SOLVER=SXAT_*) 19 | - `VESOLVER_PATH=` : path to vesolver installed at 2.1. (default: ~/local) 20 | 21 | By default, CalculiX-Builder install modules into following path. 22 | - ccx_2.21_MT: $(PREFIX)/bin/ccx_2.21_MT 23 | 24 | ### 2.3 Install rccx \[Optional\] 25 | Remote ccx(rccx) enables you to use ccx on SX-Aurora TSUBASA from the applications 26 | on your Windows PC such as PrePoMax. Please refer utils/rccx/README. 27 | 28 | 29 | ## 3. Additional Solver for SX-Aurora TSUBASA 30 | Ccx for SX-Aurora, built with WITH_AURORA=true, supports addtional solvers 31 | which uses VE(Vector Engine) on SX-Aurora TSUBASA as follows. 32 | 33 | - SXAT_HS: Use [HeteroSolver](https://www.hpc.nec/documents/sdk/SDK_NLC/UsersGuide/heterosolver/c/ja/index.html) which is direct methods solver tuned for SX-Aurora TSUBASA. 34 | - SXAT_SCALING: Use iterative solver tuned for SX-Aurora TSUBASA. This solver uses the same algorithm with ITERATIVESCALING solver impletened on the original ccx. But by using [SBLAS](https://www.hpc.nec/documents/sdk/SDK_NLC/UsersGuide/sblas/c/ja/index.html) library on VE, outstanding performance improvement acheived. 35 | 36 | 37 | ## 4. Usage 38 | ### 4.1 Configure Environment variables 39 | Example) 40 | ``` 41 | % export PATH=/opt/nec/ve/bin:${PATH} 42 | % source /opt/nec/ve/nlc/2.2.0/bin/nlcvars.sh 43 | % export OMP_NUM_THREADS=8 44 | % export DISTROOT=${HOME}/local <== path to directory where you extracted vesolver 45 | % export VESOLVER_PATH=${DISTROOT}/ve/lib/libvesolver.so 46 | % export VE_LD_LIBRARY_PATH=${DISTROOT}/ve/lib:${VE_LD_LIBRARY_PATH} 47 | ``` 48 | 49 | ### 4.2 Specify solver 50 | 51 | There are two ways to use solvers for SX-Aurora TSUBASA. 52 | 53 | - By editing .inp file 54 | Add SOLVER=SXAT_HS of SXAT_SCALING option to procedure description. 55 | 56 | Example) 57 | ``` 58 | ** Step-1 ++++++++++++++++++++++++++++++++++++++++++++++++++ 59 | *Step 60 | *Static, SOLVER=SXAT_HS 61 | ``` 62 | 63 | - By using environment variable 64 | Set SXAT_HS or SXAT_SCALING to CCX_DEFAULT_SOLVER 65 | 66 | Example) 67 | ``` 68 | % export CCX_DEFAULT_SOLVER=SXAT_SCALING 69 | ``` 70 | -------------------------------------------------------------------------------- /README_SX-Aurora_JP.md: -------------------------------------------------------------------------------- 1 | # CalculiX for SX-Aurora TSUBASA 2 | ## 1. About 3 | 本ドキュメントは、CalculiXをSX-Aurora TSUBASA上で動作させる方法を説明します。 4 | 5 | ## 2. Build & Install 6 | ### 2.1 vesolverのインストール 7 | vesolverを以下からダウンロードして、任意のディレクトリに展開します。 8 | (以下の例では、~/local配下に展開) 9 | ``` 10 | % wget https://github.com/ISCPC/vesolver/releases/download/Release_20240224_beta/vesolver_20240224_beta.tar.gz 11 | % cd ~/local 12 | % tar xf /vesolver_20240224_beta.tar.gz 13 | ``` 14 | 15 | ### 2.2 VEsolver対応版ccxのインストール 16 | [README.md](https://github.com/ISCPC/CalculiX-Builder/blob/develop/README.md)参照。 17 | 18 | SX-Aurora固有のオプションは以下になります。 19 | - `WITH_AURORA={ture|false}` : SX-AuroraのVEを用いたソルバ(SOLVER=SXAT_*)をサポート 20 | - `VESOLVER_PATH=` : 2.1でvesolverを展開したPATH(デフォルト:~/local) 21 | 22 | 作成されたモジュールは以下にインストールされます。 23 | - ccx_2.21_MT: $(PREFIX)/bin/ccx_2.21_MT 24 | 25 | 26 | ### 2.3 rccxのインストール(Optional) 27 | rccxを使用することで、PrePoMax等Windows上のアプリケーションからネットワーク経由で 28 | SX-Aurora TSUBASA上のccxを呼び出すことができます。詳細はutils/rccx/READMEを参照。 29 | 30 | 31 | ## 3. Additional Solver for SX-Aurora TSUBASA 32 | SX-Aurora用(WITH_AURORA指定)のccxでは以下の既存のソルバに加え、SX-Aurora TSUBASA 33 | のVE(Vector Engine)を利用した以下のソルバが追加されます。 34 | 35 | - SXAT_HS: SX-Aurora TSUBASA用に実装された直接法による大規模疎行列連立1次方程式ソルバである[HeteroSolver](https://www.hpc.nec/documents/sdk/SDK_NLC/UsersGuide/heterosolver/c/ja/index.html)を使用します。 36 | - SXAT_SCALING: CalculiXに実装されている反復法ソルバITERATIVESCALINGをSX-Aurora TSUBASAのVE(Vector Engine)上で高速に実行します。本ソルバは[SBLAS](https://www.hpc.nec/documents/sdk/SDK_NLC/UsersGuide/sblas/c/ja/index.html)を利用することで、ベクトル化+OpenMPによる高速化が図られています。 37 | 38 | 39 | ## 4. Usage 40 | ### 4.1 環境設定(各種ライブラリのパス設定等) 41 | 指定例) 42 | ``` 43 | % export PATH=/opt/nec/ve/bin:${PATH} 44 | % source /opt/nec/ve/nlc/2.2.0/bin/nlcvars.sh 45 | % export OMP_NUM_THREADS=8 46 | % export DISTROOT=${HOME}/local <== vesolverを展開したPATHを指定 47 | % export VESOLVER_PATH=${DISTROOT}/ve/lib/libvesolver.so 48 | % export VE_LD_LIBRARY_PATH=${DISTROOT}/ve/lib:${VE_LD_LIBRARY_PATH} 49 | ``` 50 | 51 | 52 | ### 4.2 ソルバの指定 53 | 使用するソルバの指定は、以下の2つのいずれかの方法で行います。 54 | 55 | - .inpファイルによる指定方法 56 | 各解析処理記述子のオプションとして、SOLVER=SXAT_HSもしくはSXAT_SCALINGを指定します。 57 | 58 | 指定例) 59 | ``` 60 | ** Step-1 ++++++++++++++++++++++++++++++++++++++++++++++++++ 61 | *Step 62 | *Static, SOLVER=SXAT_HS 63 | ``` 64 | 65 | - 環境変数による指定方法 66 | 環境変数CCX_DEFAULT_SOLVERにSXAT_HSもしくはSXAT_SCALINGを指定します。 67 | 68 | 指定例) 69 | ``` 70 | % export CCX_DEFAULT_SOLVER=SXAT_SCALING 71 | ``` 72 | -------------------------------------------------------------------------------- /utils/rccx/README: -------------------------------------------------------------------------------- 1 | Remote ccx(rccx) enables you to use ccx on Linux server from the applications 2 | on your Windows PC such as PrePoMax. This function consist of two components, 3 | client-side command on Windows and server-side script on Linux server. 4 | 5 | 1) rccx.exe 6 | The client-side command running on Windows. The following configuration required for now. 7 | - SSH access without login prompt (see below) 8 | - Share working directory between client(Windows) and Server(Linux) 9 | 10 | [How to build] 11 | Build with MinGW on MSYS2(www.msys2.org). See build.sh for detail. 12 | 13 | Pre-built command is included at clinet/rccx.exe. 14 | 15 | 2) ccx_wrapper 16 | The wrapper script which calls ccx command installed on Linux server. 17 | You need to set the following variables in accordance with your environment. 18 | 19 | CCX_CMD: set full-path to your ccx command 20 | CCX_WORK_DIR: set full-path to work directory which is shared with client Windows PC. 21 | 22 | [How to Use from PrePoMax] 23 | Edit configuration in "Tools"-"Setting"-"CalculiX" on PrePoMax 24 | Work directory: set full-path to work directory which is shared with client Windows PC. 25 | Executable: set full-path to rccx.exe 26 | Number of processors: the number of processor on server side 27 | Environment variables: set following variables (Required) 28 | CCX_SERVER: IP address or Hostname(If the name can be resolved on Windows) to Linux server 29 | CCX_USER: username on Linux server (Require ssh access without login prompt) 30 | CCX_CMD: full-path to ccx_wrapper on Linux 31 | CCX_DEFAULT_SOLVER: set default solver name for ccx(SPOOLES,PARDISO,SX-AUR_HS,SX-AUR_SCALING,...) 32 | 33 | [How to set ssh accsess without login prompt] 34 | 1. Run ssh-keygen.exe in command prompt. Do not set passphrase. 35 | 2. copy the content in id_rsa.pub created under ${HOME}/.ssh to ~/.ssh/authorized_keys on Linux server. 36 | 3. Check ssh access without login prompt. 37 | -------------------------------------------------------------------------------- /utils/rccx/README_JP: -------------------------------------------------------------------------------- 1 | リモートccx(rccx)は、PrePoMax等Windows上のプリポストアプリケーションから、ネットワーク経由で 2 | Linux上のccxコマンドを呼び出す機能です。rccxは以下の2つのコンポーネントからなります。 3 | 4 | 1) rccx.exe 5 | Windows上で動作するrccxクライアント。現実装では以下の2つを前提としている。 6 | - ccxソルバを実行するサーバへのパスワード無しでのSSHアクセス設定(後述)。 7 | - ワークディレクトリは、クライアントとサーバで共有ファイルシステム上に配置。 8 | 9 | [ビルド方法] 10 | MSYS2(www.msys2.org)上のMinGWを使用してビルド。build.shを参照。 11 | 12 | 2) ccx_wrapper 13 | Linuxサーバ上で動作するccx実行用スクリプト。環境に合わせて設定が必要。 14 | 15 | CCX_CMD: 使用するccxコマンドをフルパスで指定 16 | CCX_WORK_DIR: クライアントと共有しているワークディレクトリをフルパスで指定 17 | 18 | 【使用方法】 19 | PrePoMaxの"Tools"-"Setting"-"CalculiX"で以下を指定。 20 | Work directory: サーバと共有しているワークディレクトリをフルパスで指定 21 | Executable: rccx.exe の場所をフルパスで指定 22 | Number of processors: サーバで実行する際の並列度を指定 23 | Environment variables: 以下の環境変数を設定(必須) 24 | CCX_SERVER: LinuxサーバのIPアドレスもしくはホスト名(名前解決できる場合)を指定 25 | CCX_USER: Linuxサーバ側のユーザ名を指定(パスワード無しでSSHアクセスできる必要あり) 26 | CCX_CMD: Linuxサーバ上に配置したccx_wrapperの場所をフルパスで指定 27 | CCX_DEFAULT_SOLVER: ccxでデフォルトで使用するソルバを指定(SPOOLES,PARDISO,SX-AUR_HS,SX-AUR_SCALING等) 28 | 29 | 【パスワード無しでSSHアクセスを可能にする方法】 30 | 1. コマンドプロンプトからssh-keygen.exeを実行して鍵を作成(passphraseは設定しない) 31 | 2. ${HOME}/.ssh配下に作成されたid_rsa.pubの内容を、Linuxサーバの ~/.ssh/authorized_keysに追加 32 | 3. パスワード無しでssh接続できることを確認 33 | -------------------------------------------------------------------------------- /utils/rccx/client/build.sh: -------------------------------------------------------------------------------- 1 | gcc rccx.c -o rccx -I/usr/include -static -lgcc -lwinpthread 2 | -------------------------------------------------------------------------------- /utils/rccx/client/rccx.c: -------------------------------------------------------------------------------- 1 | //#include 2 | #include 3 | #include 4 | #include 5 | //#include 6 | //#include 7 | 8 | #define MAX_STR_LEN 256 9 | 10 | int main(int argc, char **argv) { 11 | pid_t pid; 12 | int status; 13 | 14 | char *inp_name = "Analysis-1"; 15 | char *ncpu, *ccx_server, *ccx_user, *ccx_cmd, *ccx_solver; 16 | char cmd[MAX_STR_LEN]; 17 | 18 | if (argc > 1) { 19 | inp_name = argv[1]; 20 | } 21 | 22 | ccx_server = getenv("CCX_SERVER"); 23 | if (ccx_server == NULL) { 24 | ccx_server = "ccx_server"; 25 | } 26 | 27 | ccx_user = getenv("CCX_USER"); 28 | if (ccx_user == NULL) { 29 | ccx_user = "guest"; 30 | } 31 | 32 | ccx_cmd = getenv("CCX_CMD"); 33 | if (ccx_cmd == NULL) { 34 | ccx_cmd = "ccx_wrapper"; 35 | } 36 | 37 | ccx_solver = getenv("CCX_DEFAULT_SOLVER"); 38 | if (ccx_solver == NULL) { 39 | ccx_solver = "DEFAULT"; 40 | } 41 | 42 | ncpu = getenv("OMP_NUM_THREADS"); 43 | if (ncpu == NULL) { 44 | ncpu = "1"; 45 | } 46 | 47 | snprintf(cmd, MAX_STR_LEN, "ssh.exe %s@%s %s %s %s %s", 48 | ccx_user, ccx_server, ccx_cmd, ccx_solver, ncpu, inp_name); 49 | system(cmd); 50 | } 51 | -------------------------------------------------------------------------------- /utils/rccx/client/rccx.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ISCPC/CalculiX-Builder/93101c353032ed4bc5b211ed549db1ba4f6e9436/utils/rccx/client/rccx.exe -------------------------------------------------------------------------------- /utils/rccx/server/ccx_wrapper: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # This is a sample wrapper sciript. 4 | # You need to fix the following variable depending on your environment. 5 | export CCX_VEO_LIBRARY_PATH=/home/iscpc/lib/libccx.so 6 | CCX_CMD=/home/iscpc/CalculiX/bin/ccx_2.16_MT 7 | CCX_WORK_DIR=/shared_directory/CalculiX/tmp 8 | 9 | export LD_LIBRARY_PATH=/opt/intel/lib/intel64:/opt/intel/mkl/lib/intel64:${LD_LIBRARY_PATH} 10 | export OMP_NUM_THREADS=$2 11 | export CCX_DEFAULT_SOLVER=$1 12 | 13 | ${CCX_CMD} ${CCX_WORK_DIR}/$3 14 | -------------------------------------------------------------------------------- /utils/wsl-ccx/README.md: -------------------------------------------------------------------------------- 1 | ### About 2 | wsl-ccs is sample scripts to use CalculiX-ccx solver on WSL as PrePomax solver. 3 | Furthermore, it inculues sample codes to use CaclculiX-ccx on an external server on cloud service. 4 | wsl-ccx is consist of following three componets. 5 | 6 | !!!Notice!!! wsl-ccs works ONLY with WSL2. It doesn't work with WSL1. 7 | 8 | 1) wsl-ccx.bat 9 | A batch script to call ccx_wapper.sh on WSL from PrePoMax. It runs on Windows. 10 | 11 | 2) ccx_wrapper.sh 12 | A Wrapper script to call ccx solver on WSL or on external server. 13 | 14 | 3) ccx_sxat.sh(optional) 15 | A script for external sever on which ccx solver run. It is used if you want to use ccx sovler on external server via the internet. 16 | This script is an example script to call VE-supported ccx on SX-Aurora TSUBASA. 17 | 18 | ### Usage 19 | #### Case 1: Use CalculiX-ccx on WSL2 20 | 1. Put client/wsl-ccx.bat to arbitary place. Set following parameters in "Tools"->"CalculiX" on PrePoMax. 21 | - Set the path to wsl-ccx.bat by full-path in "CalculiX: Executable" 22 | - (Optional)Set "Number of preocesses"(default:1) 23 | - (Optional)Add the following variable in "Parallelization: Environment variables" 24 | |Environment Variable| Description | 25 | ----|---- 26 | |WSL_NAME| WSL instance name to use(If not set, the default instance is used.)| 27 | 28 | 2. Put server/ccx_wrapper.sh into ~/local/bin on WSL. 29 | 30 | #### Case 2: Use CalculiX-ccx on external server (e.g. SX-Aurora TSUBASA) 31 | 1. Confirm to be able to connect external server with ssh without password. 32 | 2. Make sure that rsync is installed on both WSL2 and external server. 33 | 3. Put client/wsl-ccx.bat to arbitary place. Set following parameters in "Tools"->"CalculiX" on PrePoMax. 34 | - Set the path to wsl-ccx.bat by full-path in "CalculiX: Executable" 35 | - (Optional)Set "Number of preocesses"(default:1) 36 | - Add the following variable in "Parallelization: Environment variables" 37 | |Environment Variable| Description | 38 | ----|---- 39 | |WSL_NAME| WSL instance name to use(If not set, the default instance is used.)| 40 | |CCX_REMOTE_HOST| Hostname of external server (Set as user@hostname format)| 41 | |CCX_REMOTE_PORT| Port number for SSH connection to external server(optional)| 42 | |CCX_REMOTE_DIR| Work directory on external server| 43 | |CCX_DEFAULT_SOLVER| Default selver name(optional)| 44 | 45 | 4. Put server/ccx_wrapper.sh into ~/local/bin on WSL2. 46 | 5. Put server/ccx_sxat.sh into ~/local/bin on external server. 47 | Please fix ccx_sxat.sh for the environment of your external server such as: 48 | - ccx version 49 | - SDK version (if you use VE-supported ccx) 50 | - Path to Intel-MKL (if you use PARDISO supported ccx) 51 | 52 | 53 | ### TIPS 54 | #### How to setup ssh connection without password 55 | This is how to setup ssh to connect external server from wsl2 without password. 56 | 57 | ``` 58 | $ ssh-keygen 59 | (Press ENTER for all questions) 60 | $ ssh-copy-id 61 | (Enter password to login external server) 62 | ``` 63 | 64 | if you cannot access your server directly, add the contents in ~/.ssh/id_rsa.pub 65 | to ~/.ssh/authorized_keys on your external server manually. 66 | 67 | #### How to use SSH portforwading for the server which needs to access via gateway 68 | You can use SSH portforwarding to connect your external server which needs to access via gateway server. This is an example to establish SSH portforwarding connection. 69 | 70 | 1) Establish SSH portfording connection with ssh command on WSL. 71 | ``` 72 | $ ssh -L 10022::22 73 | ``` 74 | 75 | 2) During ssh command above is working, you can connect external server directly from another WSL terminal with following command. 76 | 77 | ``` 78 | $ ssh @localhost:10022 79 | ``` 80 | -------------------------------------------------------------------------------- /utils/wsl-ccx/README_JP.md: -------------------------------------------------------------------------------- 1 | ### 概要 2 | wsl-ccxは、PrePoMaxのソルバとしてWSL上で動作するCalculiX-ccxを使用するためのサンプルスクリプト群です。 3 | また、応用例としてWSL経由でクラウド上にある外部の計算サーバ上のCalculiX-ccxを使用する機能も追加してあります。 4 | wsl-ccxは以下の3つのコンポーネントからなります。 5 | 6 | !!!注意!!! 本サンプルスクリプトはWSL2のみで動作します。WSL1では正しく動作しません。 7 | 8 | 1) wsl-ccx.bat 9 | PrePoMaxからWSL上のccx_wrapper.shを呼び出すためのバッチスクリプト 10 | 11 | 2) ccx_wrapper.sh 12 | WSL上でccxを呼び出すためのラッパースクリプト 13 | 14 | 3) ccx_sxat.sh(optional) 15 | ネットワーク経由で外部の計算サーバに接続する際に、外部サーバ側に置くスクリプト。 16 | 本スクリプトは、外部に設置したSX-Aurora TSUBASA上のVE対応版CalculiXを呼び出す例。 17 | 18 | ### 使用方法 19 | #### 【使用方法1】WSL2上のCalculiX-ccxを使用する 20 | 1. Windowsの任意の場所に、client/wsl-ccx.batを配置。PrePoMaxの"Tools"->"CalculiX"で以下の設定行う。 21 | - "CalculiX: Executable"に、wsl-ccx.batをフルパスで指定 22 | - (Optional)実行時の使用CPUコア数を指定(デフォルトは1) 23 | - (Optional)"Parallelization: Environment variables"に以下のパラメータを設定する。 24 | |環境変数| 説明 | 25 | ----|---- 26 | |WSL_NAME| 使用するWSL2インスタンス名を指定(省略時にはデフォルトインスタンス使用)| 27 | 28 | 2. server/ccx_wrapper.shをWSL2上の ~/local/bin内に配置。 29 | 30 | #### 【使用方法2】外部のサーバ(例えばSX-Aurora TSUBASA)上のCaluliX-ccxを使用する 31 | 1. 外部のサーバにwsl2からパスワードなしでssh接続できることを確認する。 32 | 2. WSL2および外部サーバにrsyncがインストールされていることを確認する。 33 | 3. Windowsの任意の場所に、client/wsl-ccx.batを配置。PrePoMaxの"Tools"->"CalculiX"で以下の設定行う。 34 | - "CalculiX: Executable"に、wsl-ccx.batをフルパスで指定 35 | - (Optional)実行時の使用CPUコア数を指定(デフォルトは1) 36 | - "Parallization: Environment variables" に以下のパラメータを設定する 37 | |環境変数| 説明 | 38 | ----|---- 39 | |WSL_NAME| 使用するWSL2インスタンス名を指定(省略時にはデフォルトインスタンス使用)| 40 | |CCX_REMOTE_HOST| 外部サーバのホスト名を user@hostname の形式で指定する。| 41 | |CCX_REMOTE_PORT| 外部サーバへのssh接続時のポート番号を指定する(optional)| 42 | |CCX_REMOTE_DIR| 外部サーバ上での作業ディレクトリを指定する| 43 | |CCX_DEFAULT_SOLVER| デフォルトで使用するソルバを指定する(optional)| 44 | 45 | 4. server/ccx_wrapper.shをWSL2上の ~/local/bin内に配置。 46 | 5. server/ccx_sxat.shを外部のサーバ上の~/local/bin内に配置。 47 | ccx_sxat.shの内容は、外部サーバでのccx動作環境によって適宜修正してください。 48 | - 使用するccxのバージョン 49 | - (SX-Aurara TSUBASAの場合)使用するSDKのバージョン 50 | - (PARDISOを使用する場合)Intel-MKLのライブラリパス 51 | 52 | 53 | ### 参考情報 54 | #### パスワードなしsshでログインできるようにする方法 55 | WSL2環境から、外部サーバへパスワードなしで接続するための設定です。 56 | 57 | ``` 58 | $ ssh-keygen 59 | (聞いてくる質問には全てENTER) 60 | $ ssh-copy-id <外部サーバのホスト名orIPアドレス> 61 | (外部サーバにログインするためのパスワードを入力) 62 | ``` 63 | 64 | もし、ゲートウェイ越しのアクセス等で直接SSH接続できない場合は、 65 | WSL環境上の~/.ssh/id_rsa.pub を内容を、外部サーバ上の~/.ssh/authorized_keysに 66 | 追記して下さい。 67 | 68 | #### 外部サーバがゲートウェイサーバ経由での接続が必要な場合 69 | SSHポートフォワーディングを使用することで、ゲートウェイ越しの外部サーバに直接接続できるようにすることが可能です。設定例を以下に示します。 70 | 71 | 1) WSL2のターミナルから、以下のコマンドでポートフォワーディングを確立します。 72 | ``` 73 | $ ssh <ゲートウェイのホスト名orIPアドレス> -L 10022:<外部サーバのホスト名orIPアドレス>:22 74 | ``` 75 | 76 | 2) 上記が動作している状態で、WSL2の別ターミナルから、以下のコマンドで外部サーバに直接ssh接続できます。 77 | 78 | ``` 79 | $ ssh @localhost:10022 80 | ``` 81 | -------------------------------------------------------------------------------- /utils/wsl-ccx/client/wsl-ccx.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | REM check environment variables 4 | set CCX_WORK_DIR=%CD% 5 | set WSLENV=OMP_NUM_THREADS:CCX_REMOTE_WORK_DIR:CCX_WORK_DIR/p:CCX_REMOTE_HOST:CCX_REMOTE_PORT:CCX_REMOTE_DIR:CCX_DEFAULT_SOLVER 6 | 7 | if not defined OMP_NUM_THREADS ( 8 | set OMP_NUM_THREADS=1 9 | ) 10 | 11 | echo CCX_REMOTE_WORK_DIR = %CCX_REMOTE_WORK_DIR% 12 | echo OMP_NUM_THREADS = %OMP_NUM_THREADS% 13 | echo WSL_NAME = %WSL_NAME% 14 | 15 | REM Run ccx 16 | if defined WSL_NAME ( 17 | echo "Call ccx on WSL named %WSL_NAME%." 18 | wsl -d %WSL_NAME% ~/local/bin/ccx_wrapper.sh %1 %OMP_NUM_THREADS% %CCX_REMOTE_WORK_DIR% 19 | ) else ( 20 | echo "Call ccx on default WSL environment." 21 | wsl ~/local/bin/ccx_wrapper.sh %1 %OMP_NUM_THREADS% %CCX_REMOTE_WORK_DIR% 22 | ) -------------------------------------------------------------------------------- /utils/wsl-ccx/server/ccx_sxat.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # For Release version 4 | DISTROOT=${HOME}/local 5 | 6 | # For Testing version 7 | #DISTROOT=../.. 8 | 9 | # Set Command version 10 | CCX_SUFFIX=2.19_MT 11 | 12 | if [ $# -gt 0 ] 13 | then 14 | INPFILE=$1 15 | shift 16 | fi 17 | 18 | if [ "${EXODUS}" = "yes" ] 19 | then 20 | CMD_OPT="-o exo" 21 | fi 22 | 23 | echo "### Solve ${INPFILE} with ${CMD} ###" 24 | echo "OMP_NUM_THREADS=${OMP_NUM_THREADS}" 25 | echo "CCX_REMOTE_DIR=${CCX_REMOTE_DIR}" 26 | 27 | # Set Command/Library Path 28 | CMDPATH=${DISTROOT}/bin 29 | export VESOLVER_PATH=${DISTROOT}/ve/lib/libvesolver.so 30 | 31 | export LD_LIBRARY_PATH=/opt/intel/oneapi/compiler/latest/linux/compiler/lib/intel64_lin:${LD_LIBRARY_PATH} 32 | export LD_LIBRARY_PATH=/opt/intel/oneapi/mkl/latest/lib/intel64:${LD_LIBRARY_PATH} 33 | export LD_LIBRARY_PATH=${DISTROOT}/lib:${LD_LIBRARY_PATH} 34 | export VE_LD_LIBRARY_PATH=${DISTROOT}/ve/lib:${VE_LD_LIBRARY_PATH} 35 | #export VEORUN_BIN=/opt/nec/ve/veos/libexec/aveorun 36 | 37 | export PATH=/opt/nec/ve/bin:${PATH} 38 | source /opt/nec/ve/nlc/2.0.0/bin/nlcvars.sh 39 | source /opt/nec/ve/mpi/2.5.0/bin/necmpivars.sh 40 | 41 | # Run Solver 42 | cd ${CCX_REMOTE_DIR} 43 | ${CMDPATH}/ccx_${CCX_SUFFIX} ${INPFILE} ${CMD_OPT} 44 | -------------------------------------------------------------------------------- /utils/wsl-ccx/server/ccx_wrapper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #CCX_REMOTE_HOST= 3 | #CCX_REMOTE_PORT= 4 | #CCX_REMOTE_DIR= 5 | 6 | #. /opt/intel/oneapi/setvars.sh 7 | echo "WSLENV=$WSLENV" 8 | echo "OMP_NUM_THREADS=$OMP_NUM_THREADS" 9 | echo "CCX_REMOTE_WORK_DIR=$CCX_REMOTE_WORK_DIR" 10 | echo "CCX_WORK_DIR=$CCX_WORK_DIR" 11 | echo "CCX_DEFAULT_SOLVER=$CCX_DEFAULT_SOLVER" 12 | 13 | cd "$CCX_WORK_DIR" 14 | 15 | if [ "${CCX_REMOTE_HOST}" = "" ] 16 | then 17 | if [ -d /opt/intel/oneapi ] 18 | then 19 | MKL_PATH=/opt/intel/oneapi/mkl/latest/lib/intel64:/opt/intel/oneapi/compiler/latest/linux/compiler/lib/intel64_lin 20 | else 21 | MKL_PATH=/opt/intel/mkl/lib/intel64_lin:/opt/intel/lib/intel64_lin 22 | fi 23 | export LD_LIBRARY_PATH=${MKL_PATH}:${LD_LIBRARY_PATH} 24 | ${HOME}/local/bin/ccx_2.19_MT $1 25 | else 26 | if [ "${CCX_REMOTE_PORT}" != "" ] 27 | then 28 | SSH_OPTIONS="-p ${CCX_REMOTE_PORT}" 29 | fi 30 | if [ "${CCX_REMOTE_DIR}" = "" ] 31 | then 32 | echo "ERROR: CCX_REMOTE_DIR is not specified." 33 | exit 1 34 | fi 35 | echo "Sending data to ${CCX_REMOTE_DIR}..." 36 | rsync -e "ssh ${SSH_OPTIONS}" * ${CCX_REMOTE_HOST}:${CCX_REMOTE_DIR} 37 | ssh ${SSH_OPTIONS} ${CCX_REMOTE_HOST} OMP_NUM_THREADS=${OMP_NUM_THREADS} CCX_REMOTE_DIR=${CCX_REMOTE_DIR} CCX_DEFAULT_SOLVER=${CCX_DEFAULT_SOLVER} ./local/bin/ccx_sxat.sh $1 38 | echo "Collecting result..." 39 | rsync -e "ssh ${SSH_OPTIONS}" ${CCX_REMOTE_HOST}:${CCX_REMOTE_DIR}/* . 40 | fi 41 | --------------------------------------------------------------------------------