Test description
Verifies that the partial Fence is properly working
Test sketch
#include "pmix.h"
double max_fence_time ()
{
double fence_time = 0 ;
int i ;
/* Measure the typical fence execution time */
for (i = 0 ; i < 100 ; i ++ ) {
ts1 = timestamp ();
PMIx_Fence (without_data_collection );
ts2 = timestamp ();
fence_time = max (fence_time , ts2 - ts1 );
}
return fence_time ;
}
int main ()
{
double timeout , fence_time ;
PMIx_Init ();
fence_time = max_fence_time ();
T = Ratio * fence_time ; // Ratio might be 100, should be selected for the particular system
if ( rank == 1 ){
sleep (T );
}
if ( rank % 2 ){
ts1 = timestamp ();
PMIx_Fence (without_data_collection , only - odd - procs );
ts2 = timestamp ();
// Odd ranks should not be affected by the rank = 1 delay
assert ( (t2 - t1 ) ~ fence_time );
}
ts1 = timestamp ();
PMIx_Fence (without_data_collection );
ts2 = timestamp ();
if (rank != 1 ) {
assert ( (t2 - t1 ) ~ T );
} else {
assert ( (t2 - t1 ) ~ fence_time );
}
PMIx_Finalize ();
}
Execution details
4 servers
16 clients
Predefined (passed through cmdline) namespace
Predefined process placement: "0:0,1,2,3; 1:4,5,6,7; 2:8,9,10,11; 3:12,13,14,15;"
Ratio and "~" are selected to match the system
The time-dependant checks can be turned off
Execute M times to capture race conditions
The first rank is simulating the delay. The test verifies that the Fence is really synchronizing;
Client-side expectations:
All PMIx calls return PMIX_SUCCESS
All ranks (except rank=0) experience Fence timeout.
Server-side expectations:
N invocations of:
client_connected
client_finalized
Verify, that proc structure was set to the individual ranks.
2 Fence callback invocation with WILDCARD.
Distance between Fence's on node0 is > T
Starting from "modex: avoid exchange unnecessary buffer when collect flag is not set openpmix#1135 " the size of Fence should be 0B.
No other callbacks are called (no direct modex requests)
(? Any event-related activity?)
Reference implementation:
TBD
Notes
The test suite's RTE component should implement the support for multiple in-flight Fence's.
Currently not supported.
Test description
Verifies that the partial Fence is properly working
Test sketch
Execution details
Client-side expectations:
Server-side expectations:
(? Any event-related activity?)
Reference implementation:
TBD
Notes
The test suite's RTE component should implement the support for multiple in-flight Fence's.
Currently not supported.