nAGは、以下のような様々なコードチューニングが可能です。
これらチューニング項目について、nAGが直接実施あるいはお客様の開発をサポートした、HECToRプロジェクト(英国HP:http://www.hector.ac.uk/)での具体的なチューニング作業例をご紹介します。
以下の事例の多くの場合は、一つのコードに対して複数のチューニング項目を行っています。
より詳細なチューニング事例については、事例一覧ページからご覧ください。代表事例の概要については、代表的な成功事例やチューニング解析事例もご覧ください。
1CPU内の複数コアを効率的に利用する、複数CPUへデータや処理を分散して並列化する、マルチコアおよびマルチCPUの全てを効率的に利用して実行時間を圧縮する等の最適化を行います。本サービスではこれら目的に応じて、効率的な並列コードへお客さまプログラムを最適化します。
MPI並列化とコード最適化
ここで示す例は、シリアルコードのMPI並列化およびMPI並列コードの最適化です。
プログラム | コード特性 | チューニング内容 |
BOFFS(Block overset Fast Flow Solver)[2] | 空気力学、CFDコード、圧縮性、陽解法、ブロックoverset構造格子、ハイブリッド並列 | 既存のMPIタスクに対して複数メッシュブロック割当てアルゴリズムを実装。 |
CASTEP[7] | 物性科学、DFTコード、MPI並列 | バンド並列をMPIで実装 |
Compact3D[27] | 空気力学、CFDコード、圧縮性、陽解法、構造格子、シリアルコード | 2DECOMP&FFTライブラリーを用いた領域分割とMPI並列化、既存の空間の陰的スキームにステンシルベースの陽的スキームを追加、2Dペンシル領域へのハロセル追加。 |
CONQUEST[11] | 物性科学、オーダーN法DFTコード、MPI並列 | 各k点での対角化処理を独立に計算させるk点並列化 |
DL_POLY[17] | 物性科学、MDコード、MPI並列 | 並列リンクセルアルゴリズムの実装 |
Fluidity[20] | 流体解析、CFDコード、非圧縮性混相流体、陽解法、有限要素法、アダプティブ非構造格子、ハイブリッド並列 | 既存のシリアルバージョンのアダプティビティ処理コンポーネントの並列化、ディテクターを並列アダプティビティ処理へ実装。 |
Incompact3D[26], 2DECOMP&FFT |
空気力学、CFDコード、非圧縮性、陽解法、構造格子、MPI並列 | 既存の1D分割MPI並列コードへ、2D領域分割ライブラリ2DECOMP&FFTによる2Dペンシル分割によ並列化と、多次元配列の次元交換機能の実装 |
LEM(Met Office Large Eddy Model)[30] | 気象学、CFDコード、非圧縮性流体、陽解法、構造格子、MPI並列 | 並列BiCGStab法の実装 |
MicroMag[31] | 磁気鉱物、Landau-Lifschitz-Gilbert方程式、有限要素法、シリアルコード | 要素による領域分割を実装し、MPI並列化 |
NEMO(Nucleus for European Modelling of the Ocean)[32] | 海洋気象、OPA海洋エンジンコンポーネント、MPI並列 | 3次元配列インデックスとネストしたループの入れ替えを行いキャッシュ再利用効率を向上、より柔軟な領域分割の導入、ハロ交換の配列インデックスの入替、および陸地セル上の余分な計算の除去、等による並列効率改善 |
OpenFOAM[33] | 汎用流体解析、MPI並列 | HECToRへの移植インストール/テストおよびベンチマーク評価 |
PEQUOD(Parallel Quasi-Geostrophic Model)[4] | 海洋循環、CFDコード、非圧縮性流体、多層準地衡的渦位方程式、MPI並列 | 逆渦位変換のヘルムホルツ・ソルバーMPI並列化 |
SPRINT(Simple Parallel R Interface)[42] | 遺伝子統計解析R-package、シリアルコード | 並べ替え検定関数のMPI並列化、ランダムフォレスト分類器におけるブートストラップ標本からのツリー生成タスクをMPI並列化、rank product法へMPI並列ブートストラップ法を実装、サポートベクターマシンのMPI並列化 |
VASP(Vienna Ab initio Simulation Package)[48] | 物性科学、DFTコード、MPI並列 | k点上のMPI並列化 |
*並列計算のための領域分割に関しては、項目領域分割手法の改善を参照してください。
OpenMP並列化とコード最適化
ここで示す例は、MPI並列コードに対するOpenMP並列の導入によるハイブリッド並列化です。
プログラム | コード特性 | チューニング内容 |
BOFFS(Block overset Fast Flow Solver)[2] | 空気力学、CFDコード、圧縮性、陽解法、ブロックoverset構造格子、ハイブリッド並列 | メッシュブロック内計算のOpenMP並列化、三重対角ソルバのRed-Black方式のOpenMP並列化 |
CASINO[6] | 物性科学、量子モンテカルロ法コード、MPI並列 | 単一配位計算内の電子数ループのOpenMP並列化 |
CASTEP[7] | 物性科学、DFTコード、MPI並列 | Vサイクル/マルチグリッド法のOpenMP並列化 |
CONQUEST[11] | 物性科学、オーダーN法DFTコード、MPI並列 | 1ハロ領域内の原子数ループのOpenMP並列化 |
CP2K[13] | 量子化学、DFTコード、MPI並列 | FFT、実空間/平面波変換のOpenMP並列化 |
DL_POLY[17] | 物性科学、MDコード、MPI並列 | SHAKE/RATTLEアルゴリズムをOpenMP並列化 |
DSTAR(Direct Simulation of Turbulence And Reaction)[18] | 空気力学、CFDコード、圧縮性、陽解法、構造格子、MPI並列 | ローカルグリッド上の演算をOpenMP並列化 |
Fluidity-ICOM(Imperial College Ocean Model)[21] | 流体解析、CFDコード、非圧縮性混相流体、陽解法、有限要素法、アダプティブ非構造格子、MPI並列 | 有限要素アセンブリステージのOpenMP並列化 |
HELIUM[24] | 原子分子物理、時間依存シュレディンガー方程式、MPI並列 | 基底関数上のOpenMP並列化 |
TOMCAT/GLOMAP(Global Modelling of Aerosol Processes)[44] | 大気化学、エアロゾル微視的物理モデル解析、MPI並列 | 緯度/経度ループ上のOpenMP並列化 |
VASP(Vienna Ab initio Simulation Package)[48] | 物性科学、DFTコード、MPI並列 | PAW擬ポテンシャル等のタスク内演算をOpenMP並列化 |
シリアルコードからのOpenMP/MPIハイブリッド並列化
プログラム | コード特性 | チューニング内容 |
CABARET(Compact Accurate Boundary Adjusting high REsolution Technique)[3] | 空気力学、CFDコード、圧縮性、陽解法、Gambit非構造格子、シリアルコード | 非構造格子の自動領域分割を実装してMPI並列化、同時に、セル数とサイド数ループをOpenMP並列化 |
DL_ALMC(adaptive Kinetic Monte Carlo)[16] | 物性科学、adaptive kinetic Monte Carlo法 | エネルギーと力の計算をOpenMP/MPIハイブリッド並列化 |
UKRMol-in(UK R-matrix polyatomic suite)[3] | 原子分子物理、時間依存R行列法、シリアルコード | ハミルトニアンの構築と対角化処理/spMV演算をOpenMP/MPIハイブリッド並列化 |
その他、以下のハイブリッド並列コードのチューニング/移植/性能調査の例があります。
プログラム | コード特性 | チューニング内容 |
COSA[12] | 空気力学、CFDコード、圧縮性流体、陽/陰解法、有限体積法、マルチブロック構造格子、ハイブリッド並列 | 負荷バランス、通信効率、I/O、収束性等、全般的なチューニング |
TPLS(Two-Phase Level Set)[45] | 空気力学、CFDコード、二相流ナビエストークス流体ソルバー、ハイブリッド並列 | 冗長なMPIバリアやOpenMP集団操作を削除等のチューニング |
WRF model(Weather Research and Forecast model)[50] | 気象モデリング、CFDコード、圧縮性、陽解法、スタッガード格子、ハイブリッド並列 | 移植と全体性能プロファイリング |
実績の多くはMPI通信に関するものです。
プログラム | コード特性 | チューニング内容 |
BOFFS(Block overset Fast Flow Solver)[2] | 空気力学、CFDコード、圧縮性、陽解法、ブロックoverset構造格子、ハイブリッド並列 | 既存ハイブリッド並列コードへ、ブロック間データ転送に非同期MPI通信を実装 |
CABARET(Compact Accurate Boundary Adjusting high REsolution Technique)[3] | 空気力学、CFDコード、圧縮性、陽解法、Gambit非構造格子、シリアルコード | ステップ毎のハロデータへのアクセス通信において、間接参照スキームが支配して効率が悪いため、非同期MPIを実装し、通信と計算のオーバーラップを実装 |
CASTEP[7] | 物性科学、DFTコード、MPI並列 | MPI_Alltoall通信のシェアードメモリーバッファ利用による最適化 、コミュニケーションパターンをシストリックループ(リングトポロジー)を用いた非ブロッキング非同期通信への置き換え |
DL_POLY[17] | 物性科学、MDコード、MPI並列 | MPI並列コードへ、計算と通信のオーバーラップの実装 |
PEQUOD(Parallel Quasi-Geostrophic Model)[4] | 海洋循環、CFDコード、非圧縮性流体、多層準地衡的渦位方程式 | MPI_Alltoallw集団通信をMPI_Alltoallの使用へ修正 |
COSA[12] | 空気力学、CFDコード、圧縮性流体、陽/陰解法、有限体積法、マルチブロック構造格子、ハイブリッド並列 | 送信データあるいは受信したデータを配列へ収集して送信するように改変。MPI_Allreduce通信の最適化 |
DG-DES(Dynamic Grid - Detached Eddy Simulation)[15] | 空気力学、CFDコード、圧縮性流体、陽解法、非構造格子、MPI並列 | プロファイリングとMPI通信周りのシンプルなコード改善 |
Incompact3D[26], 2DECOMP&FFT |
空気力学、CFDコード、非圧縮性、陽解法、構造格子、MPI並列 | 2DECOMP&FFTにおけるノンブロッキングMPIグループ通信の実装による計算と通信のオーバーラップを実装 |
SOFTaR(Simulations of Flames: Turbulence and Reaction)[40] | 空気力学・燃焼、CFDコード、圧縮性流体、陽解法、構造格子、MPI並列 | MPI_SEND/RESVをALLTOALL集団通信へ変更して効率化 |
TPLS(Two-Phase Level Set)[45] | 空気力学、CFDコード、二相流ナビエストークス流体ソルバー、ハイブリッド並列 | 通信と計算のオーバーラップのために、ノンブロッキング1対1通信を実装 |
これが必要になる多くの場合は、お客様がご利用のマシンを1コア環境からマルチコア環境へ移行するケースです。既存のシリアル実行I/O処理を、MPIや外部ライブラリを用いて効率的に並列処理するようにチューニングします。
プログラム | コード特性 | チューニング内容 |
CABARET(Compact Accurate Boundary Adjusting high REsolution Technique)[3] | 空気力学、CFDコード、圧縮性、陽解法、Gambit非構造格子、ハイブリッド並列 | MPI-IO実装によるI/O並列化 |
CARP(Cardiac Arrhythmia Research Package)[5] | 心臓モデリング、有限要素法、心臓バイドメイン方程式、MPI並列 | 出力ルーチンの高負荷を非同期処理実装で削減 |
CASINO[6] | 物性科学、量子モンテカルロ法コード、MPI並列 | I/O処理の最適化とMPI並列によるデータ分散処理の追加によるチューニング |
CASTEP[7] | 物性科学、DFTコード、MPI並列 | 1対1MPI通信からMPI集団通信への変更によるI/O効率化 |
COSA[12] | 空気力学、CFDコード、圧縮性流体、陽/陰解法、有限体積法、マルチブロック構造格子、ハイブリッド並列 | 事前にデータを配列へ集約して一度に書き込む様に修正、MPI I/Oを改善 |
DL_POLY[17] | 物性科学、MDコード、MPI並列 | MPI-I/Oによる並列入出力処理実装 |
DSTAR(Direct Simulation of Turbulence And Reaction)[18] | 空気力学、CFDコード、圧縮性、陽解法、構造格子、MPI並列 | MPI-I/Oによる並列入出力処理実装 |
NEMO(Nucleus for European Modelling of the Ocean)[32] | 海洋気象、OPA海洋エンジンコンポーネント、MPI並列 | 格子生成に関する調査と陸地セルの削除、netCDF 4.0への変更 |
OpenIFS(Integrated Forecasting System)[34] | 気象モデリング、静水圧流体、半陰解法、ハイブリッド並列 | 並列I/O機能(FDB関数)を導入、Lustreファイルストライピング・サイズやその数、hugepage設定、FDBコンフィグレーションに関する性能調査 |
SPECFEM3D_GLOBE[41] | 地震波解析、スペクトル有限要素法(SEM)、MPI並列 | 独立したメッシュ生成部を解析計算コードへマージして中間メッシュデータI/Oを削除 |
SPRINT(Simple Parallel R Interface)[42] | 遺伝子統計解析R-package、シリアルコード | ピアソンのペアワイズ相関関数におけるMPI-I/O並列化 |
TOMCAT/GLOMAP(Global Modelling of Aerosol Processes)[44] | 大気化学、エアロゾル微視的物理モデル解析、MPI並列 | I/O最適化 |
VOX-FE[49] | 骨格モデリング、ボクセルベース有限要素法、MPI並列 | netCDF-HDF5フォーマットへ変更することでファイルサイズを縮小、並列netCDFルーチンを用いたディスクI/O並列化 |
近年のマルチコアCPUのトレンドでは、高速アクセス可能なメモリー量はメモリー階層化により制約が多くなりつつあります。特に並列計算においては並列演算量とメモリー量、通信量は複雑なトレードオフ関係にあります。以下の例はSHMEMやキャッシュ効率やより省メモリーなアルゴリズム変更によるチューニングです。
プログラム | コード特性 | チューニング内容 |
CASINO[6] | 物性科学、量子モンテカルロ法コード、MPI並列 | SHMEM利用による省メモリー化 |
CASTEP[7] | 物性科学、DFTコード、MPI並列 | メモリー量が系のサイズに関して1次スケールするL-BFGS(limited memory BFGS)法の実装 |
負荷分散の詳細な分析にはコードの性能プロファイリングが必須です。以下の事例は性能分析から実装、評価までの作業を含みます。
*この他、外部ライブラリを用いた改善事例もございます。項目領域分割手法の改善を参照してください。
プログラム | コード特性 | チューニング内容 |
BOFFS(Block overset Fast Flow Solver)[2] | 空気力学、CFDコード、圧縮性、陽解法、ブロックoverset構造格子、ハイブリッド並列 | 既存ハイブリッド並列コードへ、MPIタスクへ複数メッシュブロック割当てを可能にした。 |
CP2K[13] | 量子化学、DFTコード、MPI並列 | グリッドブロックのプロセスへのマッピング改良による負荷バランス改善 |
CONQUEST[11] | 物性科学、オーダーN法DFTコード、MPI並列 | MDや座標最適化において、各原子が特定領域に固定でアサインされる制限(利用コア数制限)を解除 |
COSA[12] | 空気力学、CFDコード、圧縮性流体、陽/陰解法、有限体積法、マルチブロック構造格子、ハイブリッド並列 | 格子ブロックの最大値を並列コア最大数とする制限解除 |
DL_POLY[17] | 物性科学、MDコード、MPI並列 | 動的負荷バランス機能の組込み |
Fluidity[20] | 流体解析、CFDコード、非圧縮性混相流体、陽解法、有限要素法、アダプティブ非構造格子、MPI並列 | Zoltanライブラリの組込みによる負荷バランスとデータマイグレーション、メッシュのリオーダリング |
ISPH(incompressible smoothed particle hydrodynamics)[28] | 流体解析、ISPH法、MPI並列 | 圧力ポアソン方程式ソルバーに対してnew Yaleスパース行列フォーマットをPETScのCSRフォーマットへ置き換え、全体行列構築前に粒子を再番号付け。 |
SWT/SS3F[43] | 流体解析、CFDコード、非圧縮性流体、陽解法、構造格子、クエットポアズイユ流解析、MPI並列 | メッシュの再番号付けアルゴリズムの実装 |
多くの数値シミュレーションコードでは、陰的に解を求めるアルゴリズムが多く存在し、特に線形システムに対しては、解くべき問題に対応して様々な手法の選択余地があります。nAGは、これまでの豊富な数値計算ライブラリ開発とチューニング実績から、適切な手法実装のサポートが可能です。
*その他、外部ライブラリを用いた最適化については、項目数値計算ライブラリの組込みやパラメータチューニングをご覧ください。
プログラム | コード特性 | チューニング内容 |
Chemshell[8] | 量子化学、QM/MM連成計算環境ツール、MPI並列 | エネルギー最小化計算へのmicroiterative法実装 |
Citcom(California Institute of Technology Convection in the Mantle)[9] | 地殻力学、有限要素法、MPI並列 | 既存のVサイクルを改善し、WサイクルとFサイクルを実装。スムーシングについては、既存のヤコビ法ソルバーをガウス・ザイデル法ソルバーへ置き換え、境界ノードに対してblack/redプロセス間通信を実装。 |
COSA[12] | 空気力学、CFDコード、圧縮性流体、陽/陰解法、有限体積法、マルチブロック構造格子、ハイブリッド並列 | Point-Implicit Runge-Kutta(PIRK)スムーサーへLAPACKを実装 |
領域分割を利用する並列計算においては、分割のやり方やパーティションの順序が並列性能に大きな影響を与えます。nAGは、多くのユーザが利用しているオープンソース2DECOMP&FFTライブラリーを開発した実績を持ち、既存コードの分析から適切な領域分割手法/ライブラリ組込みまでの多くの実績を保有しています。
プログラム | コード特性 | チューニング内容 |
BOFFS(Block overset Fast Flow Solver)[2] | 空気力学、CFDコード、圧縮性、陽解法、ブロックoverset構造格子、ハイブリッド並列 | 1D領域分割MPI並列を2D領域分割MPI並列へ更新 |
METIS/Scotch(Cabaretへ適用) | 領域分割パッケージ | 両者をCABARETコードで性能を評価した(10万要素を用いた3D後方ステップ周りの乱流、256コアでテスト)。Scotchが僅かに有利だった。 |
CARP(Cardiac Arrhythmia Research Package)[5] | 心臓モデリング、有限要素法、心臓バイドメイン方程式、MPI並列 | 領域分割コードへParMetisを組込み最適化 |
Code_Saturne[10] | 汎用流体解析、CFDコード、MPI並列 | Metis, ParMetis,Scotch, PT-Scotch, Zoltanを用いたメッシュ領域分割コードの調査・選定 |
CONQUEST[11] | 物性科学、オーダーN法DFTコード、MPI並列 | 3Dヒルベルト空間充填曲線分割法を実装 |
DSTAR(Direct Simulation of Turbulence And Reaction)[18] | 空気力学、CFDコード、圧縮性、陽解法、構造格子、MPI並列 | 既存の1Dスラブ分割に対し、2DECOMP&FFTライブラリを用いた2次元ペンシル領域分割適用。 |
EBL(Ekman Boundary Layer)[19] | 空気力学、CFDコード、非圧縮性、陽解法、構造格子、MPI並列 | 既存の1Dスラブ分割に対し、2DECOMP&FFTライブラリを用いた2次元ペンシル領域分割適用。 |
2DECOMP&FFT/Incompact3D[26] | 2次元ペンシル分割とFFTインターフェイスライブラリ | 2Dペンシル領域分割とそのMPI並列FFTインターフェイスを備えた、2DECOMP&FFTライブラリーを開発。 |
MicroMag[31] | 磁気鉱物、Landau-Lifschitz-Gilbert方程式、有限要素法、MPI並列 | ParMetisによる要素による領域分割を実装 |
nAGは、多くのユーザを持つnAG数値計算ライブラリの開発と販売を行っています。オープンソースBLAS、LAPACKへのコード寄与の実績も豊富です。その他の多くの数学ライブラリに関しても豊富な経験を持ち、様々な調査や組込み、最適化も可能です。
プログラム | コード特性 | チューニング内容 |
CARP(Cardiac Arrhythmia Research Package)[5] | 心臓モデリング、有限要素法、心臓バイドメイン方程式、MPI並列 | 楕円型PDEにおけるPETSc/hyper AMGプレコンディショナのパラメータ最適化、陽解法でのODEのPETSc性能調査と最適化 |
CASTEP[7] | 物性科学、DFTコード、MPI並列 | 逆行列、対角化計算用にScaLAPCK組込み、三重対角ソルバーの最適化(dtrmmおよびztrmm BLASサブルーチンへの変更) |
CONQUEST[11] | 物性科学、オーダーN法DFTコード、MPI並列 | ハミルトニアン対角化に用いるScaLAPACKパラメータを最適化 |
DL_POLY[17] | 物性科学、MDコード、MPI並列 | DaFTへ混合基数FFTを実装し、並列コア数の選択幅を広げた。DaFT内の1次元FFTへスレッド化されたACMLライブラリルーチンを組込 |
Fluidity[20] | 流体解析、CFDコード、非圧縮性混相流体、陽解法、有限要素法、アダプティブ非構造格子、MPI並列 | block-CSR格納形式の組み込み、PETScへのインターフェイスにおいて非零要素が狭いバンド(あるいはクラスタ)になるようにスパース行列の再順序化。 |
Fluidity-ICOM(Imperial College Ocean Model)[21] | 流体解析、CFDコード、非圧縮性混相流体、陽解法、有限要素法、アダプティブ非構造格子、ハイブリッド並列 | スパース線形システムへのPETSc/HYPER BoomerAMGプレコンディショナの組込 |
TPLS(Two-Phase Level Set)[45] | 空気力学、CFDコード、二相流ナビエストークス流体ソルバー、ハイブリッド並列 | 圧力ソルバーを、PETScライブラリブロックヤコビ前処理とGMRES法呼出しへ置換 |
UKRMol-in(UK R-matrix polyatomic suite)[3] | 原子分子物理、時間依存R行列法シリアルコード | 対角化ソルバーにSLEPc/PETScライブラリ導入 |
*領域分割ライブラリに関しては、項目領域分割手法の改善を参照してください。
ベクトル演算マシン上への移植やベクトル化チューニング(必要であれば並列ベクトル化)の実績を有します。
プログラム | コード特性 | チューニング内容 |
CASTEP[7] | 物性科学、DFTコード、MPI並列 | ベクトル演算コードの全般的なチューニング |
HYPO4D(HYdrodynamic Periodic Orbits in 4D)[25] | 流体解析、格子ボルツマン法、MPI並列 | 基本的なベクトル演算コードやループに対するチューニング |
MPI_COMM_WORLDを分割して並列処理を行うタスクファーミング手法についての事例です。
プログラム | コード特性 | チューニング内容 |
DL_ALMC(adaptive Kinetic Monte Carlo)[16] | 物性科学、adaptive kinetic Monte Carlo法 | 鞍部点探索処理をタスクファーミング並列化 |
Chemshell[8] | 量子化学、QM/MM連成計算環境ツール、MPI並列 | 有限差分へシアン計算でのグラジェント計算のタスクファーミング並列化 |
CRYSTAL[14] | 量子化学、HF/DFTコード、MPI並列 | オーダーN法を実装、系をサブシステムへ自動分割し、そのサブシステムを、タスクファーミングされたMPP CRYSTALインスタンス内で独立に動作させる。全フェルミエネルギーと全密度行列計算のための、固有値及び固有ベクトルの通信を実装する。 |
主に分子動力学と、他の手法との連成シミュレーションコードの開発事例です。
プログラム | コード特性 | チューニング内容 |
CASINO[6] | 物性科学、量子モンテカルロ法コード、ハイブリッド並列 | 分子動力学コードとの連成機能追加 |
Transflow/StreamMD[46] | CFDコード/MDコード連成、MPI並列 | データのパッキングと通信のための連成ルーチン開発、Flekkoyらによる流速交換法によるデータ変換実装、ノンブロッキングMPI通信実装、MDファーミング手法の実装 |
プログラム | コード特性 | チューニング内容 |
CONQUEST[11] | 物性科学、オーダーN法DFTコード、MPI並列 | ブリルアンゾーン積分法へのMethfessel-Paxton近似の実装、KerkerプレコンディショナとWave-dependent metricを用いたセルフコンシステント計算実装、スピン分極やvan der Waals力のような弱い相互作用の実装。 |
DL_POLY[17] | 物性科学、MDコード、MPI並列 | リンクセル・スキーム内のVerlet近隣リスト(VNL)計算を、一回ではなく複数回の時間ステップ毎に条件付きで更新されるように拡張。multiple time steppingとしてReversible Reference System Propagator Algorithm(REAPA)を用いたシンプレクティック・スキームを実装し、高コスト演算の計算回数を削減。 |
GS2[23] | プラズマ物理、ジャイロ運動論的乱流解析、MPI並列 | 線形計算と非線形計算間のデータ変換に関連するローカルデータコピーの性能を改善し、間接アドレッシングの利用率を削減して高速化、非線形計算で必要となるデータ分割に、'アンバランス'な分割を実装 |
ISPH(incompressible smoothed particle hydrodynamics)[28] | 流体解析、ISPH法、MPI並列 | MPI片方向通信とZoltanの分散ディレクトリユーティリティ活用で最適化、最近傍探索カーネルを、前処理付き動的ベクトルとリンクリストを用いて修正 |
LAMMPS[29] | 物性科学、MDコード、MPI並列 | 平坦境界とボロノイ図形ライブラリVoro++を用いた膜境界条件、非線形弾性バネ接触モデル(Hertz-Mindlin相互作用、Potyondy and Cundallモデル)の実装 |
RMT[38] | 原子分子物理、多電子原子分子系の時間依存R行列法、MPI並列 | 内殻と外殻間の負荷バランスの改善とMPI通信の効率化、内殻と外殻を繋ぐプロパゲータモデルの最適化 |
SLDECOMP[39] | 地震解析、粒子フィルタ法を用いた潮位時系列解析、MPI並列 | 非零要素の除外、配列アクセス連続化、参照コピーへの変更 |
お客様コードをGPUやIntel®Xeon Phi™環境へ移植し、そのデバイスのハードウェア性能を十分に引き出すように最適化します。必要であれば、要求精度を保つより適切なアルゴリズムへの変更も行います。
Cuda/GPU環境への移植と最適化:
MRG32k3a(L'Ecuyer),MT19937(Mersenne Twister),Sobolの各種乱数発生器、モンテカルロ計算におけるブラウン橋(Brownian Bridge)生成器、倍精度コレスキー分解、LU分解
メニーコアアーキテクチャへの最適化:
弊社nAGライブラリーの多くは、Intel®Xeon Phi™最新のNights landingアーキテクチャに対応しています。
サービスの詳細は、GPU&メニーコア・サービスをご覧ください。
専用システム、特に組込みシステムへのお客様コードや弊社nAG数値計算ライブラリーの移植、最適化についてはご注文に応じて行っています。nAGライブラリーについては、x86、x64、POWER、PowerPC他多くのアーキテクチャに対応し、VxWorks/ARM系プロセッサへの実績も有しています。
サービスの詳細は、組み込みシステム向け移植サービスをご覧ください。
この他、古いFortranプログラムの現代的な形式への書換や移植等のFortranコンサルティング、また、より高度な受託開発や各種アルゴリズムコンサルティングとして、 カスタムアルゴリズム開発、 数理最適化サービス、 自動微分ソリューション 等のご依頼も承ります。各サービスページをご覧ください。
本サービスのご依頼、チューニングや高速化業務の委託をご希望場合は、まずはコンサルティングサービスのお問い合わせにご記入の上お問い合わせください。またはお電話(03-5542-6311)にてお問い合わせ下さい。
ここで記載したプログラムコードについて
さらに詳しい内容/文献は事例一覧ページの各コード事例ページを参照してください。
[1] | MRBV: http://www.hector.ac.uk/cse/distributedcse/reports/mrbv/ |
[2] |
BOFFS: Jefferson-Loveday, R. 2008 Numerical simulations of unsteady impingement jet flows. PhD thesis, Swansea University, UK. http://rsta.royalsocietypublishing.org/content/367/1899/2999 |
[3] | CABARET: "Compact Accurately Boundary Adjusting high-REsolution Technique for Fluid Dynamics", S.A. Karabasov and V.M. Goloviznin, J. Comput.Phys., 228(2009), pp7426-7451. |
[4] | PEQUOD: "CABARET in the Ocean Gyres", S.A. Karabasov, P.S. Berloff and V.M. Goloviznin, Journal of Ocean Modelling, 30 (2009), p55168. |
[5] | CARP: https://carp.medunigraz.at/ |
[6] | CASINO: https://vallico.net/casinoqmc/ |
[7] | CASTEP: http://www.castep.org/ |
[8] | ChemShell: http://www.chemshell.org |
[9] | CITCOM: https://geodynamics.org/cig/software/citcoms/, University of Durham、Jeroen van Hunen博士所有のカルテシアンバージョン |
[10] | Code_Saturne: http://www.code-saturne.org/ |
[11] | Conquest: http://www.order-n.org/ |
[12] | COSA: M.S. Campobasso, A. Piskopakis, M. Yan, Analysis of an Oscillating Wing in a Power-Extraction Regime Based on the Compressible Reynolds Averaged Navier-Stokes Equations and the K-ω SST Turbulence Model, ASME paper GT2013-94531, presented at the ASME/IGTI Turbo Expo 2013 Technical Conference, 3rd-7th June 2013, San Antonio, Texas, USA. |
[13] | CP2K: https://www.cp2k.org/ |
[14] | CRYSTAL: http://www.crystal.unito.it/ |
[15] | DG-DES: https://www.sheffield.ac.uk/mecheng/staff/nqin |
[16] | DL_AKMC: https://ccpforge.cse.rl.ac.uk/gf/project/kmc/ |
[17] | DL_POLY_3,4: http://www.scd.stfc.ac.uk/SCD/44516.aspx |
[18] | DSTAR: J. Xia and K. H. Luo, "Conditional statistics of inert droplet effects on turbulent combustion in reacting mixing layers", Combustion Theory and Modelling, vol. 13(5):901-920, 2009. |
[19] | EBL: Spalart, P.R., Coleman, G.N., and Johnstone, R. (2009)"Retraction: “Direct numerical simulation of the Ekman layer: A step in Reynolds number, and cautious support for a log law with a shifted origin” [ Phys. Fluids 20, 101507 (2008) ]", Phys. Fluids 21, 109901 (2009) |
[20] | Fluidity: https://launchpad.net/fluidity |
[21] | Fuluidity-ICOM: http://www.scd.stfc.ac.uk/research/tech/ape/44455.aspx |
[22] | GROMACS: http://www.hector.ac.uk/cse/distributedcse/reports/GROMACS/ |
[23] | GS2: http://gs2.sourceforge.net/ |
[24] | HELIUM: Smyth ES, Parker JS and Taylor KT, 1998, Comput Phys Comm, 144, 1 |
[25] | HYPO4D: 開発者UCL Peter Coveney博士 https://www.ucl.ac.uk/chemistry/people/peter-coveney |
[26,27] | Incompact3D/Compact3D: http://www.incompact3d.com/ |
[28] | ISPH: Guo X, Lind SJ, Rogers B D, Stansby P K, Ashworth M. Efficient Massive Parallelisation for Incompressible Smoothed Particle Hydrodynamics with 108 Particles. Proc. 8th International SPHERIC Workshop, Editor J.E. Olsen. pp 397-402. 4-6 June 2013 |
[29] | LAMMPS: http://lammps.sandia.gov/ |
[30] | LEM: http://www.metoffice.gov.uk/research/modelling-systems/large-eddy-model |
[31] | MicroMag: 開発者エジンバラ大 Wyn Williams博士 http://www.ed.ac.uk/geosciences/people?indv=527 |
[32] | NEMO: http://www.nemo-ocean.eu/ |
[33] | OpenFOAM: http://www.openfoam.com/ |
[34] | OpenIFS: https://software.ecmwf.int/wiki/display/OIFS/OpenIFS+Home |
[35] |
PRMAT: http://www.hector.ac.uk/cse/distributedcse/reports/prmat/, http://www.hector.ac.uk/cse/distributedcse/reports/prmat2/ |
[36] | QSGW: http://www.hector.ac.uk/cse/distributedcse/reports/QSGW/ |
[37] | Quantum Espresso: http://www.hector.ac.uk/cse/distributedcse/reports/gww/ |
[38] | RMT: 開発者 http://www.corinf.eu/partners/queens-university-belfast/ |
[39] | SLDECOMP: 開発者 http://www.eri.u-tokyo.ac.jp/people/nagaoh/ |
[40] | SOFTaR: EPSRC grant EP/G062714/1 "Clean Coal Combustion: Burning Issues of Syngas Burning" (PI: Dr Xi Jiang; PDRA: Dr George Siamas) |
[41] | SPECFEM3D_GLOBE: https://geodynamics.org/cig/software/specfem3d_globe/ |
[42] | SPRINT: https://www.epcc.ed.ac.uk/projects-portfolio/sprint-parallel-statistics-genetic-research |
[43] |
SWT: G.N. Coleman, D. Fedorov, P.R. Spalart, and J. Kim. A numerical study of laterally strained wall-bounded turbulence. Journal of Fluid Mechanics, 639:443-478, 2009. SS3F: P.J. Archer, T.G. Thomas, and G.N. Coleman. The instability of a vortex ring impinging on a free surface. Journal of Fluid Mechanics, 642:79-94, 2010. |
[44] | TOMCAT/GLOMAP: https://www.see.leeds.ac.uk/research/icas/research-themes/atmospheric-chemistry-and-aerosols/groups/aerosols-and-climate/the-glomap-model/ |
[45] | TPLS: https://sourceforge.net/projects/tpls/ |
[46] |
StreamMD/Transflow: http://www.imperial.ac.uk/people/edward.smith05 http://www.imperial.ac.uk/people/t.zaki |
[47] | UKMol-in: https://ccpforge.cse.rl.ac.uk/gf/project/ukrmol-in/ |
[48] | VASP: https://www.vasp.at/ |
[49] | VOX-FE: 開発者 http://www2.hull.ac.uk/science/mbe.aspx |
[50] | WRF model: http://www.wrf-model.org/ |