GKV-developers / gkvp

Gyrokinetic Vlasov simulation code GKV
12 stars 5 forks source link

gkv_nec_f056_202011におけるv方向袖通信の冗長性修正 #4

Open smaeyama opened 3 years ago

smaeyama commented 3 years ago

PS版GKVですが、v方向の袖通信が冗長になっている部分を修正した版を  /data/3/sht/nunami/GKV_tuned/gkv_nec_f056_202011.tgz に置きました。 前回の版から、 gkvp_f0.56_header.f90 gkvp_f0.56_set.f90 gkvp_f0.56_colli.f90 gkvp_f0.56_bndry.f90 が修正されています。

この件、LB衝突項の場合のv方向の袖通信の冗長性を削除した(caldlt_revでは先に線形項計算のためにzz,vl方向袖通信を行うため)ということですよね。

この場合、  これまで:colli_LB をcallすれば衝突項が計算される  今後:colli_LB をcallする前にffに対するvl方向の袖通信を事前にしておかなければ、正しく計算されない。 というように関数の動作を変えたということですね?

できれば、独立性を保った関数も残したいので、以下のどちらかでNECにご対応いただけないでしょうか?

パターンA) colli_LB とは別に、新たに colli_LB_without_vl_sendrecv 関数を作って、caldlt_revのように順序を守ったときだけ特別に性能最適化した colli_LB_without_vl_sendrecv 関数を callし、それ以外は colli_LB をcallする。ほぼ同じ内容の関数が2つになり保守上は好ましくない。 パターンB) colli_LB 関数に、flag_vl_sendrecv という変数を追加し、 flag_vl_sendrecv = .true. のときは vl袖通信も行う。 flag_vl_sendrecv = .false. の時は vl袖通信は省略する。

欲を言えば、SX最適化版のみならず、もともとのgkvp_colli.f90のソースコードでも同様の対応をしていただけると、富岳用コードでも改善が見込まれます。