|
PAPI
5.0.1.0
|
Convert a standard event set to a multiplexed event set. More...
| EventSet | an integer handle for a PAPI event set as created by PAPI_create_eventset |
| PAPI_OK | |
| PAPI_EINVAL | -- One or more of the arguments is invalid, or the EventSet is already multiplexed. |
| PAPI_ENOCMP | -- The EventSet specified is not yet bound to a component. |
| PAPI_ENOEVST | -- The EventSet specified does not exist. |
| PAPI_EISRUN | -- The EventSet is currently counting events. |
| PAPI_ENOMEM | -- Insufficient memory to complete the operation. |
PAPI_set_multiplex converts a standard PAPI event set created by a call to PAPI_create_eventset into an event set capable of handling multiplexed events. This must be done after calling PAPI_multiplex_init, and either PAPI_add_event or PAPI_assign_eventset_component, but prior to calling PAPI_start().
Events can be added to an event set either before or after converting it into a multiplexed set, but the conversion must be done prior to using it as a multiplexed set.
int EventSet = PAPI_NULL; int ret; // Create an empty EventSet ret = PAPI_create_eventset(&EventSet); if (ret != PAPI_OK) handle_error(ret); // Bind it to the CPU component ret = PAPI_assign_eventset_component(EventSet, 0); if (ret != PAPI_OK) handle_error(ret); // Check current multiplex status ret = PAPI_get_multiplex(EventSet); if (ret == TRUE) printf("This event set is ready for multiplexing\n.") if (ret == FALSE) printf("This event set is not enabled for multiplexing\n.") if (ret < 0) handle_error(ret); // Turn on multiplexing ret = PAPI_set_multiplex(EventSet); if ((ret == PAPI_EINVAL) && (PAPI_get_multiplex(EventSet) == TRUE)) printf("This event set already has multiplexing enabled\n"); else if (ret != PAPI_OK) handle_error(ret);