openfam::fam::fam_barrier_all
Suspends the execution of the calling PE until all other PEs issue a call to this particular fam_barrier_all() statement.
Synopsis
void fam_barrier_all(void);
Description
This method is used to suspend the execution of the calling PE until all other PEs issue
a call to a corresponding fam_barrier_all()
statement.
Input Arguments
None.
Return Values
None.
Notes
The OpenFAM library suspends the execution of calling PE until all other
cooperating PEs issue a call to this function. This call should be preceded by a fam_quiet()
if non-blocking calls are pending since it does not wait for pending non-blocking calls to complete.
Example
#include <string.h> #include <fam/fam.h> #include <fam/fam_exception.h> using namespace std; using namespace openfam; int main(void) { fam *myFam = new fam(); // ... Initialization code here try { Fam_Region_Descriptor *region = myFam->fam_lookup_region("myRegion"); // create 50 element unnamed integer array in FAM with 0600 // (read/write by owner) permissions in myRegion Fam_Descriptor *descriptor = myFam->fam_allocate((uint64_t)(50 * sizeof(int)), 0600, region); printf("Successfully allocated 50 unnamed integer elements\n"); } catch (Fam_Exception &e) { printf("fam API failed: %d: %s\n", e.fam_error(), e.fam_error_msg()); } // Wait for all PEs to complete allocation myFam->fam_barrier_all(); // Continue with the application try{ // free allocated space in FAM myFam->fam_deallocate(descriptor); printf("Successfully de-allocated 50 unnamed integer elements\n"); } catch (Fam_Exception &e) { printf("fam API failed: %d: %s\n", e.fam_error(), e.fam_error_msg()); } // ... Finalization code here }