OpenFAM Reference Implementation

openfam::fam::fam_size

Get the size of a region or data item.

Synopsis

uint64_t fam_size(Fam_Descriptor *descriptor);

uint64_t fam_size(Fam_Region_Descriptor *descriptor);

Description

These methods return the size associated with the data item or region descriptor.

Input Arguments

NameDescription
descriptorDescriptor associated with the region or the data item.

Return Values

Returns the size associated with region or the data item descriptor on success. Throws an exception on error.

Fam Error Numbers

ErrorDescription
FAM_ERR_NOPERMCaller does not have access rights
FAM_ERR_NOTFOUNDthe data item name not found in FAM
FAM_ERR_GRPCthere is a communication error with memory server
FAM_ERR_RPC_CLIENT_NOTFOUNDMemory server initialization failure

Example

#include <stdlib.h>
#include <stdio.h>
#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 {
		// get a region descriptor from the metadata service
		Fam_Region_Descriptor *region = myFam->fam_lookup_region("myRegion");
		
		// Get region size
		uint64_t region_size = myFam->fam_size(region);
		printf("Region_size: %d\n", region_size);
		
		// Get a descriptor (created by another PE) via the metadata service
		Fam_Descriptor *arrayDescriptor = myFam->fam_lookup("myArray", "myOtherRegion");
		
		// Get data item size
		uint64_t data_size = myFam->fam_size(arrayDescriptor);
		printf("array_size: %d\n", data_size);
		
	} catch (Fam_Exception &e) {
		printf("Fam API failed: %d: %s\n", e.fam_error(), e.fam_error_msg());
	}
		
	// ... continuation code here
}