Wisteria/BDEC-01 ฼⏝஦౛㸦6㸧࣐ࣝࢳࣉࣟࢢ࣒ࣛ㐃ᡂࣛ࢖ࣈࣛࣜ h3-Open-UTIL/MP (2/2)
Ⲩᕝ㝯㸦&OL07HFK㸧ඵ௦ᑦ㸦ᅜ❧⎔ቃ◊✲ᡤ㸧ఫඖ┿ྖ㸦ᮾி኱Ꮫ᝟ሗᇶ┙ࢭࣥࢱ࣮㸧୰ᓥ◊࿃㸦ᮾி኱Ꮫ᝟ሗᇶ┙ࢭࣥࢱ࣮㸧1ࡣࡌࡵ࡟ ๓ᅇ㸦2022 ᖺ㸳᭶ྕ㸧[1]࡜௒ᅇࡢ 2 ᅇ࡟ศࡅ࡚」ᩘࡢࢩ࣑࣮ࣗࣞࢩࣙࣥࣉࣟࢢ࣒ࣛࢆ㐃ᡂᐇ⾜ࡋࠕィ⟬࣭ࢹ࣮ࢱ࣭Ꮫ⩦ࠖ⼥ྜࢆ᥎㐍ࡍࡿࡓࡵࡢࣛ࢖ࣈࣛࣜ h3-Open-UTIL/MP ࡟ࡘ࠸࡚⤂௓ࡍࡿࠋ๓ᅇࡣ୍⯡ⓗ࡞༢୍࢔࣮࢟ࢸࢡࢳࣕ⎔ቃ࡛」ᩘࣉࣟࢢ࣒ࣛࢆ㐃ᡂࡍࡿࢣ࣮ࢫ࡟ࡘ࠸࡚ㄝ᫂ࡋࡓࡀ㸪௒ᅇࡣ h3-Open-UTIL/MP ࡢ≉ᚩⓗ࡞ᶵ⬟࡛࠶ࡿ␗ᶵ✀㛫㐃ᡂ㸪Python APP 㐃ᡂ㸪࢔ࣥࢧࣥࣈࣝ㐃ᡂᶵ⬟࡞࡝࡟ࡘ࠸࡚⤂௓ࡍࡿࠋ㐃ᡂィ⟬ࡢᇶᮏⓗ࡞ᴫᛕࡸᐇ⾜᪉ἲ࡟ࡘ࠸࡚ࡣ๓ྕ࡛ヲ㏙ࡋ࡚࠸ࡿࡢ࡛㸪ࡇࢀࡽ࡟ࡘ࠸࡚ᮍ⤒㦂ࡢㄞ⪅ࡣඛ࡟๓ྕࡢグ஦ࢆཧ↷ࡉࢀࡓ࠸ࠋࡲࡓ㸪␗ᶵ✀㛫㐃ᡂࢆᐇ⌧ࡍࡿࡓࡵ࡟ h3-Open-UTIL/MP ࡣࣛ࢖ࣈࣛࣜ h3-Open-SYS/WaitIO ࢆ฼⏝ࡋ࡚࠸ࡿࡀ㸪h3-Open-SYS/WaitIO ࡟ࡘ࠸࡚ࡣࢫ࣮ࣃ࣮ࢥࣥࣆ࣮ࣗࢸ࢕ࣥࢢࢽ࣮ࣗࢫ๓ࠎྕ࡜๓ྕ࡟⤂௓グ஦ࡀᥖ㍕ࡉࢀ࡚࠸ࡿ[2][3]ࡢ࡛ేࡏ࡚ཧ↷࠸ࡓࡔࡅࡿ࡜ᖾ࠸࡛࠶ࡿࠋh3-Open-SYS/WaitIO ࡣグ஦ᥖ㍕ᚋࡶ㛤Ⓨࡀ⥆ࡅࡽࢀ㸪࢖ࣥࢱ࣮ࣇ࢙࣮ࢫ࡞࡝࡟ⱝᖸࡢ௙ᵝኚ᭦ࡀ࡞ࡉࢀ࡚࠸ࡿࠋࡑࡇ࡛㸪ᮏ✏࡛ࡣ h3-Open-SYS/WaitIO ࡢ᭱᪂᝟ሗ࡟ࡘ࠸࡚ࡶグ㏙ࡍࡿࠋ࡞࠾๓ᅇ࡜ྠᵝ㸪ࡇࡢࡼ࠺࡞ィ⟬᪉ἲ࡟ᑐࡋ࡚ࡣᇶᮏⓗ࡟ࠕ㐃ᡂィ⟬ࠖࡢㄒࢆ⏝࠸㸪୍㒊ࡣࢥ࣑ࣗࢽࢸ࢕ࡢ័⩦࡟ᚑࡗ࡚⤖ྜ㸦౛㸸኱Ẽᾏὒ⤖ྜ㸧ࢆ⏝࠸ࡿࡇ࡜࡜ࡍࡿࠋࡲࡓ௨ୗ࡛ࡣ h3-Open-SYS/WaitIO ࡣ༢࡟ WaitIO ࡜⾲グࡍࡿࠋ2 ␗ᶵ✀㛫㐃ᡂᶵ⬟
2.1 ␗ᶵ✀㛫㐃ᡂࡢᴫせᮾி኱Ꮫ᝟ሗᇶ┙ࢭࣥࢱ࣮ࡢ Wisteria/BDEC-01 ࢆࡣࡌࡵ㸪ྡྂᒇ኱Ꮫࡢ୙⪁ࡸᾏὒ◊✲㛤Ⓨᶵᵓࡢᆅ⌫ࢩ࣑࣮ࣗࣞࢱ࡞࡝㸪㏆ᖺࡣ࢔࣮࢟ࢸࢡࢳࣕࡢ␗࡞ࡿ」ᩘࡢࢧࣈࢩࢫࢸ࣒࡛ᵓᡂࡉࢀࡿィ⟬ᶵࡀቑ࠼࡚࠸ࡿࠋࡇࢀࡣ⌧௦ࡢࢫ࣮ࣃ࣮ࢥࣥࣆ࣮ࣗࢸ࢕ࣥࢢࡢᑐ㇟㡿ᇦࡀࢩ࣑࣮ࣗࣞࢩࣙࣥ࡟࡜࡝ࡲࡽࡎ㸪ᶵᲔᏛ⩦ࡸ኱つᶍࢹ࣮ࢱฎ⌮࡞࡝せồᛶ⬟ࡢ␗࡞ࡿከᵝ࡞ࢱࢫࢡ࡟ᣑ኱ࡋ࡚࠸ࡿࡇ࡜࡟ᑐᛂࡍࡿࡓࡵ࡛࠶ࡿࠋࡇࢀࡽࡢࢧࣈࢩࢫࢸ࣒ྠኈࡣᇶᮏⓗ࡟ࡣࣇ࢓࢖ࣝඹ᭷࡟ࡼࡗ࡚ィ⟬㸩ࢹ࣮ࢱ㸩Ꮫ⩦㐃ᦠᶵ⬟ࢆᐇ⌧ࡋ࡚࠸ࡿࡀ㸪ࢧࣈࢩࢫࢸ࣒㛫࡛ࡢࣜ࢔ࣝࢱ࢖࣒࡞㐃ᡂィ⟬ࡀྍ⬟࡟࡞ࢀࡤ㸪ࢩ࣑࣮ࣗࣞࢩࣙࣥ࡜ゎᯒࡢྠ᫬ᐇ⾜ࡸࢩ࣑࣮ࣗࣞࢩࣙࣥ࡬ࡢᶵᲔᏛ⩦ࡢ཯ᫎ࡞࡝㸪ࣇ࢓࢖ࣝࢆ⤒⏤ࡋࡓ㏲ḟⓗ࡞ฎ⌮࡛ࡣᑐᛂ࡛ࡁ࡞࠿ࡗࡓィ⟬ᡭἲࡀᐇ⌧࡛ࡁࡿࠋࡇࡢࡼ࠺࡞⫼ᬒ࠿ࡽ
WaitIO ࡀ㛤Ⓨࡉࢀ㸪ูᥖグ஦࡛⤂௓ࡉࢀ࡚࠸ࡿࡼ࠺࡟ほࢹ࣮ࢱྠ໬࡟ࡼࡿ㛗࿘ᮇᆅ㟈ືࣜ࢔ࣝࢱ࢖࣒ண ࡞࡝࡟฼⏝ࡉࢀ࡚࠸ࡿࠋࡇࡢ␗ᶵ✀㛫㏻ಙᶵ⬟ࢆ h3-Open-UTIL/MP ࡟⤌ࡳ㎸ࡴ஦࡟ࡼࡾ᫬✵㛫ᵓ㐀ࡢ␗࡞ࡿ」ᩘࡢࣉࣟࢢ࣒ࣛࢆ␗ᶵ✀㛫࡛㐃ᡂࡍࡿࡇ࡜ࡀྍ⬟࡜࡞ࡿࠋスーパーコンピューティングニュース- 24 -Vol. 24, No.4

2022

