Kenkentake / optimizePara

make c programs that can execute the parallel optimization
0 stars 0 forks source link

Run test estimation (not using Neuron) on Fugaku #7

Closed Kenkentake closed 3 years ago

Kenkentake commented 3 years ago

Summary

Run test estimation (not using Neuron) on Fugaku

Goal

Run test estimation (not using Neuron) on Fugaku and merge

Todo

Deadline

08/16

Parent issue

None

References

None

Notes

None

Kenkentake commented 3 years ago

実行結果(.outファイルの中身は空で、MPI_Comm_spawnする際のノード数が足りないエラーが発生)

[u00690@Fugaku ~/optimizePara/src_test]$cat job_test.sh.7469388.err.1.0
[a25-5109c:00079] [mpi::dpm::spawn-resource-error] [[17402,5882],0] There are not enough compute nodes to create processes dynamically according to the requirement.
[mpi::mpi-errors::mpi_errors_are_fatal]
[a25-5109c:00079] *** An error occurred in MPI_Comm_spawn
[a25-5109c:00079] *** reported by process [1140463354,281470681743360]
[a25-5109c:00079] *** on communicator MPI_COMM_SELF
[a25-5109c:00079] *** Unknown error (this should not happen!)
[a25-5109c:00079] *** MPI_ERRORS_ARE_FATAL (processes in this communicator will now abort,
[a25-5109c:00079] ***    and potentially your MPI job)
Kenkentake commented 3 years ago

-mpi "max-proc-per-node= 8で1ノードあたりのプロセス数を8に設定したら、エラーは出るもののテストコードは回って想定の出力が得られた。(8の値は福田さんの修論から参照)

job_tesh.shは以下

#!/bin/bash
#PJM --rsc-list "node=8"
#PJM --rsc-list "elapse=10:00"
#PJM --mpi "shape=1"
#PJM --mpi "max-proc-per-node=8"
#PJM -S

export PARALLEL=8
export OMP_NUM_THREADS=$PARALLEL
export PLE_MPI_STD_EMPTYFILE="off"
# export OMP_WAIT_POLICY=ACTIVE

# argv for estimate_main to run test
NUM_OF_POP=16
MU=8
NUM_OF_CHILD_PROCS=2
MAXEVAL=4
NUM_OF_GRANDCHILD_PROCS=2
EXEC_PROG="./test_est_target"
DIM_CON_MAT=4
CON_MAT_NAME="../data/conMat_test.txt";
PARAMETER_FILENAME="../data/params_test.txt";

MPIEXEC="mpiexec -mca mpi_print_stats 1"
NPROC="-n 1"
PROF=""

# minimal estimate_main
EXEC_FILE="./estimate_main ${NUM_OF_POP} ${MU} ${NUM_OF_CHILD_PROCS} ${MAXEVAL} ${NUM_OF_GRANDCHILD_PROCS} ${EXEC_PROG} ${DIM_CON_MAT} ${CON_MAT_NAME} ${PARAMETER_FILENAME}"

# python3
# module load Python3-CN
# export FLIB_CNTL_BARRIER_ERR=FALSE

# execute job
mpiexec -np 1 ${EXEC_FILE}

出力された.outファイル(.out.{何回目のmpiexecの実行か}.{ランク番号}@spawn番号)

Kenkentake commented 3 years ago

上記のエラーはmake_nauro_spawn.cでmalloccallocで動的に確保していたメモリをfreeで解放していなかったのが原因 make_neuro_spawn.cに以下を追加したらエラーが解消された

free(pop_rcvbuf_whole);
free(pop_sendbuf_nrn_weight_adjust_dim);
Kenkentake commented 3 years ago

メモ: freeで動的メモリを開放した後にポインタをNULLクリアしているのは二重freeを防ぐため(参照)

Kenkentake commented 3 years ago

わかったこと

Kenkentake commented 3 years ago

エラーなく実行可能な状態になった