int main(int argc, char** argv){ #ifdef MPI MPI_Init(&argc, &argv); #endif int power; init_msr(); struct rapl_data r[NUM_SOCKETS]; int socket; for(socket=0; socket<NUM_SOCKETS; socket++) r[socket].flags = RDF_REENTRANT | RDF_INIT; // Initialize r for(socket=0; socket<NUM_SOCKETS; socket++) read_rapl_data(socket, &r[socket]); sleep(1); perform_rapl_measurement(r); for(power=5; power<150; power+=10) { rapl_set_test(power); sleep(10); perform_rapl_measurement(r); } finalize_msr(); #ifdef MPI MPI_Finalize(); #endif return 0; }
int poll_rapl_data(void) { static struct rapl_data *rapl = NULL; #ifdef LIBMSR_DEBUG fprintf(stderr, "%s %s::%d DEBUG: (poll_rapl_data) socket=%lu\n", getenv("HOSTNAME"), __FILE__, __LINE__, num_sockets()); #endif if (rapl == NULL) { if (rapl_storage(&rapl, NULL)) { return -1; } } if (rapl == NULL) { libmsr_error_handler("poll_rapl_data(): RAPL init failed or has not yet been called", LIBMSR_ERROR_RAPL_INIT, getenv("HOSTNAME"), __FILE__, __LINE__); return -1; } read_rapl_data(); delta_rapl_data(); return 0; }
void perform_rapl_measurement(struct rapl_data* r) { int socket; for(socket=0; socket<NUM_SOCKETS; socket++) fprintf(stdout,"pkgW%02d\tpkgE%02d\tdramW%02d\tdramE%02d\telapsed%02d\t", socket, socket, socket, socket, socket ); fprintf(stdout, "\n"); for(socket=0; socket<NUM_SOCKETS; socket++) { r[socket].flags = RDF_REENTRANT; read_rapl_data(socket, &r[socket]); fprintf(stdout,"%8.6lf\t%8.6lf\t%8.6lf\t%8.6lf\t%8.6lf\t", r[socket].pkg_watts, r[socket].pkg_delta_joules, r[socket].dram_watts, r[socket].dram_delta_joules, r[socket].elapsed); } fprintf(stdout, "\n"); }
int dump_rapl_data_terse(FILE *writedest) { int socket; static struct rapl_data *rapl = NULL; static uint64_t *rapl_flags = NULL; static uint64_t sockets = 0; if (rapl == NULL || rapl_flags == NULL || sockets == 0) { sockets = num_sockets(); if (rapl_storage(&rapl, &rapl_flags)) { return -1; } } #ifdef LIBMSR_DEBUG fprintf(writedest, "%s %s::%d Writing terse label\n", getenv("HOSTNAME"), __FILE__, __LINE__); #endif read_rapl_data(); delta_rapl_data(); for (socket = 0; socket < sockets; socket++) { /* Check to see which registers are available. */ if (*rapl_flags & PKG_ENERGY_STATUS) { fprintf(writedest, "%8.4lf ", rapl->pkg_watts[socket]); } if (*rapl_flags & DRAM_ENERGY_STATUS) { fprintf(writedest, "%8.4lf ", rapl->dram_watts[socket]); } } return 0; }