Index of /dist-ex/tests

[ICO]NameLast modifiedSize

[PARENTDIR]Parent Directory  -
[DIR]harness/2023-12-15 14:10 -
[   ]Makefile.in2023-12-15 14:09 23K
[TXT]README2023-12-15 14:09 3.3K
[TXT]delay.c2023-12-15 14:09 929
[TXT]test.h2023-12-15 14:09 55K
[TXT]testacc.c2023-12-15 14:09 3.4K
[TXT]testalign.c2023-12-15 14:09 9.7K
[TXT]testalltoall.c2023-12-15 14:09 9.4K
[TXT]testam.c2023-12-15 14:09 36K
[TXT]testbarrier.c2023-12-15 14:09 7.9K
[TXT]testbarrierconf.c2023-12-15 14:09 17K
[TXT]testbarrierlate.c2023-12-15 14:09 6.8K
[TXT]testcoll.c2023-12-15 14:09 27K
[TXT]testcollperf.c2023-12-15 14:09 29K
[TXT]testcontend.c2023-12-15 14:09 20K
[TXT]testcore1.c2023-12-15 14:09 6.3K
[TXT]testcore2.c2023-12-15 14:09 27K
[TXT]testcore3.c2023-12-15 14:09 3.6K
[TXT]testcore4.c2023-12-15 14:09 12K
[TXT]testcore5.c2023-12-15 14:09 12K
[TXT]testcudauva.c2023-12-15 14:09 13K
[TXT]testcxx.cc2023-12-15 14:09 357
[TXT]testenv.c2023-12-15 14:09 2.3K
[TXT]testexit.c2023-12-15 14:09 15K
[TXT]testfaddperf.c2023-12-15 14:09 13K
[TXT]testgasnet.c2023-12-15 14:09 71K
[TXT]testhello.c2023-12-15 14:09 2.2K
[TXT]testhip.c2023-12-15 14:09 12K
[TXT]testhsl.c2023-12-15 14:09 6.6K
[TXT]testimm.c2023-12-15 14:09 14K
[TXT]testinternal.c2023-12-15 14:09 2.1K
[TXT]testlarge.c2023-12-15 14:09 23K
[TXT]testlegacy.c2023-12-15 14:09 31K
[TXT]testlegacycxx.cc2023-12-15 14:09 376
[TXT]testlockcontend.c2023-12-15 14:09 6.7K
[TXT]testlogGP.c2023-12-15 14:09 10K
[TXT]testmisc.c2023-12-15 14:09 22K
[TXT]testmpi.c2023-12-15 14:09 13K
[TXT]testnbr.c2023-12-15 14:09 35K
[TXT]testqueue.c2023-12-15 14:09 22K
[TXT]testrand.c2023-12-15 14:09 4.0K
[TXT]testratomic.c2023-12-15 14:09 46K
[TXT]testreadonly.c2023-12-15 14:09 4.8K
[TXT]testreduce.c2023-12-15 14:09 19K
[TXT]testsegment.c2023-12-15 14:09 14K
[TXT]testslice.c2023-12-15 14:09 8.5K
[TXT]testsmall.c2023-12-15 14:09 24K
[TXT]testsplit.c2023-12-15 14:09 13K
[TXT]testteam.c2023-12-15 14:09 3.3K
[TXT]testteambarrier.c2023-12-15 14:09 4.2K
[TXT]testteambcast.c2023-12-15 14:09 6.5K
[TXT]testthreads.c2023-12-15 14:09 22K
[TXT]testtmpair.c2023-12-15 14:09 19K
[TXT]testtoken.c2023-12-15 14:09 8.5K
[TXT]testtools.c2023-12-15 14:09 70K
[TXT]testtoolscxx.cc2023-12-15 14:09 266
[TXT]testval.c2023-12-15 14:09 13K
[TXT]testvis.c2023-12-15 14:09 78K
[TXT]testvisperf.c2023-12-15 14:09 22K
[TXT]testze.c2023-12-15 14:09 11K
[TXT]zekind.h2023-12-15 14:09 2.4K

This directory contains correctness tests and performance microbenchmarks for
GASNet. For convenience, the mpi directory also contains some comparable MPI
performance microbenchmarks, some contributed from outside sources.

See the top-level GASNet README for information on running all the tests using
the GASNet Makefile-based test harness.  
See comments at the top of each file for test description, and run any test with
--help to see usage information for individual tests.


Coding standards for GASNet tests:
---------------------------------
All GASNet test code must adhere to the following coding standards:

* All of the general linguistic coding standards listed in the top-level GASNet README-devel

* Tests should only use public GASNet interfaces (ie prefixed with gasnet_ or gasnett_).
Tests must never invoke gasneti_, gasnetc_ or gasnete_ interfaces - this ensures test
portability across GASNet conduits and GASNet implementations. Any tests of GASNet 
internal functionality belong in ../gasnet_diagnostic.c, where they will be invoked 
by testinternal.

* test.h contains numerous tools which capture common idioms for GASNet test
code. Test authors should be familiar with the services provided by this
header and use them rather than re-implementing ad-hoc solutions. 

Specifically:

 - All tests must invoke test_init immediately after attach to register usage info
   and init the framework. Failures in argument parsing should call test_usage().
   
 - Tests needing segment space should use TEST_SEGSZ_REQUEST and TEST_SEG instead 
   of gasnet_getSegmentInfo, as the former handles SEGMENT_EVERYTHING correctly

 - Barriers should be written as BARRIER(), unless there's a reason to directly
   invoke the GASNet barrier functions (like testing barrier correctness)

 - Threaded barriers should use PTHREAD_BARRIER(numthreads) or PTHREAD_LOCALBARRIER(numthreads)

 - Non-fatal errors should issue a message using ERR("msg",...) (works just like printf)

 - Fatal errors should be written as FATALERR("msg",...) (works just like gasnett_fatalerror)

 - Informational messages should use MSG("msg",...) instead of printf,
   or MSG0("msg",...) if the message is collective and should only be issued by node 0

 - Allocation should use test_malloc, test_calloc, test_free

 - Calls to the core API should be surrounded with GASNET_Safe()

 - Pthread creation should be done using test_createandjoin_pthreads

 - Timing should be done with TIME() or gasnett_ticks_now() (latter provides ns granularity) 

 - Tests needing random numbers should use TEST_RAND and friends, and should
   include an optional seed argument that is passed to TEST_SRAND

 - Tests with many optional parts should use the TEST_SECTION* interface

 - Tests needing a computational delay should use test_delay

In all cases, see existing tests for examples of correct usage.

* All else being equal, when writing new test code it's usually preferable to
expand an existing test with related functionality rather than creating a
whole new test, unless one is testing a truly novel aspect of functionality or
performance. This helps to reduce build time and nightly test cost for the tests.

* New tests should be added to tests/Makefile.in (with appropriate arguments, if necessary)
and also to tests/harness/gasnet-tests/harness.conf