2.2 WaitIO ࡢ᭱᪂᝟ሗ๓⠇࡛㏙࡭ࡓࡼ࠺࡟ WaitIO ࡣ⌧ᅾࡶ⢭ຊⓗ࡟㛤Ⓨࡀ㐍ࢇ࡛࠾ࡾ[3]ࡢグ஦ᥖ㍕ᚋࡶ౑⏝᪉ἲ࡟ⱝᖸࡢኚ᭦ࡀ࠶ࡿࠋࡑࡇ࡛ᮏ⠇࡛ࡣ WaitIO ࡢ᭱᪂᝟ሗ࡟ࡘ࠸࡚ㄝ᫂ࡍࡿࠋ๓ྕグ஦ᥖ㍕ᚋ࡟⾜ࢃࢀࡓ࢔ࢵࣉࢹ࣮ࢺࡢ࠺ࡕ฼⏝⪅࡟┤᥋㛵ಀࡍࡿࡢࡣ WaitIO ࡀ Environmental Modules ࡟ᑐᛂࡋࡓࡇ࡜࡛࠶ࡿࠋWisteria/BDEC-01 ࡛ࡣ⎔ቃタᐃ࡟ Environment Modules ࢆ⏝࠸࡚࠾ࡾ㸪ࢥࣥࣃ࢖ࣛ
ࡢษࡾ᭰࠼࡞࡝ࢆ module ࢥ࣐ࣥࢻ࡛⾜࠺ࡼ࠺࡟࡞ࡗ࡚࠸ࡿࠋWaitIO ࡢタᐃࢆ Environment
Modules ࡛⾜࠺ሙྜࡢලయⓗ࡞ࢥ࣐ࣥࢻࡣࡈࡃ୍⯡ⓗ࡞ module load waitio ࡛࠶ࡿࡀ㸪ὀពࡍ࡭ࡁ
Ⅼ࡜ࡋ࡚㸪␗ᶵ✀㛫㏻ಙࣛ࢖ࣈࣛࣜ࡜࠸࠺ WaitIO ࡢᙺ๭࡟ᑐᛂࡍࡿࡓࡵ౑⏝ࡉࢀࡿࢥࣥࣃ࢖ࣛ
ࡸ MPI ࡟ᛂࡌ࡚ࢥ࣐ࣥࢻ࡛タᐃࡉࢀࡿෆᐜࡀኚ໬ࡍࡿ࡜࠸࠺ࡇ࡜ࡀ࠶ࡿࠋWisteria/BDEC-01 ࡢOdyssey ࡛ WaitIO ࢆ⏝࠸ࡿሙྜࡢࢥ࣐ࣥࢻࡣᅗ㸯ࡢࡼ࠺࡟࡞ࡿ1ࠋࡇࡢ࡜ࡁ࡟タᐃࡉࢀࡿ⎔ቃኚᩘࡣᅗ㸰࡟♧ࡍ࡜࠾ࡾ࡛࠶ࡿࠋ୍᪉㸪Aquarius ࡛ WaitIO ࢆ⏝࠸ࡿሙྜࡢࢥ࣐ࣥࢻ࡜タᐃࡉࢀࡿ⎔ቃኚᩘࡣᅗ㸱㸪ᅗ㸲࡟♧ࡍࡼ࠺࡟࡞ࡿࠋWaitIO ࢆ฼⏝ࡍࡿ㝿ࡣ」ᩘࡢ⎔ቃ࡛ࣉࣟࢢ࣒ࣛࢆࢥࣥࣃ࢖࣭ࣝࣜࣥࢡࡍࡿᚲせࡀ࠶ࡿࡓࡵ㸪ࢥࣥࣃ࢖࣭ࣝࣜࣥࢡ⎔ቃ࡟ᛂࡌ࡚㐺ษ࡞ࢥ࣐ࣥࢻࢆ⏝࠸࡞ࡅࢀࡤ࡞ࡽ࡞࠸ࠋࡲࡓ㸪ࣜࣥࢡࡍ࡭ࡁࣛ࢖ࣈࣛࣜࡶ⎔ቃ࡟ᛂࡌ࡚」ᩘ࠶ࡿࡓࡵ㐺ษ࡞ࣛ࢖ࣈࣛࣜࢆ㑅ᢥࡍࡿᚲせࡀ࠶ࡿࠋලయⓗ࡟ࡣ Odyssey ࡛ࡣ A64FX ⏝ࡢࣛ࢖ࣈ࡛ࣛࣜ࠶ࡿ libwaitio_a64fx.soࢆ㸪Aquarius ࡛ࡣ⏝࠸ࡿࢥࣥࣃ࢖ࣛࡸ MPI ࡀ Intel+impi ࠿ gnu+ompi ࠿࡟ᛂࡌ࡚ libwaitio_intel.soࡶࡋࡃࡣ libwaitio.so ࢆࣜࣥࢡࡍࡿࡼ࠺࡟ࡍࡿࠋ
$module purge$module load odyssey$module load waitio

ᅗ㸯 Odyssey ࡛ࡢ WaitIO ࡢ module load ᡭ㡰
WAITIO_INC=/work/opt/local/aarch64/apps/fj/1.2.35/fjmpi/1.2.35/waitio/1.0/include
WAITIO_SERVER_HOST=wisteria01
WAITIO_DIR=/work/opt/local/aarch64/apps/fj/1.2.35/fjmpi/1.2.35/waitio/1.0
WAITIO_LIB=/work/opt/local/aarch64/apps/fj/1.2.35/fjmpi/1.2.35/waitio/1.0/libᅗ㸰 Odyssey ࡛タᐃࡉࢀࡿ WaitIO ࡢ⎔ቃኚᩘ$module purge$module load intel$module load impi
$module load waitio

ᅗ㸱 Aquarius ࡛ࡢ WaitIO ࡢ module load ᡭ㡰
WAITIO_INC=/work/opt/local/x86_64/apps/intel/2021.2.0/impi/2021.2.0/waitio/1.0/include
WAITIO_SERVER_HOST=wisteria01
WAITIO_DIR=/work/opt/local/x86_64/apps/intel/2021.2.0/impi/2021.2.0/waitio/1.0
WAITIO_LIB=/work/opt/local/x86_64/apps/intel/2021.2.0/impi/2021.2.0/waitio/1.0/libᅗ㸲 Aquarius ࡛タᐃࡉࢀࡿ WaitIO ࡢ⎔ቃኚᩘ࡞࠾㸪ࢥࣥࣃ࢖ࣛࡸ 03, ⎔ቃࡀ ORDG ࡉࢀ࡚࠸࡞࠸≧ែ࡛ PRGXOHORDGZDLWLR ࢥ࣐ࣥࢻࢆᐇ⾜ࡋ࡚ࡶ↓ຠ࡜࡞ࡿࠋ

スーパーコンピューティングニュースVol. 24, No.4 2022
- 25  ᐇ⾜࡟㝿ࡋ࡚ࡶᅗ㸳ࡢࡼ࠺࡟ module load ࢥ࣐ࣥࢻ࡛㐺ษ࡞ WatiIO ⎔ቃࢆタᐃࡋ࡚ࡸࡿᚲせࡀ࠶ࡿࠋ࡞࠾ᅗ㸳ྑᅗࡢ౛࡛ࡣ㸪ᐇ⾜ࣂ࢖ࢼࣜࢆ gcc+ompi ࡛⏕ᡂࡋ࡚࠸ࡿࡓࡵ㸪intel+impi ࡛ WaitIO⎔ቃࢆタᐃࡋࡓᚋ㸪ᨵࡵ࡚ gcc+ompi ࢆ load ࡋ࡚࠸ࡿࠋ#!/bin/bash#PJM -L rscgrp=regular-o┬␎#!/bin/bash#PJM -L rscgrp=regular-a┬␎

module load fj
module load fjmpi
module load waitio

module unload aquariusmodule unload gcc
module load intel
module load impi
module load waitio

export WAITIO_MASTER_HOST=`hostname`export WAITIO_MASTER_PORT=7100
export WAITIO_PBID=0
export WAITIO_NPB=2
waitio-serv-a64fx -d -m $WAITIO_MASTER_HOST
mpiexec -np 160 ./nicam

export WAITIO_MASTER_HOST=`waitio-serv -c`
export WAITIO_MASTER_PORT=7100
export WAITIO_PBID=1
export WAITIO_NPB=2
module unload intel
module unload impi
module load gcc ompi
mpiexec -n 20 ./ada

ᅗ㸳 WaitIO ࢆ⏝࠸ࡓ␗ᶵ✀㛫㐃ᡂࡢᐇ⾜ࢪࣙࣈࢫࢡࣜࣉࢺ㸦ᕥᅗ㸸Odyssey, ྑᅗ㸸Aquarius㸧

2.3 ␗ᶵ✀㛫㐃ᡂࡢᐇ⌧᪉ἲᮏ⠇࡛ࡣ h3-Open-UTIL/MP ࡀ࡝ࡢࡼ࠺࡟ࡋ࡚ WaitIO ࡜㐃ᦠࡋ␗ᶵ✀㛫㐃ᡂࢆᐇ⌧ࡋ࡚࠸ࡿ࠿
ࢆㄝ᫂ࡍࡿࠋWaitIO ࡣ␗ᶵ✀㛫㏻ಙ⏝ࡢᇶᮏ㛵ᩘ࡜ࡋ࡚ waitio_isend, waitio_irecv, waitio_wait ࡢ㸱✀㢮ࢆᥦ౪ࡋ࡚࠸ࡿࠋࡇࢀࡽࡣ MPI ࡢྠ➼ࡢ㛵ᩘ࡜ྠࡌ࢖ࣥࢱ࣮ࣇ࢙࣮ࢫࢆᣢࡕ㸪ᐜ᫆࡟┦஫ኚ᥮ྍ⬟࡛࠶ࡿࠋ୍᪉㸪h3-Open-UTIL/MP ࡣࣔࢹࣝ㛫ࡢࢹ࣮ࢱ஺᥮ࢆ mpi_isend, mpi_irecv,mpi_wait ࡢ㸱✀ࡢ㛵ᩘࡢࡳ࡛ᐇ⾜ࡋ࡚࠸ࡿࡓࡵ㸪ࡇࢀࡽࢆ WaitIO ࡢୖグ㛵ᩘ࡟⨨ࡁ᥮࠼ࡿࡔࡅ࡛␗ᶵ✀㛫ࢹ࣮ࢱ஺᥮࡟ᑐᛂ࡛ࡁࡿࠋ୍᪉㸪ࢹ࣮ࢱ஺᥮๓ࡢึᮇ໬ࣉࣟࢭࢫ࡛ࡣ࢔ࣉࣜࢣ࣮ࢩࣙ
ࣥ㛫ࡢ኱ᇦ㏻ಙࢆ⾜ࡗ࡚࠸ࡿࡓࡵ㸪ࡇࢀࢆ WaitIO ࡛⨨ࡁ᥮࠼ࡿᚲせࡀ࠶ࡿࠋࡑࡇ࡛኱ᇦ㏻ಙ࡟
ࡘ࠸࡚ࡣ࢔ࣉࣜࢣ࣮ࢩࣙࣥෆࡢ㏻ಙࢆ MPI ࡛㸪࢔ࣉࣜࢣ࣮ࢩࣙࣥ㛫㸦㸻␗ᶵ✀㛫㸧ࡢ㏻ಙࢆ WaitIO
࡛⾜࠺ࡼ࠺࡟ࡋࡓࠋ඲యࡢࣉࣟࢢ࣒ࣛᵓ㐀ࢆᅗ㸴࡟♧ࡍࠋᅗ࡛ྑഃࡢᰕࡣ Aquarius ୖ࡛ Pythonࡢ࢔ࣉࣜࢣ࣮ࢩࣙࣥࢆᐇ⾜ࡍࡿ㝿ࡢࣉࣟࢢ࣒ࣛᵓ㐀࡛࠶ࡿࠋࡇࢀ࡟ࡘ࠸࡚ࡣḟ❶࡛ヲ㏙ࡍࡿࠋ␗ᶵ✀㛫㐃ᡂ࡟㛵ࢃࡿࣉࣟࢢ࣒ࣛᵓ㐀ࡣᅗࡢୗ㒊㸪㟷⣔ࡢᅄゅ࡛♧ࡋࡓ㸱ࡘࡢᒙ࡛࠶ࡿࠋ᭱ୗᒙࡢ
MPI+WaitIO ࡣ኱ᇦ㏻ಙࢆ⾜࠺ࣞ࢖࡛ࣖ㸪ࡇࡇ࡛ࡣ MPI ࡜ WaitIO ࢆ⤌ࡳྜࢃࡏ࡚㏻ಙࢆᐇ⌧ࡋ࡚࠸ࡿࠋලయⓗ࡞᪉ἲࡣḟ࡟ㄝ᫂ࡍࡿࠋୗ࠿ࡽ㸰ẁ┠ࡢᒙࡣᒁᡤ㏻ಙࢆ⾜࠺ࣞ࢖࡛ࣖ࠶ࡿࠋࡇࡇ࡛ࡣ㸪㏦ཷಙࡢ┦ᡭࡀูࣉࣜࢣ࣮ࢩࣙࣥࡢሙྜࡣ WaitIO ࢆ㸪ྠ୍࢔ࣉࣜࢣ࣮ࢩࣙࣥࡢሙྜࡣ MPIࢆ⏝࠸࡚㏻ಙࢆ⾜࠺ࠋୗ࠿ࡽ㸱ẁ┠ࡢᒙࡣ MPI ࡜ WaitIO ࢆ⤫ྜࡋ༢୍ࡢ API ࢆᥦ౪ࡍࡿ Wrapperࣞ࢖࡛ࣖ࠶ࡿࠋࡇࢀ࡟ࡼࡗ࡚㸪h3-Open-UITL/MP ᮏయࡢࢥ࣮ࢻࢆಟṇࡍࡿࡇ࡜࡞ࡃ㸪␗ᶵ✀㛫㐃ᡂ࡟ᑐᛂࡉࡏࡿࡇ࡜ࡀྍ⬟࡜࡞ࡾ㸪ྠᶵ✀㛫㐃ᡂᑓ⏝ࣉࣟࢢ࣒ࣛ࡜ࡶᐜ᫆࡟ษࡾ᭰࠼ྍ⬟࡜࡞ࡿࠋ
スーパーコンピューティングニュース- 26 -Vol. 24, No.4

