Index of /dist-ex/tests

[ICO]NameLast modifiedSize

[PARENTDIR]Parent Directory  -
[DIR]harness/2024-05-23 16:28 -
[   ]Makefile.in2024-05-23 16:26 23K
[TXT]README2024-05-23 16:26 3.3K
[TXT]delay.c2024-05-23 16:26 929
[TXT]test.h2024-05-23 16:26 55K
[TXT]testacc.c2024-05-23 16:26 3.4K
[TXT]testalign.c2024-05-23 16:26 9.7K
[TXT]testalltoall.c2024-05-23 16:26 9.8K
[TXT]testam.c2024-05-23 16:26 36K
[TXT]testbarrier.c2024-05-23 16:26 7.9K
[TXT]testbarrierconf.c2024-05-23 16:26 17K
[TXT]testbarrierlate.c2024-05-23 16:26 6.8K
[TXT]testcoll.c2024-05-23 16:26 27K
[TXT]testcollperf.c2024-05-23 16:26 29K
[TXT]testcontend.c2024-05-23 16:26 20K
[TXT]testcore1.c2024-05-23 16:26 6.3K
[TXT]testcore2.c2024-05-23 16:26 27K
[TXT]testcore3.c2024-05-23 16:26 4.5K
[TXT]testcore4.c2024-05-23 16:26 12K
[TXT]testcore5.c2024-05-23 16:26 12K
[TXT]testcudauva.c2024-05-23 16:26 13K
[TXT]testcxx.cc2024-05-23 16:26 357
[TXT]testenv.c2024-05-23 16:26 2.3K
[TXT]testexit.c2024-05-23 16:26 15K
[TXT]testfaddperf.c2024-05-23 16:26 13K
[TXT]testgasnet.c2024-05-23 16:26 72K
[TXT]testhello.c2024-05-23 16:26 2.2K
[TXT]testhip.c2024-05-23 16:26 12K
[TXT]testhsl.c2024-05-23 16:26 6.6K
[TXT]testimm.c2024-05-23 16:26 14K
[TXT]testinternal.c2024-05-23 16:26 2.1K
[TXT]testlarge.c2024-05-23 16:26 23K
[TXT]testlegacy.c2024-05-23 16:26 31K
[TXT]testlegacycxx.cc2024-05-23 16:26 376
[TXT]testlockcontend.c2024-05-23 16:26 6.7K
[TXT]testlogGP.c2024-05-23 16:26 10K
[TXT]testmisc.c2024-05-23 16:26 22K
[TXT]testmpi.c2024-05-23 16:26 13K
[TXT]testnbr.c2024-05-23 16:26 35K
[TXT]testprogthr.c2024-05-23 16:26 5.0K
[TXT]testqueue.c2024-05-23 16:26 22K
[TXT]testrand.c2024-05-23 16:26 4.0K
[TXT]testratomic.c2024-05-23 16:26 46K
[TXT]testreadonly.c2024-05-23 16:26 4.8K
[TXT]testreduce.c2024-05-23 16:26 19K
[TXT]testsegment.c2024-05-23 16:26 14K
[TXT]testslice.c2024-05-23 16:26 8.5K
[TXT]testsmall.c2024-05-23 16:26 24K
[TXT]testsplit.c2024-05-23 16:26 13K
[TXT]testteam.c2024-05-23 16:26 3.3K
[TXT]testteambarrier.c2024-05-23 16:26 4.2K
[TXT]testteambcast.c2024-05-23 16:26 6.5K
[TXT]testthreads.c2024-05-23 16:26 22K
[TXT]testtmpair.c2024-05-23 16:26 19K
[TXT]testtoken.c2024-05-23 16:26 8.5K
[TXT]testtools.c2024-05-23 16:26 70K
[TXT]testtoolscxx.cc2024-05-23 16:26 266
[TXT]testval.c2024-05-23 16:26 13K
[TXT]testvis.c2024-05-23 16:26 78K
[TXT]testvisperf.c2024-05-23 16:26 22K
[TXT]testze.c2024-05-23 16:26 11K
[TXT]zekind.h2024-05-23 16:26 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