openfam::fam::fam_get_option
Get the value for a pre-defined option in the FAM library.
Synopsis
const void *fam_get_option(char *optionName);
Description
This method can be used to retrieve values of state variables
maintained within OpenFAM or set using the options argument to
fam_initialize(). The supported names (and returned types) are
implementation specific.
Input Arguments
| Name | Description |
|---|---|
| optionName | Name of the option to be retrieved. |
| Name | Description | Return type | Default Value |
|---|---|---|---|
| "VERSION" | Version of the current implementation of the OpenFAM API. | char* | "0.0.1" |
| "DEFAULT_REGION_NAME" | The default Region name used with in the program. | char* | "default" |
| "MEMORY_SERVER" | Memory server set by the application. | char* | "0:127.0.0.1" |
| "GRPC_PORT" | Grpc port used by memory server allocator. | char* | "8787" |
| "LIBFABRIC_PORT" | Port used for libfabric operations in memory server allocator | char* | "7500" |
| "LIBFABRIC_PROVIDER" | Libfabric provider type set by the application. | char* | "sockets" |
| "FAM_THREAD_MODEL" | Thread model used by the application. | char* | "FAM_THREAD_SERIALIZE" |
| "ALLOCATOR" | Allocator type used by the application. | char* | "grpc" |
| "FAM_CONTEXT_MODEL" | Fam context model used by the application. | char* | "FAM_CONTEXT_DEFAULT" |
| "PE_COUNT" | Number of PEs running the application program. | int* | 1 |
| "PE_ID" | PE id of the current program. | int* | 0 |
| "RUNTIME" | Runtime environment used by the application. | char* | "PMIX" |
| "NUM_CONSUMER" | Number of consumer threads running in shared memory allocator. | char* | "1" |
Note: The following options are not supported in current
implementation and should not be used. It return the default values.
"DEFAULT_REGION_NAME", "FAM_THREAD_MODEL" and "FAM_CONTEXT_MODEL"
Return Values
A pointer to the value of the option. Throws an exception on error.
Exceptions
Fam_InvaidOption_Exception if optionName not found.
Notes
None.
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 {
// assume that library version is one of the supported options
const char * libraryVersion = (const char *)myFam->fam_get_option(strdup("VERSION"));
printf("%s\n", libraryVersion);
} catch (Fam_Exception& e) {
printf("FAM API failed: %s\n", e.fam_error_msg());
myFam->fam_abort(-1); // abort the program
return -1;
}
// ... finalization code here
}