2022

2G\VVH\$TXDULXV)RUWUDQ$33

3\WKRQ$33

K2SHQKRSSS\KRSHQBS\I

87,/03 K2SHQ87,/03

03,ZUDSSHU
:DLW,2

03,03,03,:DLW,2ᅗ㸴 K2SHQ87,/03:DLW,2 ࡢࣉࣟࢢ࣒ࣛᵓ㐀ḟ࡟ୖᅗ᭱ୗẁࡢ 03,:DLW,2 ࡀ࡝ࡢࡼ࠺࡟ࡋ࡚ᐇ⌧ࡉࢀ࡚࠸ࡿ࠿ࢆㄝ᫂ࡍࡿࠋK2SHQ
87,/03 ࡀ ⏝ ࠸ ࡚ ࠸ ࡿ ኱ ᇦ ㏻ ಙ ⏝ 03, ࣝ ࣮ ࢳ ࣥ ࡣ 03,B%FDVW 03,B*DWKHU 03,B5HGXFH
03,B$OOUHGXFH ࡢ㸲✀㢮࡟㝈ࡽࢀ࡚࠾ࡾ㸪␗ᶵ✀㛫㐃ᡂ࡛ࡣࡇࢀࡽࡢ࣮ࣝࢳࣥࢆ :DLW,2 ࡢᇶᮏ㏻
ಙ㛵ᩘ࡜ 03, ࡢ኱ᇦ㏻ಙ㛵ᩘࢆ⤌ࡳྜࢃࡏ࡚ᐇ⌧ࡍࢀࡤࡼ࠸ࡇ࡜࡟࡞ࡿࠋࡇࡢ㝿㸪␗ᶵ✀㛫ࡢ
኱ᇦ㏻ಙࢆ ZDLWLRBLVHQGLUHFY ࢆ⏝࠸ࡓከᑐከ㏻ಙ࡛ᐇ⿦ࡍࡿ࡜୪ิつᶍࡀ኱ࡁࡃ࡞ࡗࡓ㝿࡟ᑐᛂ࡛ࡁ࡞ࡃ࡞ࡿᠱᛕࡀ࠶ࡗࡓࡓࡵ㸪␗ᶵ✀㛫ࡢ㏻ಙࡣྛ࢔ࣉࣜࢣ࣮ࢩࣙࣥࡢ௦⾲ࣉࣟࢭࢫ㛫ࡢࡳࡢ㸯ᑐ㸯㏻ಙ࡛⾜࠺ࡼ࠺࡟ࡋࡓࠋᐇ⿦ࡉࢀࡓ㏻ಙ᪉ἲࢆ 03,B*HWKHU ࡟┦ᙜࡍࡿ኱ᇦ㏻ಙࢆ౛࡜
ࡋ࡚ᅗ㸵࡟♧ࡍࠋᅗ࡛ᶓ࡟୪ࢇࡔ㸱ࡘࡢᅄゅࡀࡦ࡜ࡘࡢ࢔ࣉࣜࢣ࣮ࢩࣙࣥࢆ㸪ಶࠎࡢᅄゅࡀಶࠎࡢࣉࣟࢭࢫࢆ⾲ࡋ࡚࠸ࡿࠋᕥ➃ࡢᅄゅࡣྛ࢔ࣉࣜࢣ࣮ࢩࣙࣥࡢ௦⾲ࣉࣟࢭࢫ ࢮࣟ␒ࣉࣟࢭࢫ㸻.LQJ㸧࡛࠶ࡿࠋᅗࡢ㯤Ⰽ࠸ᅄゅࡀ *DWKHU ඛࡢࣉࣟࢭࢫ URRW ࡜ࡍࡿ࡜㸪ࡣࡌࡵ࡟ 03, 㛵ᩘ࡛ .LQJ
࡟᝟ሗࢆ㞟ࡵࡿࠋḟ࠸࡛࢔ࣉࣜࢣ࣮ࢩࣙࣥࡢ .LQJ 㛫ࢆ :DLW,2 ࡛㏻ಙࡋ㸪᭱ᚋ࡟ 03, 㛵ᩘ࡛ᑐ㇟ࣉࣟࢭࢫ࡟ࢹ࣮ࢱࢆ㏦ࡿࠋᅗࡢ౛࡛ࡣ *DKWHU ඛࡢࣉࣟࢭࢫࢆ௦⾲ࣉࣟࢭࢫ௨እࡢࣉࣟࢭࢫ࡜ࡋࡓࡀ㸪⌧ᐇⓗ࡟ࡣ *DWKHU ඛࣉࣟࢭࢫࡣ௦⾲ࣉࣟࢭࢫ࡜࡞ࡿࡇ࡜ࡀ࡯࡜ࢇ࡝࡛࠶ࡿࡓࡵ᭱ᚋࡢ
ᡭ⥆ࡁࡣ୙せ࡟࡞ࡿࠋDW/ Ͳ <ŝŶŐ ͶॄΌΖǁĂŝƚŝŽͺŝƐĞŶĚͬŝƌĞĐǀ Ͳ ƌŽŽƚ ͗
ॶ଒ͤΖ <ŝŶŐ ͶॄΌΖƌŽŽƚ ͗ॶ଒ͤΖ <ŝŶŐ ͖ΔƌŽŽƚ Ͷ DW/ͺŝƐĞŶĚͬŝƌĞĐǀᅗ㸵 03,:DLW,2 ࢆ⏝࠸ࡓ኱ᇦ㏻ಙࡢ౛㸦*DWKHU㸧

スーパーコンピューティングニュース- 27 -

Vol. 24, No.4

