Skip to content
Snippets Groups Projects
Commit c25ffd61 authored by Gab's avatar Gab
Browse files

Merge branch '18-add-gysela-test-case' into 'develop'

Resolve "add gysela test case"

Closes #18

See merge request dci/chips!17
parents 1d4089c1 3e6cc4c8
No related branches found
No related tags found
No related merge requests found
#******************************************
# job parameters
#******************************************
NB_RESTART = 0
TIME = 1:30:00
MACHINE_FILE =
JOBNAME = weak_Nmu1
#*******************************************
# Variables used to specify if the
# simulation is a restart from
# another one
#*******************************************
SEARCH_SP0 = 0 ! 0 if no restart, 1 otherwise
DIR_SP0 = ! if SEARCH_SP0=1, name of the directory
! containing the major species restart files
#*******************************************
# Variables for parallelization
#*******************************************
NSPECIES = 1
NPROC_R = 2
NPROC_TH = 4
NPROC_MU = 8
NTHREAD = 32
#*******************************************
# Variables for radial profile input files
#*******************************************
ns0_sp0_filename = ns0_sp0_test.dat
ns0_sp1_filename = ns0_sp1_test.dat
Ts0_sp0_filename = Ts0_sp0_test.dat
Ts0_sp1_filename = Ts0_sp1_test.dat
q_filename = safety_factor_test.dat
Vpars0_sp0_filename = Vpar0_sp0_test.dat
Vpars0_sp1_filemame = Vpar0_sp1_test,dat
ripple_filename = ripple_test.dat
#******************************************
# gysela input datas
#******************************************
&PARALLEL
Nspecies = $NSPECIES
Nbproc_r = $NPROC_R
Nbproc_theta = $NPROC_TH
Nbproc_mu = $NPROC_MU
Nbthread = $NTHREAD
/
&MESH
CylindricalGeometry = .false.
Nr = 511
Ntheta = 1024
Nphi = 64
Nvpar = 63
Nmu = $((NPROC_MU-1))
small_radius = 150.
rhomin = 0.0
rhomax = 1.15
Ltheta = 6.283185307179586476925286766559005768394
Lphi = 6.283185307179586476925286766559005768394
aspect_ratio = 3.2
nb_vth0 = 7.
Lmu = 20.
mumin = 0.,
/
&EQUIL
! Define the choice for electrons
! 0 = "ADIABATIC"
! 1 = "FULL-KINETIC"
! 2 = "TRAPPED-KINETIC"
electron_type = 0
! The possible choices for the equilibrium distribution function are:
! 1 = "MAXWELLIAN"[default]
! 2 = "ENERGETIC_PARTICLES"
fequilibrium_type = 4
tau0 = 1.
A0 = 1.
Z0 = 1.
As = 2.
Zs = 1.
species_frac = 1.
read_ns0 = .false.
read_Ts0 = .false.
read_q = .false.
read_Vpars0 = .false.
profile_choice = 1
rpeak = 0.5
kappa_ns0 = 1.0
kappa_Ts0 = 5.0
deltar_ns0 = 1.0
deltar_Ts0 = 1.0
Vpars0 = 0.
q_profile = 4
q_param1 = 0.854
q_param2 = 0.
q_param3 = 2.184
q_param4 = 0.
magnetic_drift = .true.
perturb_amplitude = 0.
perturb_choice = 1
m = 0
n = 0
!--> Gyroaverage tunable input parameters
gyroaverage = .true.
! The default 'gyro_strategy' is "PADE"
! All possible choices:
! {"PADE", "SPLINE", "HERMITE"}
gyro_strategy = "HERMITE"
! The default 'gyro_opt_hermite' is "BLOCKING"
! All possible choices:
! {"BLOCKING", "LAYOUT"}
! gyro_opt_hermite = ""
! 'gyro_Nbpoints' is usefull only if
! gyro_strategy={"SPLINE", "HERMITE"}
gyro_Nbpoints = 8
TF_ripple = .false.
N_ripple = 0,
/
&COLLISION_OPERATOR
!collision_strategy = "NONE"
collision_strategy = "GENERAL"
nustar = 0.1
coll_nbstep = 4,
/
&BUFFER_REGION
coef_diffr = 0.
coef_diffth = 0.
buffer_asymmetry = .false.
right_buffer_only = .true.
buffer_location = 0.062
buffer_stiffness = 0.01473046
SOL = .true.
SOL_separatrix = 1.0
SOL_stiffness = 0.07
SOL_exp_decay = 1.e-3
SOL_krook_coeff = 0.2
/
&LIMITER
LIM = .true.
LIM_flat = .true.
LIM_curvature = 0.
LIM_rseparatrix = 1.0
LIM_theta_position = 4.71238898038469
LIM_deltath = 2.0
LIM_WALL_rposition = 1.1
/
&ALGORITHM
Vlasov_scheme = "BSL"
aligned_strategy = "NONE"
skiphole = .true.
FFTpotential_filter = 0
FFTpotential_filter_deltam = 0.
deltat = 50.
nbiter = 4
dt_diag = 200.
/
&SOURCE
flux_driven = .true.
heat_source = .true.
heat_version = 0
Sce0 = 0.0
TS = 1.5
rhoS = 0.
LS = 0.1
/
&TEST
!--> Tests for QN solver
solve_QN = .true.
QN_coef_Phi00 = 1
!--> Tests for RHS of Boltzmann equation
RHS_only = .false.
!--> Tests for equilibrium definition
!--> Tests with simplified physics
BstareqB = .false.
single_m = .false.
single_n = .false.
Rosenbluth_Hinton = .false.
!--> Tests for computer sciences
modulo_restart_iter = 400
/
&OUTPUT
! checkpointing_strategy = "" ! empty or "DEFAULT", "NONE", "SYNC"
checkpointing_rstwrite = .false.
integration_CS = .true.
diag_level = 8
Phi3D_saving = .true.
Moments3D_saving = .true.
fluxes3D_GC_saving = .true.
f5D_saving = .false.
Phi3D_dt_diag = 200.
Moments3D_dt_diag = 200.
fluxes3D_GC_dt_diag = 200.
f5D_dt_diag = 4000.
/
&F_CS_SAVING
add_CS_passing = .true.
rho1_CS_passing = 0.5
rho2_CS_passing = 1.05
theta1_CS_passing = 5.5
theta2_CS_passing = 4.71238898038469
vpar1_CS_passing = 0.1
vpar2_CS_passing = 1.0,
/
#******************************************
# job parameters
#******************************************
NB_RESTART = 0
TIME = 1:30:00
MACHINE_FILE =
JOBNAME = weak_Nmu1
#*******************************************
# Variables used to specify if the
# simulation is a restart from
# another one
#*******************************************
SEARCH_SP0 = 0 ! 0 if no restart, 1 otherwise
DIR_SP0 = ! if SEARCH_SP0=1, name of the directory
! containing the major species restart files
#*******************************************
# Variables for parallelization
#*******************************************
NSPECIES = 1
NPROC_R = 2
NPROC_TH = 4
NPROC_MU = 1
NTHREAD = 32
#*******************************************
# Variables for radial profile input files
#*******************************************
ns0_sp0_filename = ns0_sp0_test.dat
ns0_sp1_filename = ns0_sp1_test.dat
Ts0_sp0_filename = Ts0_sp0_test.dat
Ts0_sp1_filename = Ts0_sp1_test.dat
q_filename = safety_factor_test.dat
Vpars0_sp0_filename = Vpar0_sp0_test.dat
Vpars0_sp1_filemame = Vpar0_sp1_test,dat
ripple_filename = ripple_test.dat
#******************************************
# gysela input datas
#******************************************
&PARALLEL
Nspecies = $NSPECIES
Nbproc_r = $NPROC_R
Nbproc_theta = $NPROC_TH
Nbproc_mu = $NPROC_MU
Nbthread = $NTHREAD
/
&MESH
CylindricalGeometry = .false.
Nr = 511
Ntheta = 1024
Nphi = 64
Nvpar = 63
Nmu = $((NPROC_MU-1))
small_radius = 150.
rhomin = 0.0
rhomax = 1.15
Ltheta = 6.283185307179586476925286766559005768394
Lphi = 6.283185307179586476925286766559005768394
aspect_ratio = 3.2
nb_vth0 = 7.
Lmu = 20.
mumin = 0.,
/
&EQUIL
! Define the choice for electrons
! 0 = "ADIABATIC"
! 1 = "FULL-KINETIC"
! 2 = "TRAPPED-KINETIC"
electron_type = 0
! The possible choices for the equilibrium distribution function are:
! 1 = "MAXWELLIAN"[default]
! 2 = "ENERGETIC_PARTICLES"
fequilibrium_type = 4
tau0 = 1.
A0 = 1.
Z0 = 1.
As = 2.
Zs = 1.
species_frac = 1.
read_ns0 = .false.
read_Ts0 = .false.
read_q = .false.
read_Vpars0 = .false.
profile_choice = 1
rpeak = 0.5
kappa_ns0 = 1.0
kappa_Ts0 = 5.0
deltar_ns0 = 1.0
deltar_Ts0 = 1.0
Vpars0 = 0.
q_profile = 4
q_param1 = 0.854
q_param2 = 0.
q_param3 = 2.184
q_param4 = 0.
magnetic_drift = .true.
perturb_amplitude = 0.
perturb_choice = 1
m = 0
n = 0
!--> Gyroaverage tunable input parameters
gyroaverage = .true.
! The default 'gyro_strategy' is "PADE"
! All possible choices:
! {"PADE", "SPLINE", "HERMITE"}
gyro_strategy = "HERMITE"
! The default 'gyro_opt_hermite' is "BLOCKING"
! All possible choices:
! {"BLOCKING", "LAYOUT"}
! gyro_opt_hermite = ""
! 'gyro_Nbpoints' is usefull only if
! gyro_strategy={"SPLINE", "HERMITE"}
gyro_Nbpoints = 8
TF_ripple = .false.
N_ripple = 0,
/
&COLLISION_OPERATOR
!collision_strategy = "NONE"
collision_strategy = "GENERAL"
nustar = 0.1
coll_nbstep = 4,
/
&BUFFER_REGION
coef_diffr = 0.
coef_diffth = 0.
buffer_asymmetry = .false.
right_buffer_only = .true.
buffer_location = 0.062
buffer_stiffness = 0.01473046
SOL = .true.
SOL_separatrix = 1.0
SOL_stiffness = 0.07
SOL_exp_decay = 1.e-3
SOL_krook_coeff = 0.2
/
&LIMITER
LIM = .true.
LIM_flat = .true.
LIM_curvature = 0.
LIM_rseparatrix = 1.0
LIM_theta_position = 4.71238898038469
LIM_deltath = 2.0
LIM_WALL_rposition = 1.1
/
&ALGORITHM
Vlasov_scheme = "BSL"
aligned_strategy = "NONE"
skiphole = .true.
FFTpotential_filter = 0
FFTpotential_filter_deltam = 0.
deltat = 50.
nbiter = 4
dt_diag = 200.
/
&SOURCE
flux_driven = .true.
heat_source = .true.
heat_version = 0
Sce0 = 0.0
TS = 1.5
rhoS = 0.
LS = 0.1
/
&TEST
!--> Tests for QN solver
solve_QN = .true.
QN_coef_Phi00 = 1
!--> Tests for RHS of Boltzmann equation
RHS_only = .false.
!--> Tests for equilibrium definition
!--> Tests with simplified physics
BstareqB = .false.
single_m = .false.
single_n = .false.
Rosenbluth_Hinton = .false.
!--> Tests for computer sciences
modulo_restart_iter = 400
/
&OUTPUT
! checkpointing_strategy = "" ! empty or "DEFAULT", "NONE", "SYNC"
checkpointing_rstwrite = .false.
integration_CS = .true.
diag_level = 8
Phi3D_saving = .true.
Moments3D_saving = .true.
fluxes3D_GC_saving = .true.
f5D_saving = .false.
Phi3D_dt_diag = 200.
Moments3D_dt_diag = 200.
fluxes3D_GC_dt_diag = 200.
f5D_dt_diag = 4000.
/
&F_CS_SAVING
add_CS_passing = .true.
rho1_CS_passing = 0.5
rho2_CS_passing = 1.05
theta1_CS_passing = 5.5
theta2_CS_passing = 4.71238898038469
vpar1_CS_passing = 0.1
vpar2_CS_passing = 1.0,
/
module purge
module load intel/19.0.5.281 mpi/openmpi/4.0.2 hdf5/1.8.20 cmake/3.9.1
module load python3
module load doxygen/1.8.11
export PATH=$DOXYGEN_EXEDIR:$PATH
export PROJ=tgcc0090
export ARCH=irene_amd
......
This diff is collapsed.
GPU test presentation
----------------------------
The GPU case tests corresponds to two tests on 1 and 8 nodes performed on irene AMD that are interesting to port on accelerated nodes.
Case\_MPI8 on 1 nodes:
- 8 MPI tasks
- 8 MPI tasks per node
- 14.7 Go per MPI task
- Total time: 957.56 s
- Total time (without init & diag): 900.44 s
Case\_MPI64 on 8 nodes:
- 64 MPI tasks
- 8 MPI per node
- 13.7 Go per MPI task
- Total time: 325.34 s
- Total time (without init & diag): 230.47 s
The compute time (total time without initialization and diagnostics) is the time indicator for the part of the application targeted to be ported on GPU.
The number of OpenMP threads can be set depending on your machine.
Please, read the section **Add a new machine** in the application [README](../README.md).
####################################
# REMOVE PREVIOUS LOGS
####################################
rm -rf ./*CASE*MPI*
rm -rf ./Case*_MPI*
####################################
# Source the right environment
####################################
if [ -z "$1" ]
then
echo "Please provide the targeted machine from:"
ls machines/
echo ""
echo "Example: ./prepare.sh occigen-bdw"
exit 1
fi
env_file="../machines/$1/env_bench"
if [ ! -f $env_file ]
then
echo "ERROR: $env_file not found!"
exit 1
else
source $env_file
cp ../machines/$1/subgys ./
cp $GYSELA_PATH/wk/gysela.exe ./
fi
####################################
# COMPILE THE TEST CASE
####################################
if [ ${ARCH} = 'occigen2' ]; then
echo "No strong scaling for occigen architecture. Only for irene AMD"
elif [ ${ARCH} = 'jeanzay' ]; then
echo "No strong scaling for Jean-Zay architecture. Only for irene AMD"
elif [ ${ARCH} = 'irene_amd' ]; then
cp ../machines/irene-amd/Case_MPI8* ./
cp ../machines/irene-amd/Case_MPI64* ./
cp ../machines/irene-amd/env_bench ./
fi
####################################
# RUN SMALLTEST
####################################
source env_bench
export NOCHECKNMU=1
./subgys Case_MPI8_Nthread32_512X1024X64X64X1
./subgys Case_MPI64_Nthread32_512X1024X64X64X8
#####################################################################
# VALIDATE THE SIMULATION
#####################################################################
path=../gysela/wk/
mkdir results
mkdir results/CASE_MPI8
mkdir results/CASE_MPI64
cp ${path}/Case_MPI8_Nthread32_512X1024X64X64X1/gysela_* ./results/CASE_MPI8/
cp ${path}/Case_MPI64_Nthread32_512X1024X64X64X8/gysela_* ./results/CASE_MPI64/
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment