Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
An example with SMPI and CPP platform
authorBruno Donassolo <bruno.donassolo@inria.fr>
Thu, 3 Jun 2021 13:59:50 +0000 (15:59 +0200)
committerBruno Donassolo <bruno.donassolo@inria.fr>
Fri, 4 Jun 2021 11:42:15 +0000 (13:42 +0200)
Shows how to use smpirun to execute an application with the platform described in C++.

MANIFEST.in
examples/smpi/CMakeLists.txt
examples/smpi/simple-execute/hostfile_griffon [new file with mode: 0644]
examples/smpi/simple-execute/simple-execute-cpp-platf.tesh [new file with mode: 0644]
teshsuite/smpi/CMakeLists.txt
tools/cmake/DefinePackages.cmake

index 609b4a7..a2f736d 100644 (file)
@@ -636,6 +636,8 @@ include examples/smpi/replay_multiple_manual_deploy/workload_compute_consecutive
 include examples/smpi/replay_multiple_manual_deploy/workload_compute_simple
 include examples/smpi/replay_multiple_manual_deploy/workload_mixed2_same_time
 include examples/smpi/replay_multiple_manual_deploy/workload_mixed2_same_time_and_resources
+include examples/smpi/simple-execute/hostfile_griffon
+include examples/smpi/simple-execute/simple-execute-cpp-platf.tesh
 include examples/smpi/simple-execute/simple-execute.c
 include examples/smpi/simple-execute/simple-execute.tesh
 include examples/smpi/smpi_s4u_masterworker/deployment_masterworker_mailbox_smpi.xml
@@ -821,6 +823,7 @@ include teshsuite/smpi/coll-allreduce/coll-allreduce.tesh
 include teshsuite/smpi/coll-alltoall/clusters.tesh
 include teshsuite/smpi/coll-alltoall/coll-alltoall.c
 include teshsuite/smpi/coll-alltoall/coll-alltoall.tesh
+include teshsuite/smpi/coll-alltoall/griffon.tesh
 include teshsuite/smpi/coll-alltoallv/coll-alltoallv.c
 include teshsuite/smpi/coll-alltoallv/coll-alltoallv.tesh
 include teshsuite/smpi/coll-barrier/coll-barrier.c
@@ -843,6 +846,7 @@ include teshsuite/smpi/hostfile
 include teshsuite/smpi/hostfile_cluster
 include teshsuite/smpi/hostfile_coll
 include teshsuite/smpi/hostfile_empty
+include teshsuite/smpi/hostfile_griffon
 include teshsuite/smpi/hostfile_io
 include teshsuite/smpi/hostfile_mpich
 include teshsuite/smpi/io-all-at/io-all-at.c
@@ -1895,6 +1899,7 @@ include examples/platforms/energy_cluster.xml
 include examples/platforms/energy_platform.xml
 include examples/platforms/faulty_host.xml
 include examples/platforms/g5k.xml
+include examples/platforms/griffon.cpp
 include examples/platforms/griffon.xml
 include examples/platforms/hosts_with_disks.xml
 include examples/platforms/meta_cluster.xml
index f3c98e7..7c46e06 100644 (file)
@@ -54,6 +54,7 @@ unset(_${x}_outdir)
 set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/energy/energy.tesh
                                    ${CMAKE_CURRENT_SOURCE_DIR}/trace/trace.tesh
                                    ${CMAKE_CURRENT_SOURCE_DIR}/simple-execute/simple-execute.tesh
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/simple-execute/simple-execute-cpp-platf.tesh
                                    ${CMAKE_CURRENT_SOURCE_DIR}/gemm/gemm.tesh
                                    ${CMAKE_CURRENT_SOURCE_DIR}/trace_simple/trace_simple.tesh
                                    ${CMAKE_CURRENT_SOURCE_DIR}/trace_call_location/trace_call_location.tesh