2022 ␗ᶵ✀㛫㐃ᡂࡢලయ౛ ᮏ⠇࡛ࡣࢧࣥࣉࣝࣉࣟࢢ࣒ࣛࢆཧ↷ࡋࡘࡘ㸪␗ᶵ✀㛫㐃ᡂࡢලయⓗ࡞ᡭ㡰࡟ࡘ࠸࡚ㄝ᫂ࡍࡿࠋ
࡞࠾༢୍ᶵ✀ෆ㐃ᡂ࡟ࡘ࠸࡚ࡣ๓ྕࡢグ஦>@࡛ヲ㏙ࡋ࡚࠸ࡿࡢ࡛㸪ࡇࡇ࡛ࡣ␗ᶵ✀㛫㐃ᡂ࡟㛵㐃ࡍࡿ㒊ศࡢࡳࢆྲྀࡾୖࡆࡿࠋK2SHQ87,/03 ࡢࣛ࢖ࣈࣛࣜ࡜ $3, ࡣ :LVWHULD%'(& ୖ࡛බ㛤ࡉࢀ࡚࠸ࡿࡀ㸪༢୍ᶵ✀⏝࡜␗ᶵ✀⏝࡛ࡣࣛ࢖ࣈࣛࣜࡀ␗࡞ࡿࡢ࡛ὀពࡀᚲせ࡛࠶ࡿࠋࡲࡓ␗ᶵ✀⏝ࡣ 2G\VVH\ ⏝࡜ $TXHULXV ⏝࡛ࡶ␗࡞ࡿࣛ࢖ࣈࣛࣜࢆ⏝࠸ࡿᚲせࡀ࠶ࡿࠋࣛ࢖ࣈࣛࣜࡢྡ⛠ࡣ࠸ࡎࢀࡶྠࡌ㸦OLEMFXSD ࡜ OLEKRXD㸧࡛ࢹ࢕ࣞࢡࢺࣜ࡟ࡼࡗ࡚౑࠸ศࡅࡿࡼ࠺࡟࡞ࡗ࡚࠸ࡿࠋ␗ᶵ✀㛵㐃ᡂ⏝ࡢࣛ࢖ࣈࣛࣜ࡜࢖ࣥࢡ࣮ࣝࢻࣇ࢓࢖ࣝࡢࢹ࢕ࣞࢡࢺࣜᵓᡂࡣᅗ㸶࡟♧ࡍ࡜࠾ࡾ࡛㸪LQFOXGH ࡜ OLE ࢹ࢕ࣞࢡࢺࣜࡢୗ࡟ RG\VVH\ ࡜ DTXDULXV ࢹ࢕ࣞࢡࢺࣜࡀ࠶ࡾ㸪ྛࠎࡢࢩࢫࢸ࣒⏝ࡢ࢖ࣥࢢ࣮ࣝࢻࣇ࢓࢖ࣝ࡜ࣛ࢖ࣈࣛࣜࡀ᱁⣡ࡉࢀ࡚࠸ࡿࠋᚑࡗ࡚㸪2G\VVH\ ⏝ࡢࣂ࢖ࢼࣜࢆ⏕ᡂࡍࡿ㝿ࡣ RG\VVH\ ࢹ࢕ࣞࢡࢺࣜࢆ㸪$TXDULXV ⏝ࡢࣂ࢖ࢼࣜࢆ⏕ᡂࡍࡿ㝿ࡣ DTXDULXV ࢹ࢕ࣞࢡࢺࣜࢆࡑࢀࡒࢀཧ↷ࡍࡿࠋຍ࠼࡚㸪 ⠇࡛㏙࡭ࡓࡼ࠺࡟㐺ษ࡞ :DLW,2 ࣔࢪ࣮ࣗࣝࢆ ORDG ࡍࡿࠋZRUNVKDUHK2SHQ87,/03KRXBZDLWLRLQFOXGH
RG\VVH\DTXDULXVOLE
RG\VVH\DTXDULXVᅗ㸶 K2SHQ87,/0,:DLW,2 ࡢ᱁⣡ࢹ࢕ࣞࢡࢺࣜ␗ᶵ✀㛫㐃ᡂࡢࢧࣥࣉࣝࣉࣟࢢ࣒ࣛࡣḟ❶࡛㏙࡭ࡿ 3\WKRQ$33 㐃ᡂࡢࢧࣥࣉࣝࣉࣟࢢ࣒ࣛ࡜࡜ࡶ࡟ZRUNVKDUHK2SHQ87,/03VUFVDPSOHKRXBZDLWLR ௨ୗ࡟⨨࠿ࢀ࡚࠸ࡿࠋࡇࢀࢆ㐺ᙜ࡞ࢹ࢕ࣞࢡࢺࣜࡢࢥࣆ࣮ࡋ WHVWBZDLWLRVUF ࡟⛣ືࡋ࡚ᅗ㸷࡟♧ࡍࡼ࠺࡟ 2G\VVH\ ࡜ $TXDULXV ࡢࣔࢪ࣮ࣗࣝタᐃࢆ⾜ࡗࡓୖ࡛ PDNH ࢥ࣐ࣥࢻࢆᐇ⾜ࡍࡿࠋࣉࣟࢢ࣒ࣛࡢᐇ⾜ࡣ WHVWBZDLWLRUXQ ௨ୗ࡛࠶ࡿࠋJRBQLFDPVK ࡀ 2G\VVH\ ⏝ࡢ㸪JRBDGDBDTXDULXVVK ࡀ $TXDULXV ⏝ࡢࢪࣙࣈࢫࢡࣜࣉࢺ࡛࠶ࡿࠋࡇࢀࡽࢆ⥆ࡅ࡚ࢪࣙࣈ࡟ᢞධࡍࡿ࡜ࣉࣟࢢ࣒ࣛࡀᐇ⾜ࡉࢀࡿࠋᐇ⾜ࢹ࢕ࣞࢡࢺࣜ࡟ KRX ORJ3( ࣇ࢓࢖ࣝࡀฟຊࡉࢀࣇ࢓࢖ࣝࡢᮎᑿ࡟㸪!!!!!!!!!!!!!!!KRXBFRXSOLQJBHQG,1  KRXBFRXSOLQJBHQG287
ࡢࡼ࠺࡟㐃ᡂ⤊஢ࢧࣈ࣮ࣝࢳࣥࡢ࣓ࢵࢭ࣮ࢪࡀฟຊࡉࢀ࡚࠸ࢀࡤᐇ⾜ࡣᡂຌ࡛࠶ࡿࠋスーパーコンピューティングニュース- 28 -

Vol. 24, No.4

2022

#How to make nicam and ada
cd srcexport SYSTEM=odyssey
module purge
module load odyssey
module load waitio
make cleanmake nicam
export SYSTEM=aquarius
module purge
module load intel impi
module load waitio
module unload intel impi
module load gcc ompi
make clean
make adaᅗ㸷 ␗ᶵ✀㛫㐃ᡂࢧࣥࣉࣝࣉࣟࢢ࣒ࣛࡢࢥࣥࣃ࢖ࣝᡭ㡰

3Python APP 㐃ᡂᮏ❶࡛ࡣ h3-Open-UTIL/MP ࡢᣑᙇᶵ⬟ࡢ୍ࡘ࡛࠶ࡿ Python ࢔ࣉࣜࢣ࣮ࢩࣙࣥࡢ㐃ᡂᶵ⬟࡟ࡘ࠸࡚ㄝ᫂ࡍࡿࠋࡣࡌࡵ࡟ Python API ࡢᵓ㐀࡜௙ᵝ࡟ࡘ࠸࡚ㄝ᫂ࡋ㸪ḟ࠸࡛ Python ࢔ࣉࣜࢣ࣮ࢩࣙࣥࢆ㐃ᡂࡍࡿࡓࡵ࡟ᚲせ࡞ᡭ㡰ࢆලయ౛࡟ᇶ࡙ࡁࡘࡘㄝ᫂ࡍࡿࠋ

3.1 Python API ࡢᵓ㐀࡜௙ᵝh3-Open-UTIL/MP ࡢࢥ࣮ࢻࡣ Fortran ࡛グ㏙ࡉࢀ࡚࠾ࡾ㸪ࢿ࢖ࢸ࢕ࣈ࡞ API ࡣ Fortran ࡢࣔࢪ࣮ࣗࣝᙧᘧ࡛ᥦ౪ࡉࢀ࡚࠸ࡿࠋPython ࡣ C ゝㄒࡢ㛵ᩘࢆ࿧ࡧฟࡍᶵ⬟ࢆᣢࡕ C ゝㄒ࡜ࡢ㐃ᦠࡣᐜ࡛᫆࠶ࡿࡀ Fortran ࡢࣔࢪ࣮ࣗࣝࢆ┤᥋౑⏝ࡍࡿࡇ࡜ࡣ࡛ࡁ࡞࠸ࠋࡋ࠿ࡋ࡞ࡀࡽ Fortran2003 ௨㝆࡛ࡣ C ゝㄒࡢ஫᥮࢖ࣥࢱ࣮ࣇ࢙࣮ࢫࢆᥦ౪ࡍࡿ௙⤌ࡳࡀᶆ‽⿦ഛࡉࢀ࡚࠸ࡿࡓࡵ㸪ࡇࡢᶵ⬟ࢆ౑࠺ࡇ࡜࡛ Python ࠿ࡽ C ゝㄒࡢ㛵ᩘ࡜ࡋ࡚ Fortran ࡢࢧࣈ࣮ࣝࢳࣥ㸦ࡸ㛵ᩘ㸧ࢆࢥ࣮ࣝࡍࡿ஦ࡀ࡛ࡁࡿࠋලయⓗ࡞᪉ἲࢆ h3-Open-UTIL/MP ࡢึᮇ໬ࢧࣈ࣮ࣝࢳࣥࢆ౛࡜ࡋ࡚ㄝ᫂ࡍࡿࠋh3Open-UTIL/MP ࡢึᮇ໬ࢧࣈ࣮ࣝࢳࣥ h3ou_init ࡣࣔࢹࣝྡ࡜タᐃࣇ࢓࢖ࣝྡ㸦࠾ࡼࡧ optional ᘬᩘ࡜ࡋ࡚࢔ࣥࢧࣥࣈࣝᩘ㸧ࢆ୚࠼ࡿ௙ᵝ࡟࡞ࡗ࡚࠸ࡿࠋࡇࡢࢧࣈ࣮ࣝࢳࣥࢆ Python ࠿ࡽ࿧ࡧฟࡏࡿࡼ࠺࡟㸪ࣔࢪ࣮ࣗࣝ࡟ྵࡲࢀ࡞࠸ Fortran ࢧࣈ࣮ࣝࢳࣥࢆᐃ⩏ࡍࡿࠋึᮇ໬ࢧࣈ࣮ࣝࢳࣥࡢ
౛ࢆᅗ 10 ࡟♧ࡍࠋC ゝㄒࡣᩥᏐิࡢᢅ࠸ࡀ Fortran ࡜␗࡞ࡗ࡚࠸ࡿࡓࡵᩥᏐิࢆΏࡍ㝿ࡣඛ㢌఩⨨࡜㛗ࡉࡢ㸰ࡘࡢᘬᩘࢆΏࡍࡇ࡜࡟࡞ࡿࠋࡇࡢ㸰ࡘࡢ್࠿ࡽ㛵ᩘ get_char_str ࡛ Fortran ࡢᩥᏐิ࡟ኚ᥮ࡋ㸪h3-Open-UTIL/MP ࡢࢿ࢖ࢸ࢕ࣈ API ࡛࠶ࡿ h3ou_init ࢆࢥ࣮ࣝࡍࡿࠋࡇࡢࢧࣈ࣮ࣝࢳࣥ࡟ࡣ bind(C)ᒓᛶࡀ௜ຍࡉࢀ㸪ࡇࢀ࡟ࡼࡗ࡚ Python ࠿ࡽࡣ C ゝㄒࡢ㛵ᩘ࡜ࡋ࡚࿧ࡧฟࡍࡇ࡜ࡀྍ⬟࡜࡞ࡿࠋึᮇ໬ࢆྵࡴྛ✀ API ࣮ࣝࢳࣥࡣᅗ㸴ࡢ h3open_py.f90 ࡟᱁⣡ࡉࢀ࡚࠸ࡿࠋḟ࡟࿧ࡧฟࡋഃ࡛࠶ࡿ Python ࡢ㛵ᩘࢆᅗ 11 ࡟♧ࡍࠋࡣࡌࡵ࡟ argtypes ࡛࢖ࣥࢱ࣮ࣇ࢙࣮ࢫࢆᐃ⩏ࡋ㸪ࡘ࠸࡛ restypes ࡛㛵ᩘࡢ㏉್ࢆᐃ⩏ࡍࡿࠋࡇࡇ࡛ࡣ㏉್࡞ࡋ㸦c_void_p㸧ࡀ୚࠼ࡽࢀ࡚࠸ࡿࠋΏ
ࡉࢀ࡚ࡁࡓᘬᩘࡣ C ゝㄒࡢ࣏࢖ࣥࢱᆺ࡟ኚ᥮ࡉࢀᅗ 10 ࡟♧ࡉࢀࡓ Fortran ࢧࣈ࣮ࣝࢳࣥ࡟Ώࡉࢀࡿ࡜࡜ࡶ࡟㸪ᩥᏐิࡢ㛗ࡉࡶ࣏࢖ࣥࢱᘬᩘ࡜ࡋ࡚Ώࡉࢀࡿࠋ
スーパーコンピューティングニュース- 29 -Vol. 24, No.42022

subroutine h3oup_init(comp_name, comp_name_len, config_name, &config_name_len) bind(C)use h3ou_py_base, only : get_char_str
use h3ou_api, only : h3ou_init
implicit none
character(len=1):: comp_name(*)
integer, intent(IN) :: comp_name_lencharacter(len=1):: config_name(*)
integer, intent(IN) :: config_name_len
call h3ou_init(trim(get_char_str(comp_name, comp_name_len)), &trim(get_char_str(config_name, config_name_len)))end subroutine h3oup_initᅗ 10 PythonAPP 㐃ᡂ⏝ Fortran API ࡢෆᐜ౛def h3ou_init(comp_name, config_file_name):
h3oupf.h3oup_init.argtypes = [ctypes.POINTER(ctypes.c_char),ctypes.POINTER(ctypes.c_int32),
ctypes.POINTER(ctypes.c_char),ctypes.POINTER(ctypes.c_int32)]
h3oupf.h3oup_init.restype = ctypes.c_void_p
comp= ctypes.create_string_buffer(comp_name.encode("utf-8"))
comp_len = len(comp_name)config= ctypes.create_string_buffer(config_file_name.encode("utf-8"))
config_len = len(config_file_name)h3oupf.h3oup_init(comp, ctypes.byref(ctypes.c_int32(comp_len)), ¥config, ctypes.byref(ctypes.c_int32(config_len)))ᅗ 11 APython APP 㐃ᡂ⏝ API ࡢෆᐜ౛3.2 Python APP ᐇ⾜ࡢࡓࡵࡢ⎔ቃᵓ⠏Python ࡢ฼Ⅼࡣ㸪㇏ᐩ࡞ࣛ࢖ࣈࣛࣜ⩌ࡀ඲ୡ⏺ࡢ㛤Ⓨ⪅࠿ࡽᥦ౪ࡉࢀ࡚࠾ࡾ㸪ࡇࢀࡽࡢࣛ࢖ࣈ
ࣛࣜࢆ᭷ຠ฼⏝ࡍࡿࡇ࡜࡛㧗ᗘ࡞ᶵ⬟ࢆ⡆༢࡟ᐇ⌧ࡍࡿࡇ࡜ࡀ࡛ࡁࡿ㸪࡜࠸࠺Ⅼ࡟࠶ࡿࠋPython࢔ࣉࣜࢣ࣮ࢩࣙࣥࢆ㐃ᡂࡍࡿ㝿ࡶ┠ⓗ࡟ᛂࡌ࡚㐺ษ࡞ࣛ࢖ࣈࣛࣜࢆ࢖ࣥࢫࢺ࣮ࣝࡋ࡚฼⏝ࡍࡿࡇ࡜࡟࡞ࡿࡀ㸪ࡑࡢ㝿㸪ࢩࢫࢸ࣒⎔ቃ࡟ࡣ࢖ࣥࢫࢺ࣮࡛ࣝࡁࡎ࣮ࣘࢨ࣮㡿ᇦ࡟⎔ቃࢆᵓ⠏ࡍࡿࡇ࡜࡟࡞ࡿࠋࡑࡢࡓࡵࡢᡭ㡰ࡣ Wisteria/BDEC-01 ࢩࢫࢸ࣒฼⏝ᡭᘬࡁ᭩㸪᭱᪂∧ࡢᡭᘬࡁ᭩㸦Version1.1.9㸧࡛ࡣ 192 ࣮࣌ࢪࠕ9.2.5.㏣ຍࣃࢵࢣ࣮ࢪࡢ࢖ࣥࢫࢺ࣮ࣝ᪉ἲࠖ࡟グ㍕ࡉࢀ࡚࠸ࡿࠋࡇࡢᡭ㡰࡟ᚑࡗ࡚/work/groupname/username/packagename ࡟࢖ࣥࢫࢺ࣮ࣝࡉࢀࡓࣛ࢖ࣈࣛࣜ⩌ࡣࢪࣙࣈࢫ
ࢡࣜࣉࢺෆ࡛㸪source /work/groupname/username/packagename/bin/activate
࡜グ㏙ࡍࡿࡇ࡜࡛ࢪࣙࣈ࡟ᢞධࡉࢀࡓ Python ࣉࣟࢢ࣒ࣛ࠿ࡽཧ↷ྍ⬟࡜࡞ࡿࠋスーパーコンピューティングニュース- 30 -

Vol. 24, No.42022

3.3 Python ࣉࣟࢢ࣒ࣛࡢグ㏙᪉ἲ
h3-Open-UTIL/MP ࡢ Python API ࢥ࣮ࢻࡣ/work/h3-Open-UTIL/MP/h3ou_waitio/include/aquarius ࡟ࣇ࢓࢖ࣝྡ h3ou.py ࡛᱁⣡ࡉࢀ࡚࠸ࡿࠋᚑࡗ࡚㸪ࡇࡢ API ࢆ⏝࠸ࡿ࡟ࡣᅗ 12 ࡟♧ࡍࡼ࠺࡟ᙜヱࢹ࢕ࣞࢡࢺࣜ࡟ࣃࢫࢆタᐃࡋࡓୖ࡛ h3ou ࢆ import ࡍࡿࠋ࢖࣏࣮ࣥࢺࡋࡓࣛ࢖ࣈࣛࣜ࡟ᑐࡋ࡚
h3opp.h3ou_init(comp_name, config_name)ࡢࡼ࠺࡟ API ࢆࢥ࣮ࣝࡍࡿ஦࡛ h3-Open-UTIL/MP ࢆPython ࠿ࡽ฼⏝ࡍࡿࡇ࡜ࡀ࡛ࡁࡿࠋ

import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), ¥"/work/share/h3-Open-UTIL-MP/h3ou_waitio/include/aquarius"))import h3ou as h3opp┬␎print("H3Open Adaptive Data Analyzer initialization start, comp name = ", comp_name)h3opp.h3ou_init(comp_name, config_name)ᅗ 12 Python API ࡢ฼⏝౛

