Giter Club home page Giter Club logo

tests-uh's Introduction

/* *

  • Copyright (c) 2011 - 2015
  • University of Houston System and UT-Battelle.
  • Copyright (c) 2009 - 2015
  • Silicon Graphics International Corp. SHMEM is copyrighted
  • by Silicon Graphics International Corp. (SGI) The OpenSHMEM API
  • (shmem) is released by Open Source Software Solutions, Inc., under an
  • agreement with Silicon Graphics International Corp. (SGI).
  • All rights reserved.
  • Redistribution and use in source and binary forms, with or without
  • modification, are permitted provided that the following conditions
  • are met:
  • o Redistributions of source code must retain the above copyright notice,
  • this list of conditions and the following disclaimer.
  • o Redistributions in binary form must reproduce the above copyright
  • notice, this list of conditions and the following disclaimer in the
  • documentation and/or other materials provided with the distribution.
  • o Neither the name of the University of Houston System, and UT-Battelle
  • nor the names of its contributors may be used to endorse or promote
  • producs derived from this software without specific prior written
  • permission.
  • THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  • "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  • LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  • A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  • HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  • SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
  • TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  • PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  • LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  • NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  • SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

  1. This is the README for the tests-uh suite.

  2. Tests

The tests are divided into feature, and performance programs in the top-level directory.

2.1 Feature Tests

The following lists of tests can be found in the folder 'feature_tests' for both C and Fortran;

i. test_shmem_put_shmem_malloc , test_shmem_put_globals

This tests a. elemental put calls

C/C++ only: shmem_double_p, shmem_float_p, shmem_int_p, shmem_long_p, shmem_short_p

b. block put calls

C/C++ and Fortran: shmem_put32, shmem_put64, shmem_put128

C/C++ only: shmem_double_put, shmem_float_put, shmem_int_put, shmem_real_put

c. strided put calls

C/C++ and Fortran: shmem_iput32, shmem_iput64, shmem_iput128,

C/C++ only: shmem_double_iput, shmem_float_iput, shmem_int_iput, shmem_long_iput, shmem_short_iput

Fortran only: shmem_complex_iput, shmem_integer_iput, shmem_logical_iput, shmem_real_iput

d. byte-granularity block put calls

C/C++ and Fortran: shmem_putmem

Additional information:

Test test_shmem_put_shmem_malloc uses shmem_malloc-ed variables that are allocated and managed by the OpenSHMEM library while the test_shmem_put_globals checks that the same calls work with global variables.

ii. test_shmem_get_shmem_malloc, test_shmem_get_globals

This tests a. elemental get calls

C/C++ only: shmem_double_p, shmem_float_p, shmem_int_p, shmem_long_p, shmem_short_p

b. block get calls

C/C++ and Fortran: shmem_get32, shmem_get64, shmem_get128

C/C++ only: shmem_double_get, shmem_float_get, shmem_int_get, shmem_real_get

c. strided get calls

C/C++ and Fortran: shmem_iget32, shmem_iget64, shmem_iget128,

C/C++ only: shmem_double_iget, shmem_float_iget, shmem_int_iget, shmem_long_iget, shmem_short_iget

Fortran only: shmem_complex_iget, shmem_integer_iget, shmem_logical_iget, shmem_real_iget

d. byte-granularity block get calls

C/C++ and Fortran: shmem_getmem

Additional information:

Test test_shmem_get_shmem_malloc uses shmem_malloc-ed variables that are allocated and managed by the OpenSHMEM library while the test_shmem_get_globals checks that the same calls work with global variables.

iii. test_shmem_broadcast

This tests shmem_broadcast32, shmem_broadcast64 calls available for C/C++ and Fortran.

iv. test_shmem_reductions

This tests;

Fortran only: test_shmem_max_01_int8, test_shmem_min_01_real4, test_shmem_prod_01_int8, test_shmem_sum_01_real4, test_shmem_max_01_real4, test_shmem_min_01_real8, test_shmem_prod_01_real4, test_shmem_sum_01_real80, test_shmem_and_01_int4, test_shmem_max_01_real8, test_shmem_or_01_int4, test_shmem_prod_01_real8, test_shmem_xor_01_int4, test_shmem_and_01_int8, test_shmem_min_01_int4, test_shmem_or_01_int8, test_shmem_sum_01_int4, test_shmem_xor_01_int8, test_shmem_max_01_int4 test_shmem_min_01_int8, test_shmem_prod_01_int4, test_shmem_sum_01_int8,

v. test_shmem_atomic

This tests;

Fortran only: test_shmem_cswap_01_int4, test_shmem_finc_01_int8, test_shmem_inc_02_int4, test_shmem_swap_02_int8, test_shmem_cswap_01_int8, test_shmem_finc_02_int4, test_shmem_inc_02_int8, test_shmem_swap_03_int4, test_shmem_cswap_02_int4, test_shmem_finc_02_int8, test_shmem_inc_03_int4, test_shmem_swap_03_int8, test_shmem_add_01_int4, test_shmem_cswap_02_int8, test_shmem_finc_03_int4, test_shmem_inc_03_int8, test_shmem_swap_04_int4, test_shmem_add_01_int8, test_shmem_cswap_03_int4, test_shmem_finc_03_int8, test_shmem_inc_04_int4, test_shmem_swap_04_int8, test_shmem_add_02_int4, test_shmem_cswap_03_int8, test_shmem_finc_04_int4, test_shmem_inc_04_int8, test_shmem_swap_05_int4, test_shmem_add_02_int8, test_shmem_cswap_04_int4, test_shmem_finc_04_int8, test_shmem_inc_05_int4, test_shmem_swap_05_int8, test_shmem_add_03_int4, test_shmem_cswap_04_int8, test_shmem_finc_05_int4, test_shmem_inc_05_int8, test_shmem_add_03_int8, test_shmem_fadd_01_int4, test_shmem_finc_05_int8, test_shmem_swap_01_int4, test_shmem_add_04_int4, test_shmem_fadd_01_int8, test_shmem_inc_01_int4, test_shmem_swap_01_int8, test_shmem_add_04_int8, test_shmem_finc_01_int4, test_shmem_inc_01_int8, test_shmem_swap_02_int4,

vi. test_shmem_synchronization

This tests;

C/C++ only: shmem_int_wait, shmem_int_wait_until, shmem_long_wait, shmem_long_wait_until, shmem_longlong_wait, shmem_longlong_wait_until, shmem_short_wait, shmem_short_wait_until

Fortran only: shmem_int4_wait, shmem_int4_wait_until, shmem_int8_wait, shmem_int8_wait_until

Additional information:

Correct output for this test also depends on a reliable implementation of the shmem_long_put and shmem_long_wait OpenSHMEM calls.

vii. test_shmem_accessible This tests; Fortran: test_shmem_acc_mem_01_real8, test_shmem_acc_mem_03_int4, test_shmem_acc_mem_04_real4, test_shmem_acc_mem_02_char, test_shmem_acc_mem_03_int8, test_shmem_acc_mem_04_real8, test_shmem_acc_01, test_shmem_acc_mem_02_double,test_shmem_acc_mem_03_logical, test_shmem_acc_mem_05_char, test_shmem_acc_02, test_shmem_acc_mem_02_int4, test_shmem_acc_mem_03_real4, test_shmem_acc_mem_05_double, test_shmem_acc_mem_01_char, test_shmem_acc_mem_02_int8, test_shmem_acc_mem_03_real8, test_shmem_acc_mem_05_int4, test_shmem_acc_mem_01_double, test_shmem_acc_mem_02_logical, test_shmem_acc_mem_04_char, test_shmem_acc_mem_05_int8, test_shmem_acc_mem_01_int4, test_shmem_acc_mem_02_real4, test_shmem_acc_mem_04_double, test_shmem_acc_mem_05_logical, test_shmem_acc_mem_01_int8, test_shmem_acc_mem_02_real8, test_shmem_acc_mem_04_int4, test_shmem_acc_mem_05_real4, test_shmem_acc_mem_01_logical, test_shmem_acc_mem_03_char, test_shmem_acc_mem_04_int8, test_shmem_acc_mem_05_real8, test_shmem_acc_mem_01_real4, test_shmem_acc_mem_03_double, test_shmem_acc_mem_04_logical,

viii. test_shmem_collects
This tests; Fortran only: test_shmem_collect_02_int8, test_shmem_fcollect_01_int4, test_shmem_fcollect_03_int8, test_shmem_collect_03_int4, test_shmem_fcollect_01_int8, test_shmem_fcollect_04_int4, test_shmem_collect_01_int4, test_shmem_collect_03_int8, test_shmem_fcollect_02_int4, test_shmem_fcollect_04_int8, test_shmem_collect_01_int8, test_shmem_collect_04_int4, test_shmem_fcollect_02_int8, test_shmem_collect_02_int4, test_shmem_collect_04_int8, test_shmem_fcollect_03_int4,

ix. test_shmem_lock

This tests;

C/C++ and Fortran: shmem_clear_lock, shmem_set_lock, shmem_test_lock

Additional information:

Correct output for this test also depends on a reliable implementation of the shmem_quiet OpenSHMEM calls.

2.2 Performance Tests

2.2.1 Micro-benchmarks

The Micro-benchmark directory contains programs to measure latency of data transfer calls and collective calls in OpenSHMEM. Performance tests measure the time taken for a OpenSHMEM call by finding the average over 10000 calls.

i. put_performance ii. get_performance iii. broadcast_performance
iv. barrier_performance
v. collects_performance

  1. Running Tests

Edit the Makefile or export values, such that they use the appropriate compiler, (SHMEM_FLAGS), run command (RUNCMD), run options (RUNOPT), command line options to control execution environment (NPROCOPT), NPROC (this parameter decides the number of PEs, default value is 2). To compile use 'make all' and to execute use 'make run'.

  1. Expected Results and their interpretation

Example: Feature test for atomic operations Execute: make run Expected Result: (test_001) Running test_shmem_swap_01_int4.x: shmem_swap with SAVE variables... OK (test_002) Running test_shmem_swap_01_int8.x: shmem_swap with SAVE variables... OK (test_003) Running test_shmem_swap_02_int4.x: shmem_swap with COMMON variables... OK (test_004) Running test_shmem_swap_02_int8.x: shmem_swap with COMMON variables... OK (test_005) Running test_shmem_swap_03_int4.x: shmem_swap with shpalloc'ed variables... OK (test_006) Running test_shmem_swap_03_int8.x: shmem_swap with shpalloc'ed variables... OK (test_007) Running test_shmem_swap_04_int4.x: shmem_swap with non remotely accessible variables... OK (test_008) Running test_shmem_swap_04_int8.x: shmem_swap with non remotely accessible variables... OK (test_009) Running test_shmem_swap_05_int4.x: shmem_swap with non remotely accessible variables (ALLOCATABLE)... OK (test_010) Running test_shmem_swap_05_int8.x: shmem_swap with non remotely accessible variables (ALLOCATABLE)... OK (test_011) Running test_shmem_cswap_01_int4.x: shmem_cswap with SAVE variables... OK (test_012) Running test_shmem_cswap_01_int8.x: shmem_cswap with SAVE variables... OK (test_013) Running test_shmem_cswap_02_int4.x: shmem_cswap with COMMON variables... OK (test_014) Running test_shmem_cswap_02_int8.x: shmem_cswap with COMMON variables... OK (test_015) Running test_shmem_cswap_03_int4.x: shmem_cswap with shpalloc'ed variables... OK (test_016) Running test_shmem_cswap_03_int8.x: shmem_cswap with shpalloc'ed variables... OK (test_017) Running test_shmem_cswap_04_int4.x: shmem_cswap with non remotely accessible variables... OK (test_018) Running test_shmem_cswap_04_int8.x: shmem_cswap with non remotely accessible variables... OK (test_019) Running test_shmem_add_01_int4.x: shmem_add with SAVE variables... OK (test_020) Running test_shmem_add_01_int8.x: shmem_add with SAVE variables... OK (test_021) Running test_shmem_add_02_int4.x: shmem_add with COMMON variables... OK (test_022) Running test_shmem_add_02_int8.x: shmem_add with COMMON variables... OK (test_023) Running test_shmem_add_03_int4.x: shmem_add with shpalloc'ed variables... OK (test_024) Running test_shmem_add_03_int8.x: shmem_add with shpalloc'ed variables... OK (test_025) Running test_shmem_add_04_int4.x: shmem_add with non remotely accessible variables... OK (test_026) Running test_shmem_add_04_int8.x: shmem_add with non remotely accessible variables... OK (test_027) Running test_shmem_fadd_01_int4.x: shmem_fadd with SAVE variables... OK (test_028) Running test_shmem_fadd_01_int8.x: shmem_fadd with SAVE variables... OK (test_029) Running test_shmem_inc_01_int4.x: shmem_inc with SAVE variables... OK (test_030) Running test_shmem_inc_01_int8.x: shmem_inc with SAVE variables... OK (test_031) Running test_shmem_inc_02_int4.x: shmem_inc with COMMON variables... OK (test_032) Running test_shmem_inc_02_int8.x: shmem_inc with COMMON variables... OK (test_033) Running test_shmem_inc_03_int4.x: shmem_inc with shpalloc'ed variables... OK (test_034) Running test_shmem_inc_03_int8.x: shmem_inc with shpalloc'ed variables... OK (test_035) Running test_shmem_inc_04_int4.x: shmem_inc with non remotely accessible variables... OK (test_036) Running test_shmem_inc_04_int8.x: shmem_inc with non remotely accessible variables... OK (test_037) Running test_shmem_inc_05_int4.x: shmem_inc with non remotely accessible variables (ALLOCATABLE)... OK (test_038) Running test_shmem_inc_05_int8.x: shmem_inc with non remotely accessible variables (ALLOCATABLE)... OK (test_039) Running test_shmem_finc_01_int4.x: shmem_finc with SAVE variables... OK (test_040) Running test_shmem_finc_01_int8.x: shmem_finc with SAVE variables... OK (test_041) Running test_shmem_finc_02_int4.x: shmem_finc with COMMON variables... OK (test_042) Running test_shmem_finc_02_int8.x: shmem_finc with COMMON variables... OK (test_043) Running test_shmem_finc_02_int4.x: shmem_finc with COMMON variables... OK (test_044) Running test_shmem_finc_02_int8.x: shmem_finc with COMMON variables... OK (test_045) Running test_shmem_finc_03_int4.x: shmem_finc with shpalloc'ed variables... OK (test_046) Running test_shmem_finc_03_int8.x: shmem_finc with shpalloc'ed variables... OK (test_047) Running test_shmem_finc_04_int4.x: shmem_finc with non remotely accessible variables... OK (test_048) Running test_shmem_finc_04_int8.x: shmem_finc with non remotely accessible variables... OK (test_049) Running test_shmem_finc_05_int4.x: shmem_finc with non remotely accessible variables (ALLOCATABLE)... OK (test_050) Running test_shmem_finc_05_int8.x: shmem_finc with non remotely accessible variables (ALLOCATABLE)... OK

Done testing. Summary:

  • 50/50 Passed.
  • 0/50 Failed.

If the test says 'Passed' then the routines that are being tested behave in accordance with OpenSHMEM Specification 1.2 and the result produced (if applicable) is correct.

tests-uh's People

Contributors

anilkumarnandamuri avatar dkhaldi avatar intijk avatar rohithjidagam avatar sidjana avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.