@@ -69,7 +70,8 @@ set(bin_files     ${bin_files}     ${CMAKE_CURRENT_SOURCE_DIR}/hostfile
                                    ${CMAKE_CURRENT_SOURCE_DIR}/mc/hostfile_bugged2
                                    ${CMAKE_CURRENT_SOURCE_DIR}/mc/hostfile_only_send_deterministic
                                    ${CMAKE_CURRENT_SOURCE_DIR}/mc/hostfile_mutual_exclusion
-                                   ${CMAKE_CURRENT_SOURCE_DIR}/mc/hostfile_non_termination                 PARENT_SCOPE)
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/mc/hostfile_non_termination
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/simple-execute/hostfile_griffon             PARENT_SCOPE)
 set(txt_files     ${txt_files}     ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions0.txt
                                    ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions1.txt
                                    ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_allreduce.txt
@@ -98,6 +100,7 @@ if(enable_smpi)
 
   ADD_TESH(smpi-tracing        --setenv bindir=${CMAKE_BINARY_DIR}/examples/smpi/trace --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/trace --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi/trace ${CMAKE_HOME_DIRECTORY}/examples/smpi/trace/trace.tesh)
   ADD_TESH(smpi-simple-execute       --setenv bindir=${CMAKE_BINARY_DIR}/examples/smpi/simple-execute --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/simple-execute --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi/simple-execute ${CMAKE_HOME_DIRECTORY}/examples/smpi/simple-execute/simple-execute.tesh)
+  ADD_TESH(smpi-simple-execute-cpp-platf       --setenv bindir=${CMAKE_BINARY_DIR}/examples/smpi/simple-execute --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/simple-execute --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv libdir=${CMAKE_BINARY_DIR}/lib --cd ${CMAKE_BINARY_DIR}/examples/smpi/simple-execute ${CMAKE_HOME_DIRECTORY}/examples/smpi/simple-execute/simple-execute-cpp-platf.tesh)
   ADD_TESH(smpi-tracing-simple --setenv bindir=${CMAKE_BINARY_DIR}/examples/smpi/trace_simple --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/trace_simple --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi/trace_simple ${CMAKE_HOME_DIRECTORY}/examples/smpi/trace_simple/trace_simple.tesh)
   ADD_TESH(smpi-tracing-call-location --setenv bindir=${CMAKE_BINARY_DIR}/examples/smpi/trace_call_location --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi/trace_call_location ${CMAKE_HOME_DIRECTORY}/examples/smpi/trace_call_location/trace_call_location.tesh)
   ADD_TESH(smpi-replay         --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/replay/replay.tesh)
diff --git a/examples/smpi/simple-execute/hostfile_griffon b/examples/smpi/simple-execute/hostfile_griffon
new file mode 100644 (file)
index 0000000..675e59c
--- /dev/null
@@ -0,0 +1,2 @@
+griffon-2.nancy.grid5000.fr
+griffon-70.nancy.grid5000.fr
diff --git a/examples/smpi/simple-execute/simple-execute-cpp-platf.tesh b/examples/smpi/simple-execute/simple-execute-cpp-platf.tesh
new file mode 100644 (file)
index 0000000..b7b7ab9
--- /dev/null
@@ -0,0 +1,80 @@
+p C++ interface (griffon.so) with hostfile: Simple pingpong test
+! output sort
+$ ${bindir:=.}/../../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile_griffon -platform ${libdir:=.}/libgriffon.so -np 2 ${bindir:=.}/smpi_simple-execute --log=smpi_config.thres:warning --log=xbt_cfg.thres:warning --cfg=smpi/simulate-computation:no --log=smpi_mpi.:verbose --log=smpi_bench.thresh:debug --log=no_loc
+> [rank 0] -> griffon-2.nancy.grid5000.fr
+> [rank 1] -> griffon-70.nancy.grid5000.fr
+> [griffon-2.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Init
+> [griffon-70.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Init
+> [griffon-2.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Init
+> [griffon-2.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Comm_size
+> [griffon-2.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Comm_size
+> [griffon-2.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Comm_rank
+> [griffon-2.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Comm_rank
+> [griffon-2.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Send
+> [griffon-70.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Init
+> [griffon-70.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Comm_size
+> [griffon-70.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Comm_size
+> [griffon-70.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Comm_rank
+> [griffon-70.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Comm_rank
+> [griffon-70.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Recv
+> [griffon-2.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Send
+> [griffon-2.nancy.grid5000.fr:0:(1) 0.000000] [smpi_bench/DEBUG] Handle real computation time: 1430435.000000 flops
+> [griffon-70.nancy.grid5000.fr:1:(2) 0.000145] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Recv
+> [griffon-70.nancy.grid5000.fr:1:(2) 0.000145] [smpi_bench/DEBUG] Handle real computation time: 762960000.000000 flops
+> [griffon-2.nancy.grid5000.fr:0:(1) 5.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Recv
+> [griffon-70.nancy.grid5000.fr:1:(2) 2666.881199] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Send
+> [griffon-70.nancy.grid5000.fr:1:(2) 2666.881199] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Send
+> [griffon-70.nancy.grid5000.fr:1:(2) 2666.881199] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Finalize
+> [griffon-70.nancy.grid5000.fr:1:(2) 2666.881199] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Finalize
+> [griffon-2.nancy.grid5000.fr:0:(1) 2666.881344] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Recv
+> [griffon-2.nancy.grid5000.fr:0:(1) 2666.881344] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Finalize
+> [griffon-2.nancy.grid5000.fr:0:(1) 2666.881344] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Finalize
+> 
+>     *** Ping-pong test (MPI_Send/MPI_Recv) ***
+> 
+> [0] About to send 1st message '99' to process [1]
+> [1] Received 1st message '99' from process [0]
+> [1] After a nap, increment message's value to  '100'
+> [1] About to send back message '100' to process [0]
+> [0] Received reply message '100' from process [1]
+
+
+p C++ interface (griffon.so) without hostfile: Simple pingpong test
+! output sort
+$ ${bindir:=.}/../../../smpi_script/bin/smpirun -map -platform ${libdir:=.}/libgriffon.so -np 2 ${bindir:=.}/smpi_simple-execute --log=smpi_config.thres:warning --log=xbt_cfg.thres:warning --cfg=smpi/simulate-computation:no --log=smpi_mpi.:verbose --log=smpi_bench.thresh:debug --log=no_loc
+> [rank 0] -> griffon-1.nancy.grid5000.fr
+> [rank 1] -> griffon-10.nancy.grid5000.fr
+> [griffon-1.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Init
+> [griffon-10.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Init
+> [griffon-1.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Init
+> [griffon-1.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Comm_size
+> [griffon-1.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Comm_size
+> [griffon-1.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Comm_rank
+> [griffon-1.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Comm_rank
+> [griffon-1.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Send
+> [griffon-10.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Init
+> [griffon-10.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Comm_size
+> [griffon-10.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Comm_size
+> [griffon-10.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Comm_rank
+> [griffon-10.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Comm_rank
+> [griffon-10.nancy.grid5000.fr:1:(2) 0.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Recv
+> [griffon-1.nancy.grid5000.fr:0:(1) 0.000000] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Send
+> [griffon-1.nancy.grid5000.fr:0:(1) 0.000000] [smpi_bench/DEBUG] Handle real computation time: 1430435.000000 flops
+> [griffon-10.nancy.grid5000.fr:1:(2) 0.000097] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Recv
+> [griffon-10.nancy.grid5000.fr:1:(2) 0.000097] [smpi_bench/DEBUG] Handle real computation time: 762960000.000000 flops
+> [griffon-1.nancy.grid5000.fr:0:(1) 5.000000] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Recv
+> [griffon-10.nancy.grid5000.fr:1:(2) 2666.881151] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Send
+> [griffon-10.nancy.grid5000.fr:1:(2) 2666.881151] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Send
+> [griffon-10.nancy.grid5000.fr:1:(2) 2666.881151] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Finalize
+> [griffon-10.nancy.grid5000.fr:1:(2) 2666.881151] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Finalize
+> [griffon-1.nancy.grid5000.fr:0:(1) 2666.881247] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Recv
+> [griffon-1.nancy.grid5000.fr:0:(1) 2666.881247] [smpi_mpi/VERBOSE] SMPI - Entering MPI_Finalize
+> [griffon-1.nancy.grid5000.fr:0:(1) 2666.881247] [smpi_mpi/VERBOSE] SMPI - Leaving MPI_Finalize
+> 
+>     *** Ping-pong test (MPI_Send/MPI_Recv) ***
+> 
+> [0] About to send 1st message '99' to process [1]
+> [1] Received 1st message '99' from process [0]
+> [1] After a nap, increment message's value to  '100'
+> [1] About to send back message '100' to process [0]
+> [0] Received reply message '100' from process [1]
index 2810ed6..7a51791 100644 (file)
@@ -50,6 +50,7 @@ set(tesh_files    ${tesh_files}     ${CMAKE_CURRENT_SOURCE_DIR}/coll-allreduce/c
                                     ${CMAKE_CURRENT_SOURCE_DIR}/coll-allreduce/coll-allreduce-papi.tesh
                                     ${CMAKE_CURRENT_SOURCE_DIR}/coll-allreduce-with-leaks/mc-coll-allreduce-with-leaks.tesh
                                     ${CMAKE_CURRENT_SOURCE_DIR}/coll-alltoall/clusters.tesh
+                                    ${CMAKE_CURRENT_SOURCE_DIR}/coll-alltoall/griffon.tesh
                                     ${CMAKE_CURRENT_SOURCE_DIR}/pt2pt-pingpong/broken_hostfiles.tesh
                                     ${CMAKE_CURRENT_SOURCE_DIR}/pt2pt-pingpong/TI_output.tesh
                                     ${CMAKE_CURRENT_SOURCE_DIR}/fort_args/fort_args.tesh  PARENT_SCOPE)
index 9675b03..acdc654 100644 (file)
@@ -1152,6 +1152,7 @@ set(PLATFORMS_EXAMPLES
   examples/platforms/energy_cluster.xml
   examples/platforms/faulty_host.xml
   examples/platforms/g5k.xml
+  examples/platforms/griffon.cpp
   examples/platforms/griffon.xml
   examples/platforms/hosts_with_disks.xml
   examples/platforms/meta_cluster.xml