3.4 Python APP 㐃ᡂࡢලయ౛
Python APP 㐃ᡂࡢࢧࣥࣉࣝࣉࣟࢢ࣒ࣛࡣḟ❶࡛㏙࡭ࡿ␗ᶵ✀㛫㐃ᡂࡢࢧࣥࣉࣝࣉࣟࢢ࣒ࣛ࡜
࡜ࡶ࡟/work/share/h3-Open-UTIL-MP/src/sample/h3ou_waitio ௨ୗ࡟⨨࠿ࢀ࡚࠸ࡿࠋࡇࢀࢆ㐺ᙜ࡞ࢹ࢕ࣞࢡࢺࣜࡢࢥࣆ࣮ࡋ test_python/src ࡟⛣ືࡋ࡚ᅗ㸷ࡢ๓༙࡟౛♧ࡉࢀࡓ Odyssey ࡢࣔࢪ࣮ࣗࣝタᐃࢆ⾜ࡗࡓୖ࡛ make ࢥ࣐ࣥࢻࢆᐇ⾜ࡍࡿࠋPython APP ࡟ࡘ࠸࡚ࡣᙜ↛࡞ࡀࡽࢥࣥࣃ࢖࣭ࣝࣜ
ࣥࢡࡢᚲせࡀ࡞࠸ࡓࡵ make ࢥ࣐ࣥࢻࡢᑐ㇟ࡣ Odyssey ഃࡢࣉࣟࢢ࣒ࣛࡢࡳ࡜࡞ࡿࠋࣉࣟࢢ࣒ࣛࡢᐇ⾜ࡣ test_python/run ௨ୗ࡛࠶ࡿࠋgo_nicam.sh ࡀ Odyssey ⏝ࡢ㸪go_ada_aquarius.sh ࡀ Aquarius⏝ࡢࢪࣙࣈࢫࢡࣜࣉࢺ࡛࠶ࡿࠋࡇࢀࡽࢆ⥆ࡅ࡚ࢪࣙࣈ࡟ᢞධࡍࡿ࡜ࣉࣟࢢ࣒ࣛࡀᐇ⾜ࡉࢀࡿࠋᐇ
⾜ࢹ࢕ࣞࢡࢺࣜ࡟ h3ou*log.PE*ࣇ࢓࢖ࣝࡀฟຊࡉࢀࣇ࢓࢖ࣝࡢᮎᑿ࡟㸪>>>>>>>>>>>>>>> h3ou_coupling_end IN<<<<<<<<<<<<<<< h3ou_coupling_end OUTࡢࡼ࠺࡟㐃ᡂ⤊஢ࢧࣈ࣮ࣝࢳࣥࡢ࣓ࢵࢭ࣮ࢪࡀฟຊࡉࢀ࡚࠸ࢀࡤᐇ⾜ࡣᡂຌ࡛࠶ࡿࠋ4 ࢔ࣥࢧࣥࣈࣝ㐃ᡂᶵ⬟4.1 ࢔ࣥࢧࣥࣈࣝ㐃ᡂࡢᴫせ ࢔ࣥࢧࣥࣈࣝィ⟬࡜ࡣධຊࢹ࣮ࢱࡸࣃ࣓࣮ࣛࢱ࡞࡝ࡢᩘ್ࢆࢃࡎ࠿࡟ኚ࠼ࡓከᩘࡢࢩ࣑࣮ࣗࣞࢩࣙࣥࢆᐇ⾜ࡋ㸪⤖ᯝࡢ⤫ィⓗ࡞ᥥീࢆᚓࡿᡭἲ࡛࠶ࡿࠋgoogle ࡛ࠕ࢔ࣥࢧࣥࣈࣝィ⟬ࠖࡸࠕ࢔ࣥࢧࣥࣈࣝࢩ࣑࣮ࣗࣞࢩ᳨࡛ࣙࣥࠖ⣴ࡍࡿ࡜ࣄࢵࢺࡍࡿࡢࡣ࡯ࡰẼ㇟࣭Ẽೃࢩ࣑࣮ࣗࣞࢩࣙࣥ࡟㛵㐃ࡍࡿ࣮࣌ࢪ࡛༨ࡵࡽࢀࡿࠋࡇࡢࡇ࡜࠿ࡽ᥎ ࡛ࡁࡿࡼ࠺࡟㸪࢔ࣥࢧࣥࣈࣝィ⟬ࡣᙜ

