Skip to content

uhhpctools/pgas-microbench

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 

Repository files navigation

------------------------------------
PGAS Microbenchmark Suite
------------------------------------

HPCTools Group
University of Houston


The PGAS Microbenchmark Suite contains a set of microbenchmarks for various
PGAS libraries and languages, as well as MPI for comparison purposes.  All the latency and
bandwidth tests use communicating pairs. Therefore, these tests require an
even number of processes to be launched.

For N processes, the communicating pairs by default are:

  {i, N/2+i}, for i = 0 .. N/2-1

The user may also optionally specify a partner offset argument on the
command line to control which processes communication with eachother for the
point-to-point microbenchmark tests. For example, for running the GASNet tests
with N processes and a partner offset of Q:

  gasnetrun_ibv -n N ./gasnet_tests Q

the communicating pairs would be:

  {i, i+Q}, for i in [0, N/2-1] where i mod 2*Q <  Q
  {i-Q, i}, for i in [0, N/2-1] where i mod 2*Q >= Q


Also included, for some models, are reduction tests. These involve all
processes in a sum-to-all reduction. This is currently available for CAF,
SHMEM, GASNet, and MPI.


=====================
DESCRIPTION OF TESTS
=====================

-----------------------------------------------
Put-Get Latency Test:

PUT small message to target address and then GET from target address N times.

Latency = (t2 - t1) / N

-----------------------------------------------

Put-Put Latency Test:

PUT small message to target address, synchronize with target, and then wait
for partner to do the same to me. Do this N times.

Latency = (t2 - t1) / N

-----------------------------------------------

Get-Get Latency Test:

GET small message to target address, synchronize with target, and then wait
for partner to do the same to me. Do this N times.

Latency = (t2 - t1) / N

----------------------------------------------

PUT Bandwidth Test:

PUT M-sized message N times.

Bandwidth =  M*N / (t2 - t1)

-----------------------------------------------

GET Bandwidth Test

GET M-sized message N times.

Bandwidth = M*N / (t2 - t1)

-----------------------------------------------

PUT Bidirectional Bandwidth Test:

Pair of processes PUT M-sized message N times to eachother.

Bandwidth = M*N / (t2 - t1)    (take average)

-----------------------------------------------

GET Bidirectional Bandwidth Test:

Pair of processes GET M-sized message N times to eachother.

Bandwidth = M*N / (t2 - t1)    (take average)

-----------------------------------------------

Strided PUT Bandwidth Test:

PUT fixed-sized (size M) message to target with stride S, N times

Bandwidth =  M*N / (t2 - t1)

-----------------------------------------------

Strided GET Bandwidth Test:

GET fixed-sized (size M) message from target with stride S, N times

Bandwidth =  M*N / (t2 - t1)

-----------------------------------------------

Random Put Bandwidth Test:

PUT message of size M to random address at random target N times.

Bandwidth = M*N / (t2 - t1)

-----------------------------------------------

Random Get Bandwidth Test:

GET message of size M from random address at random target N times.

Bandwidth = M*N / (t2 - t1)

-----------------------------------------------

Reduction Test:

- Reduction message of size M to non-overlapping target, N times

- Reduction message of size M to same src buffer, N times

About

PGAS Microbenchmarks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published