#はじめに
windows(wsl)で複数のCode_aser 環境ができたので計算速度を比較してみたいと思います。
#計算対象
下記の2次シェル要素の静解析で計算時間を比較してみたいと思います。
------------ MAILLAGE MAILBASE - IMPRESSIONS NIVEAU 1 ------------
NOMBRE DE NOEUDS 284573
NOMBRE DE MAILLES 142986
SEG3 1400
TRIA6 141586
NOMBRE DE GROUPES DE MAILLES 3
Face 141586
hold 100
load 100
#計算結果の比較(MECA_STATIQUEの部分のみ)
N1の参考値です。UNITE=6 messファイルに出力される値を示しています。
単一版
windows版はsalomeでインストールされるasterを利用します。
vscodeのterminalでas_run.bat ~.export を実施しています。
OS_ASTER-VER | SOLVER | OPTION | RESUTL USER | RESULT SYSTEM |
---|---|---|---|---|
Windows10_14.4 | MULT_FRONT | --- | --- | --- |
Windows10_14.4 | MUMPS | POSTTRAITEMENTS='MINI' | 72.27 | 16.77 |
wsl_14.6 | MULT_FRONT | --- | 46.33 | 9.28 |
wsl_14.6 | MUMPS | POSTTRAITEMENTS='MINI' | 55.67 | 24.37 |
並列版
mpi_nbcpu-ncpus | SOLVER | OPTION | RESUTL USER | RESULT SYSTEM |
---|---|---|---|---|
1-0 | MULT_FRONT | --- | 46.55 | 9.28 |
1-2 | MULT_FRONT | --- | 53.11 | 8.73 |
1-0 | MUMPS | POSTTRAITEMENTS='MINI' | 57.25 | 23.98 |
2-0 | MUMPS | POSTTRAITEMENTS='MINI' | 42.22 | 10.85 |
4-0 | MUMPS | POSTTRAITEMENTS='MINI' | 50.92 | 47.50 |
2-2 | MUMPS | POSTTRAITEMENTS='MINI' | 49.54 | 10.64 |
考察
wsl 環境で計算を行っても遅くなることはないようです。
設定不備か規模の問題と思いますが並列効果が全く得られていません。
引き続き検討を行いたいと思います。 問題点のコメントいただけると幸いです。
今回使用したCOMMファイルは以下になります。
**stress.comm**(クリックして表示)
stress.comm
# !python
DEBUT(IGNORE_ALARM='UTILITAI4_2')
MAILBASE = LIRE_MAILLAGE(FORMAT='MED',
UNITE=20)
MAIL = CREA_MAILLAGE(MAILLAGE=MAILBASE,
MODI_MAILLE=_F(OPTION='TRIA6_7',
TOUT='OUI'))
mode = AFFE_MODELE(AFFE=_F(MODELISATION='3D',
PHENOMENE='MECANIQUE',
TOUT='OUI'),
MAILLAGE=MAILBASE)
model = AFFE_MODELE(AFFE=_F(MODELISATION='COQUE_3D',
PHENOMENE='MECANIQUE',
TOUT='OUI'),
MAILLAGE=MAIL)
elempro0 = AFFE_CARA_ELEM(COQUE=_F(EPAIS=1.2,
GROUP_MA=('Face', )),
MODELE=model)
mater = DEFI_MATERIAU(ELAS=_F(E=210000.0,
NU=0.3,
RHO=7.8e-09))
materfl = AFFE_MATERIAU(AFFE=_F(MATER=(mater, ),
TOUT='OUI'),
MODELE=model)
mecabc = AFFE_CHAR_MECA(DDL_IMPO=_F(DRX=0.0,
DRY=0.0,
DRZ=0.0,
DX=0.0,
DY=0.0,
DZ=0.0,
GROUP_MA=('hold', )),
MODELE=model)
CHARGE = AFFE_CHAR_MECA(FORCE_ARETE=_F(FY=-0.02,
GROUP_MA='load'),
MODELE=model)
RESULT = MECA_STATIQUE(CARA_ELEM=elempro0,
CHAM_MATER=materfl,
EXCIT=(_F(CHARGE=mecabc),
_F(CHARGE=CHARGE)),
MODELE=model,
SOLVEUR=_F(
METHODE="MULT_FRONT",
# METHODE='MUMPS'
# POSTTRAITEMENTS='MINI',
),
)
# RESULT = CALC_CHAMP(
# reuse=RESULT,
# FORCE=('REAC_NODA', ),
# RESULTAT=RESULT)
# RES = PROJ_CHAMP(MODELE_1=model,
# MODELE_2=mode,
# RESULTAT=RESULT)
# RESULT = CALC_CHAMP(
# reuse=RESULT,
# CONTRAINTE=('SIEF_ELNO',),
# CRITERES=('SIEQ_ELNO'),
# RESULTAT=RESULT)
# RES_SUP = POST_CHAMP(
# EXTR_COQUE=_F(NIVE_COUCHE='SUP',
# NOM_CHAM=('SIEF_ELNO', 'SIEQ_ELNO',),
# NUME_COUCHE=1),
# RESULTAT=RESULT)
# RES_SUP = CALC_CHAMP(
# reuse=RES_SUP,
# # CONTRAINTE=('SIEF_NOEU'),
# CRITERES=('SIEQ_NOEU'),
# RESULTAT=RES_SUP)
# SUP = PROJ_CHAMP(MODELE_1=model,
# MODELE_2=mode,
# RESULTAT=RES_SUP)
# RES_INF = POST_CHAMP(
# EXTR_COQUE=_F(NIVE_COUCHE='INF',
# NOM_CHAM=('SIEF_ELNO', 'SIEQ_ELNO',),
# NUME_COUCHE=1),
# RESULTAT=RESULT)
# RES_INF = CALC_CHAMP(
# reuse=RES_INF,
# # CONTRAINTE=('SIEF_NOEU'),
# CRITERES=('SIEQ_NOEU'),
# RESULTAT=RES_INF)
# INF = PROJ_CHAMP(MODELE_1=model,
# MODELE_2=mode,
# RESULTAT=RES_INF)
# RES_MOY = POST_CHAMP(
# EXTR_COQUE=_F(NIVE_COUCHE='INF',
# NOM_CHAM=('SIEF_ELNO', 'SIEQ_ELNO',),
# NUME_COUCHE=1),
# RESULTAT=RESULT)
# RES_MOY = CALC_CHAMP(
# reuse=RES_MOY,
# # CONTRAINTE=('SIEF_NOEU'),
# CRITERES=('SIEQ_NOEU'),
# RESULTAT=RES_MOY)
# MOY = PROJ_CHAMP(MODELE_1=model,
# MODELE_2=mode,
# RESULTAT=RES_MOY)
# IMPR_RESU(
# FORMAT='MED',
# # FORMAT='RESULTAT',
# RESU=(
# _F(RESULTAT=SUP),
# # _F(RESULTAT=INF),
# # _F(RESULTAT=MOY),
# _F(
# # MAILLAGE=MAILBASE,
# NOM_CHAM=("DEPL", 'REAC_NODA', ),
# RESULTAT=RES),
# ),
# UNITE=80)
# IMPR_RESU(
# # FORMAT='MED',
# FORMAT='RESULTAT',
# RESU=(_F(GROUP_MA='hold',
# NOM_CHAM='SIEQ_NOEU',
# RESULTAT=SUP),
# _F(GROUP_MA='load',
# # MAILLAGE=MAILBASE,
# NOM_CHAM='DEPL',
# RESULTAT=RES)),
# UNITE=8)
FIN()
ありがとうございました。