スーパーコンピューティングニュース- 31 -

Vol. 24, No.42022ヱศ㔝࡛ࡣ୍⯡ⓗ࡞ィ⟬ᡭἲ࡛࠶ࡿࠋẼ㇟⌧㇟ࡣ㠀⥺ᙧᛶࡀᙉࡃ㸪ࣂࢱࣇࣛ࢖࢚ࣇ࢙ࢡࢺ࡜࠸
࠺ゝⴥ࡟㇟ᚩࡉࢀࡿࡼ࠺࡟ึᮇ್࡞࡝ࡢࢃࡎ࠿࡞㐪࠸ࡀ⤖ᯝ࡟኱ࡁ࡞┦㐪ࢆࡶࡓࡽࡍࠋᚑࡗ࡚
ಶࠎࡢࢩ࣑࣮ࣗࣞࢩࣙࣥࡀ୙ྍ㑊ⓗ࡟ෆᅾࡍࡿ୙☜ᐇᛶࢆపῶࡋ㸪࠶ࡿ࠸ࡣ୙☜ᐇᛶࡢ⛬ᗘࢆᐃ㔞ⓗ࡟ホ౯ࡍࡿࡓࡵ࡟ࡶ࢔ࣥࢧࣥࣈࣝィ⟬ࡣ୙ྍḞࡢᡭἲ࡛࠶ࡿࠋK2SHQ87,/03 ࡣ㐃ᡂࡉࢀࡓࣔࢹࣝࡢ࣌࢔ࢆ」ᩘ㉳ືࡋ㸪ྠ᫬࡟ከᩘࡢ㐃ᡂィ⟬ࢆᐇ⾜ࡍࡿࡇ࡜ࡀ࡛ࡁࡿࠋࡶࡕࢁࢇࡇࢀࡔࡅ࡞ࡽ」ᩘࡢࢪࣙࣈࢆྠ᫬࡟ᢞධࡍࡿࡇ࡜࡛ࡶᐇ⌧ྍ⬟࡛࠶ࡿࡀ㸪K2SHQ87,/03 ࡣᐇ⾜୰ࡢ㐃ᡂࣔࢹࣝ⩌࡟ᑐࡋ࡚㸪㐃ᡂ㛫㏻ಙࢆ⾜࠺ᶵ⬟ࢆ᭷ࡋ࡚࠸ࡿࠋ㏻ಙࡢᶍᘧᅗࢆᅗ  ࡟♧ࡍࠋᅗࡢࡼ࠺࡟ K2SHQ87,/03 ࡢ࢔ࣥࢧࣥࣈࣝ㐃ᡂࡣ㸰㏻ࡾࡢᐇ⾜᪉ἲࢆࢧ࣏࣮ࢺࡋ࡚࠸ࡿࠋࡦ࡜ࡘࡣᕥᅗࡢࡼ࠺࡟㸪㐃ᡂࡉࢀࡓ࣌࢔㸦౛࠼ࡤ኱Ẽᾏὒ⤖ྜࣔࢹࣝ㸧ࢆ」ᩘ㉳ືࡍࡿ᪉ἲ࡛࠶ࡾ㸪ࡶ࠺୍ࡘࡣྑᅗࡢࡼ࠺࡟」ᩘࡢࣔࢹࣝ $ ࡟ᑐࡋ࡚ࡦ࡜ࡘࡢࣔࢹࣝ % ࢆ㐃ᡂࡍࡿࡼ࠺
࡞᪉ἲ࡛࠶ࡿࠋᚋ⪅ࡢලయⓗ࡞㐺⏝౛ࢆᅗ  ࡟♧ࡍࠋࡇࡇ࡛ࡣపゎീᗘ኱Ẽࣔࢹࣝࡢ࢔ࣥࢧࣥࣈࣝ࡜㧗ゎീᗘ኱Ẽࣔࢹࣝࡀ㐃ᡂࡉࢀ࡚࠸ࡿࠋࡇࡢᡭἲ࡟ࡼࡾ㸪㧗ゎീᗘࣔࢹࣝࡢ࢔ࣥࢧࣥࣈࣝィ⟬࡟ẚࡋ࡚ࡼࡾᑡ࡞࠸ィ⟬㈨※࡛㸪☜ᗘࡢ㧗࠸㧗ゎീᗘィ⟬ࡀᐇ⌧࡛ࡁࡿࠋᅗ  ࢔ࣥࢧࣥࣈࣝ㐃ᡂࡢᐇ⾜ࣃࢱࣥUHPDSSLQJE\WKHFRXSOHU
1XGJLQJ ODUJHVFDOHVWDWXV 

EHWWHUUHSURGXFWLYLW\/RZUHVROXWLRQPRGHOHQVHPEOHᅗ  ከᑐ୍࢔ࣥࢧࣥࣈࣝ㐃ᡂࡢ㐺⏝౛
スーパーコンピューティングニュース- 32 -

Vol. 24, No.42022

4. 2 ࢔ࣥࢧࣥࣈࣝ㐃ᡂࡢ᪉ἲᮏ⠇࡛ࡣ h3-Open-UTIL/MP ࡟࠾࠸࡚࢔ࣥࢧࣥࣈࣝ㐃ᡂࡀ࡝ࡢࡼ࠺࡟ᐇ⌧ࡉࢀ࡚࠸ࡿ࠿ࢆゎㄝࡍࡿࠋㄝ᫂ࡢ౽ࡢࡓࡵ࡟㸪ࡇࡇ࡛࢔ࣥࢧࣥࣈࣝ᪉ྥ࡜㐃ᡂ᪉ྥ࡜࠸࠺⏝ㄒࢆᑟධࡍࡿࠋ࢔ࣥࢧ
ࣥࣈࣝ᪉ྥ࡜ࡣᅗ 13 ࡛ࡣᶓ᪉ྥ࡟࡞ࡿࠋ࢔ࣥࢧࣥࣈࣝ᪉ྥ࡛ࡣ࢔ࣥࢧࣥࣈࣝᑐ㇟࡜࡞ࡿྛࣔࢹࣝࢥ࣏࣮ࣥࢿࣥࢺࡣᙜ↛࡞ࡀࡽྠ୍ࡢࣔࢹ࡛ࣝ࠶ࡾ㸪᭦࡟ྠࡌ᫬✵㛫タᐃࢆᣢࡘ㸪ࡍ࡞ࢃࡕྠ
୍ࡢ᱁Ꮚ㸪ྠ୍ࡢ㡿ᇦศ๭㸪ྠ୍ࡢ✚ศ᫬㛫ࢫࢸࢵࣉ➼ࢆᣢࡘࡶࡢ࡜ࡍࡿࠋ୍᪉㐃ᡂ᪉ྥࡣᅗ
13 ࡛ࡣ⦪᪉ྥ࡜࡞ࡾ㸪ᑐ㇟࡜࡞ࡿࣔࢹࣝࢥ࣏࣮ࣥࢿࣥࢺࡣ┦஫࡟␗࡞ࡿ᫬✵㛫ᵓ㐀ࢆᣢࡘ␗࡞ࡿࣔࢹࣝ㸦ྠ୍ࣔࢹࣝࡶྵࡴ㸧࡛࠶ࡿࡇ࡜ࡀ๓ᥦ࡜࡞ࡿࠋ࢔ࣥࢧࣥࣈࣝィ⟬࡟࠾ࡅࡿ࢔ࣥࢧࣥࣈࣝᩘࡣ┠ⓗࡸ≀⌮ⓗ᮲௳㸪࠶ࡿ࠸ࡣ฼⏝ྍ⬟࡞ィ⟬㈨※㔞࡞࡝࡛␗࡞ࡿࡀ㸪኱つᶍ࡞ィ⟬࡟࡞ࡿ࡜ 1000 ࢆ㉺࠼ࡿ[4]ࠋࡇࡢ࢔ࣥࢧࣥࣈࣝᩘࢆ MPI ࡛㉳ືࡍࡿ㝿࡟ mpiexec -np N ensemble1 :-np N ensemble2 : -np N ensemble3 ࡢࡼ࠺࡟ࡦ࡜ࡘࡎࡘグ㏙ࡋ࡚࠸ࡃࡢࡣ⌧ᐇⓗ࡛ࡣ࡞࠸ࠋࡑࡇ
࡛ h3-Open-UTIL/MP ࡛ࡣ mpiexec -np MxNA ModelA : -np MxNB ModelB ࡢࡼ࠺࡟ྛࣔࢹ࡛ࣝᐇ⾜ࡉࢀࡿ඲ࣉࣟࢭࢫᩘࢆ mpi ࡬ࡢᘬᩘ࡜ࡍࡿࠋࡇࡇ࡛ M ࡣ࢔ࣥࢧࣥࣈࣝᩘ㸪NA ࡣ ModelA ࡟࠾ࡅࡿಶࠎࡢ࢔ࣥࢧࣥࣈࣝࡢࣉࣟࢭࢫᩘ㸪NB ࡣ ModelB ࡛ࡢಶࠎࡢ࢔ࣥࢧࣥࣈࣝࡢࣉࣟࢭࢫᩘ
࡛࠶ࡿࠋ࢔ࣥࢧࣥࣈࣝᩘ M ࡣ h3-Open-UTIL/MP ࡢึᮇ໬ API ࡛࠶ࡿ h3ou_init ࡛ᘬᩘ࡜ࡋ࡚୚
࠼ࡿࠋh3ou_init ࡣࢹࣇ࢛ࣝࢺ࡛ࡣᘬᩘ࡜ࡋ࡚ࣔࢹࣝྡ⛠࡜タᐃࣇ࢓࢖ࣝྡࡢ㸰ࡘࢆ୚࠼ࡿࡀ㸪㸱␒┠࡟ optional ᘬᩘ࡜ࡋ࡚࢔ࣥࢧࣥࣈࣝᩘ(num_of_ensemble)ࢆ୚࠼ࡿࡇ࡜ࡀ࡛ࡁࡿࡼ࠺࡟࡞
ࡗ࡚࠸ࡿࠋ㸰ࡘࡢࣔࢹ࡛ࣝ num_of_ensemble ࡣྠᩘ࠿ࡶࡋࡃࡣ∦᪉ࡀ㸯ࡢሙྜࡢࡳࡀチࡉࢀ㸪ྠᩘࡢሙྜࡣᅗ 13 ᕥᅗࡢᙧᘧ㸪∦᪉ࡀ㸯ࡢሙྜࡣᅗ 13 ྑᅗࡢᙧᘧ࡜ุᐃࡉࢀࡿࠋࡲࡓྛࣔࢹ
ࣝࡢ඲ࣉࣟࢭࢫᩘࡣ࢔ࣥࢧࣥࣈࣝᩘ࡛๭ࡾษࢀࡿࡇ࡜ࡀ᮲௳࡛࠶ࡿࠋh3ou_init ࡢᘬᩘ࡜ࡋ࡚୚࠼ࡽࢀࡿࣔࢹࣝࡢྡ⛠࠾ࡼࡧ MPI ⎔ቃ࠿ࡽᚓࡽࢀࡿ඲ࣉࣟࢭࢫᩘ࠿ࡽ㸪ྛࣔࢹࣝࡀྜィ࠸ࡃࡘࡢࣉࣟࢭࢫ࡛ᐇ⾜ࡉࢀࡿ࠿ࡀồࡵࡽࢀ㸪ࡇࡢ್࡜࢔ࣥࢧࣥࣈࣝᩘ M ࠿ࡽ࢔ࣥࢧࣥࣈࣝẖࡢࣉࣟ
ࢭࢫᩘ NA,NB ࡶồࡵࡽࢀࡿࠋᘬᩘ࡜ࡋ࡚୚࠼ࡿࣔࢹࣝྡࡣ࢝ࣉࣛෆ㒊࡛ࡣࣔࢹࣝ㆑ูࢥ࣮ࢻ࡜ࡋ࡚ᢅࢃࢀ㸪ᐇ㝿ࡢࣔࢹࣝྡࡣ ModelA0001㸪ModelA0002 ࡢࡼ࠺࡟࢔ࣥࢧࣥࣈࣝ␒ྕࡀ௜ຍࡉࢀࡓᩥᏐิ࡜࡞ࡿࠋࡇࢀࡀಶࠎࡢࣔࢹࣝྡ࡜ࡋ࡚ࣟࢢࣇ࢓࢖ࣝྡ࡞࡝࡟⏝࠸ࡽࢀࡿࡼ࠺࡟࡞ࡗ࡚࠸ࡿࠋಶࠎࡢࣉࣟࢭࢫࡀఱ␒ࡢ࢔ࣥࢧࣥࣈࣝ࡟ᡤᒓࡋ࡚࠸ࡿ࠿ࡣ h3-Open-UTIL/MP ࡢ API ࢆ㏻ࡌ࡚ྲྀᚓ࡛ࡁࡿࡢ࡛㸪࢔ࣥࢧࣥࣈࣝẖ࡟ࢹ࣮ࢱࡸࣃ࣓࣮ࣛࢱࢆኚ࠼ࡿ㝿࡟㸪ᡤᒓ␒ྕ࡟ᛂࡌ࡚ࢹ࣮ࢱࡢࢹ࢕ࣞࢡࢺࣜࢆኚ࠼ࡿ㸪࠶ࡿ࠸ࡣタᐃࣇ࢓࢖ࣝྡࢆኚ࠼ࡿ࡞࡝ࡢᑐᛂࡀྍ⬟࡜࡞ࡿࠋ࢔ࣥࢧࣥࣈࣝ㐃ᡂ࡟㝿ࡋ࡚ h3-Open-UTIL/MP ࡀ⏕ᡂࡋ౑⏝ࡋ࡚࠸ࡿ MPI ࢥ࣑ࣗࢽࢣ࣮ࢱࡢ✀㢮ࢆᅗ 15 ࡟♧ࡍࠋ᭱እ࿘ࡢ㯮⥺ࡣ MPI ࡢࢹࣇ࢛ࣝࢺࢥ࣑ࣗࢽࢣ࣮ࢱ MPI_COMM_WORLD࡛࠶ࡿࠋྛࣔࢹࣝࣉࣟࢭࢫ඲యࢆᅖࡴ㟷⥺ࡀ࢔ࣥࢧࣥࣈࣝ᪉ྥ㸦ࣔࢹࣝẖ㸧ࡢࢢ࣮ࣟࣂࣝ㏻ಙ
ࢆ⾜࠺ࢥ࣑ࣗࢽࢣ࣮ࢱ࡛࠶ࡿࠋಶࠎࡢࣔࢹࣝࢆᅖࡴ⥳⥺ࡀ㸪ྛࣔࢹࣝࢥ࣏࣮ࣥࢿࣥࢺࡀ㏻ಙ㸦౛࠼ࡤ⿇㡿ᇦࡢ஺᥮㸧࡟⏝࠸ࡿ࣮ࣟ࢝ࣝࢥ࣑ࣗࢽࢣ࣮ࢱ࡛࠶ࡿࠋ㐃ᡂ᪉ྥ࡟㸰ࡘࡢࣔࢹࣝࢥ࣏࣮ࣥࢿࣥࢺࢆᅖࡴ㯤Ⰽ⥺ࡀಶࠎࡢ࢔ࣥࢧࣥࣈ࡛ࣝ㐃ᡂ࡟⏝࠸ࡽࢀࡿࢥ࣑ࣗࢽࢣ࣮ࢱ࡛࠶ࡿࠋ᭱ᚋ࡟㸪࢔ࣥࢧࣥࣈࣝ᪉ྥ࡛ࣔࢹࣝෆࡢྠ୍ࣉࣟࢭࢫྠኈࢆ⧅࠸࡛࠸ࡿ㉥⥺ࡀ࢔ࣥࢧࣥࣈࣝ᪉
ྥࡢࣉࣟࢭࢫ㛫㏻ಙࢆ⾜࠺ࢥ࣑ࣗࢽࢣ࣮ࢱ࡛࠶ࡿࠋࡇࢀࡽࡢࢥ࣑ࣗࢽࢣ࣮ࢱࡢෆ㸪฼⏝⪅ࡀཧ↷ࡍࡿࡇ࡜ࡀ࡛ࡁ㸪࠿ࡘཧ↷ࡍࡿᚲせࡀ࠶ࡿࡢࡣ࣮ࣟ࢝ࣝࢥ࣑ࣗࢽࢣ࣮ࢱࡔࡅ࡛࠶ࡾ㸪ṧࡾࡢࢥ࣑ࣗࢽࢣ࣮ࢱࡣࡍ࡭࡚࢝ࣉࣛෆ㒊࡛౑⏝ࡉࢀࡿࠋ

スーパーコンピューティングニュース- 33 -

Vol. 24, No.42022࢔ࣥࢧࣥࣈࣝ㐃ᡂ࡛ࡣ㸪ಶࠎࡢ㐃ᡂィ⟬ࡢ㏵୰࡛࢔ࣥࢧࣥࣈࣝ᪉ྥࡢ⤫ィฎ⌮ࢆ⾜࠸ࡑࡢ⤖ᯝࢆ㐃ᡂィ⟬࡟཯ᫎࡉࡏࡿ㸪࡜࠸ࡗࡓィ⟬᪉ἲࡀ᝿ᐃࡉࢀ࡚࠸ࡿࠋ⌧ᅾᐇ⿦ࡉࢀ࡚࠸ࡿ⤫ィฎ⌮ࡣᖹᆒ್ࡢィ⟬ࡢࡳ࡛࠶ࡿࡀ㸪ࡇࢀ࡟ࡘ࠸࡚ࡣᚲせ࡟ᛂࡌ࡚௒ᚋ㏣ຍࡉࢀࡿணᐃ࡛࠶ࡿࠋᅗ  ࢔ࣥࢧࣥࣈࣝ㐃ᡂ࡟⏝࠸ࡽࢀࡿࢥ࣑ࣗࢽࢣ࣮ࢱ ࢔ࣥࢧࣥࣈࣝ㐃ᡂࡢලయ౛࢔ࣥࢧࣥࣈࣝ㐃ᡂࡢࢧࣥࣉࣝࣉࣟࢢ࣒ࣛࡣ :LVWHULD%('(& ࡢZRUNVKDUHK2SHQ87,/03KRXVUFVDPSOHKRX ௨ୗ࡟࠶ࡿࠋKRX ࢹ࢕ࣞࢡࢺࣜ࡟ࡣ 0NLQOFXGH ࣇ࢓࢖ࣝ࡜ V\VGHSWHVWBVLPSOHWHVWBHQVHPEOH ࢹ࢕ࣞࢡࢺࣜࡀ⨨࠿ࢀ࡚࠾ࡾ㸪WHVWBHQVHPEOH ࡀ࢔ࣥࢧࣥࣈࣝ㐃ᡂࡢࢸࢫࢺ⎔ቃ࡟࡞ࡗ࡚࠸ࡿࠋKRX ࢹ࢕ࣞࢡࢺࣜ௨ୗࢆ㐺ᙜ࡞ࢹ࢕ࣞࢡࢺࣜ࡟ࢥࣆ࣮ࡋ㸪WHVWBHQVHPEOOHVUF
ࢹ࢕ࣞࢡࢺ ࡛ࣜ PDNH ࢥ࣐ࣥࢻࢆ ᐇ⾜ࡍࡿ࡜ ࣉࣟࢢ࣒ࣛ ࡀࢥࣥࣃ࢖ ࣭ࣝࣜࣥࢡ ࡉࢀࡿࠋWHVWBHQVHPEOHUXQ ࢹ࢕ࣞࢡࢺ࡛ࣜ SMVXEJRVK ࡟ࡼࡾࢪࣙࣈ࡟ᢞධࡍࡿ࡜ࣉࣟࢢ࣒ࣛࡀᐇ⾜ࡉࢀࣟࢢࣇ࢓࢖ࣝ KRXDSS ORJ ࡀฟຊࡉࢀࡿࠋࣟࢢࣇ࢓࢖ࣝࡢᮎᑿ࡟!!!!!!!!!!!!!!!KRXBFRXSOLQJBHQG,1KRXBFRXSOLQJBHQG287
ࡢࡼ࠺࡟㐃ᡂ⤊஢ࢧࣈ࣮ࣝࢳࣥࡢ࣓ࢵࢭ࣮ࢪࡀฟຊࡉࢀ࡚࠸ࢀࡤᐇ⾜ࡣᡂຌ࡜࡞ࡿࠋ࢔ࣥࢧࣥࣈࣝ㐃ᡂࡢタᐃࣇ࢓࢖ࣝࡢᙧᘧࡣ>@࡛ゎㄝࡋࡓ㏻ᖖࡢ㐃ᡂࡢሙྜ࡜ྠࡌ࡛㸪ᐇ⾜᪉ἲࡶ㏻ᖖ㐃ᡂ࡜ኚࢃࡽ࡞࠸ࠋ၏୍ࡢ┦㐪ࡣ๓⠇࡛ㄝ᫂ࡋࡓࡼ࠺࡟㸪ึᮇ໬ $3, ࡛࠶ࡿ KRXBLQLW ࡛࢜ࣉࢩࣙࢼࣝᘬᩘ࡜ࡋ࡚࢔ࣥࢧࣥࣈࣝᩘࢆΏࡍࡇ࡜࡛࠶ࡿࠋ࢔ࣥࢧࣥࣈࣝᩘࡀΏࡉࢀࡿࡇ࡜࡛ K2SHQ
87,/03 ࡣࡇࡢᐇ⾜ࡀ࢔ࣥࢧࣥࣈࣝ㐃ᡂ࡛࠶ࡿ࡜ุ᩿ࡋࢥ࣑ࣗࢽࢣ࣮ࢱࡢ⏕ᡂࡸࣔࢹࣝྡࡢ⏕ᡂ࡞࡝ࡢฎ⌮ࢆ⾜࠺ࠋࢧࣥࣉࣝࣉࣟࢢ࣒࡛ࣛࡣᅗ  ࡟♧ࡍࡼ࠺࡟㸪ࣉࣟࢢ࣒ࣛࡢᘬᩘ࡜ࡋ࡚࢔
スーパーコンピューティングニュース- 34 -Vol. 24, No.4

2022ࣥࢧࣥࣈࣝᩘࢆྲྀᚓࡋ࡚ h3ou_init ࡢᘬᩘ࡜ࡋ࡚Ώࡋ࡚࠸ࡿࠋ࢔ࣥࢧࣥࣈࣝࡢ᝟ሗࡣࣟࢢࣇ࢓࢖
ࣝࡢෑ㢌௜㏆࡟ฟຊࡉࢀࡿࠋࢧࣥࣉࣝᐇ⾜ࡢࣟࢢࢆᅗ 16 ࡟♧ࡍࠋࢧࣥࣉࣝᐇ⾜ࡣከᑐ୍࢔ࣥࢧࣥࣈ࡛ࣝ࠶ࡿࡓࡵ㸮␒࢔ࣥࢧࣥࣈࣝ࡜ࡑࢀ௨እ࡛ືసࡀ␗࡞ࡿࠋᅗ 16 ୖᅗࡣ㸮␒࢔ࣥࢧࣥࣈࣝ
ࡢฟຊ㸪ୗᅗࡣ㸮␒௨እࡢฟຊ࡛࠶ࡿࠋ㸮␒ࡣ┦ᡭࣔࢹࣝ࡜ࡢ⤖ྜࣇࣛࢢ(coupling flag)ࡀ T ࡟࡞ࡗ࡚࠸ࡿࡀ㸪ࡑࡢ௚ࡢ࢔ࣥࢧࣥࣈࣝࡣ⤖ྜࣇࣛࢢࡀ F ࡜࡞ࡗ࡚࠾ࡾ┤᥋㐃ᡂࡉࢀ࡚࠸࡞࠸ࡇ࡜ࡀ
ࢃ࠿ࡿࠋ

subroutine init_common(comp_name, comp_id)
use h3ou_api, only : h3ou_init, h3ou_get_mpi_parameter
implicit none
character(len=*), intent(IN) :: comp_nameinteger, intent(IN):: comp_id
integer, parameter :: MAX_GRID = 8
integer :: ierror
integer :: num_of_arg
character(len=128) :: arg_ensembleinteger :: num_of_ensemble
intrinsic :: command_argument_count, get_command_argument
my_name = trim(comp_name)my_comp_id = comp_id
num_of_arg = command_argument_count()
if (num_of_arg == 0) then
num_of_ensemble = 0
else
call get_command_argument(1, arg_ensemble)
read(trim(arg_ensemble), *) num_of_ensemble
end ifif (num_of_ensemble >= 1) thencall h3ou_init(my_name, "coupling.conf", num_of_ensemble)
else
call h3ou_init(my_name, "coupling.conf")
end ifᅗ  ࢔ࣥࢧࣥࣈࣝ㐃ᡂࡢึᮇ໬ࣉࣟࢢ࣒ࣛ>>>>>>>>>>>>>>> h3ou_init IN--------------- ensemble information
Ensemble coupling : my name = app10000, target name =ensemble type = 2, coupling flag = Tapp20000

>>>>>>>>>>>>>>> h3ou_init IN--------------- ensemble information
Ensemble coupling : my name = app10001, target name = NO_TARGET
ensemble type = 2, coupling flag = Fᅗ  ࢔ࣥࢧࣥࣈࣝ㐃ᡂࡢࣟࢢ㸦ୖᅗ㸸㸮␒࢔ࣥࢧࣥࣈࣝ㸪ୗᅗ㸸㸮␒௨እࡢ࢔ࣥࢧࣥࣈࣝ㸧

スーパーコンピューティングニュース- 35 -Vol. 24, No.42022

ࡲ࡜ࡵ5ᮏ✏࡛ࡣ :LVWHULD%'(& ฼⏝஦౛࡜ࡋ࡚ỗ⏝㐃ᡂࢯࣇࢺ࢙࢘࢔ K2SHQ87,/03 ࡢᣑᙇᶵ⬟࡟ࡘ࠸࡚ゎㄝࡋࡓࠋK2SHQ6<6:DLW,2 ࡜ࡢ༠ㄪᶵ⬟ࢆ⏝࠸ࡿࡇ࡜࡛ 2G\VVH\ ࡜ $TXDULXV ࡢ㸰ࡘࡢࢩࢫࢸ࣒㛫࡛ࡢ㐃ᡂィ⟬ࡀྍ⬟࡜࡞ࡾ㸪᭦࡟ 3\WKRQ ࢖ࣥࢱ࣮ࣇ࢙࣮ࢫࢆ౪⏝ࡍࡿࡇ࡜࡟ࡼࡗ࡚ࢩ࣑࣮ࣗࣞࢩࣙࣥࣉࣟࢢ࣒ࣛ࡜ᶵᲔᏛ⩦ࣉࣟࢢ࣒ࣛ࡞࡝ᚑ᮶ࡣࣇ࢓࢖ࣝࢆ⤒⏤ࡋ࡚㏲ḟⓗ࡟ᐇ⾜ࡉࢀ࡚࠸ࡓฎ⌮ࢆࣜ࢔ࣝࢱ࢖࣒࡟୪ิฎ⌮ࡍࡿࡇ࡜ࡀ࡛ࡁࡿࡼ࠺࡟࡞ࡿࠋᮏ✏࡛ࡣ 7R\ࣔࢹࣝࢆ⏝࠸ࡓ⡆༢࡞ィ⟬஦౛ࢆ⤂௓ࡋࡓࡀ㸪ࡇࢀࡽࡢᶵ⬟ࢆᐇ࢔ࣉࣜࢣ࣮ࢩࣙࣥ࡟㐺⏝ࡋࡓィ⟬ࡶヨࡳࡽࢀ࡚࠸ࡿ>@ࠋ௒ᚋࡶᶵ⬟ᣑᙇࡸ࣮ࣘࢨ࢖ࣥࢱ࣮ࣇ࢙࣮ࢫࡢᨵⰋ࡜࠸ࡗࡓ࢝ࣉࣛᮏయ
ࡢ㛤Ⓨࢆ⥅⥆ࡍࡿ࡜࡜ࡶ࡟㸪ᐇ࢔ࣉࣜࢣ࣮ࢩࣙࣥ࡬ࡢ㐺⏝ࡶ᥎㐍ࡋ࡚ࡺࡃணᐃ࡛࠶ࡿࠋཧ⪃ᩥ⊩[1] Ⲩᕝ㝯㸪ඵ௦ᑦ㸪୰ᓥ◊࿃, Wisteria/BDEC-01 ฼⏝஦౛(5) ࣐ࣝࢳࣉࣟࢢ࣒ࣛ㐃ᡂࣛ࢖ࣈࣛ
ࣜ h3-Open-UTIL/MP(1/2), ࢫ࣮ࣃ࣮ࢥࣥࣆ࣮ࣗࢸ࢕ࣥࢢࢽ࣮ࣗࢫ Vol.24 No3,
https://www.cc.u-tokyo.ac.jp/public/VOL24/No3/13_202205-Wisteria-2.pdf[2] ఫඖ┿ྖ㸪ᆏཱྀྜྷ⏕㸪ᯇⴥᾈஓ㸪୰ᓥ◊࿃, Wisteria/BDEC-01 ฼⏝஦౛(3) ࢹ࣮ࢱཷࡅΏࡋ
ࣛ࢖ࣈࣛࣜ h3-Open-SYS/WaitIO(1/2), ࢫ࣮ࣃ࣮ࢥࣥࣆ࣮ࣗࢸ࢕ࣥࢢࢽ࣮ࣗࢫ Vol.24 No.2,
https://www.cc.u-tokyo.ac.jp/public/VOL24/No2/10_202203Wisteria-1.pdf[3] ఫඖ┿ྖ, ᆏཱྀྜྷ⏕, ᯇⴥᾈஓ, ୰ᓥ◊࿃, Wisteria/BDEC-01 ฼⏝஦౛(4) ࢹ࣮ࢱཷࡅΏࡋࣛ
࢖ࣈࣛࣜ h3-Open-SYS/WaitIO(2/2), ࢫ࣮ࣃ࣮ࢥࣥࣆ࣮ࣗࢸ࢕ࣥࢢࢽ࣮ࣗࢫ Vol.24 No.3,
https://www.cc.u-tokyo.ac.jp/public/VOL24/No3/12_202205-Wisteria-1.pdf[4] H. Yashiro, H., Terasaki, K., Kawai, Y., Kudo, S., Miyoshi, T., Imamura, T., Minami, K., Inoue, H.,Nishiki, T., Saji, T., Satoh, M., and Tomita, H.: "A 1024- Member Ensemble Data Assimilation with3.5-Km Mesh Global Weather Simulations," in SC20: International Conference for High
Performance Computing, Networking, Storage and Analysis (SC), Atlanta, GA, US, 2020 pp. 1-10.
doi: 10.1109/SC41405.2020.00005[5] Arakawa, T., Yashiro, H., Nakajima, K., Development of a coupler h3-Open-UTIL/MP, ACM
Proceedings of the International Conference on High Performance Computing in Asia-PacificRegion(HPC Asia 2022), 2022, https://doi.org/10.1145/3492805.3492809

スーパーコンピューティングニュース- 36 -Vol. 24, No.42022