int main() { int cpu_model = detect_cpu(); if (cpu_model < 0) { printf("Unsupported CPU type\n"); return -1; } int core0 = msr_open(0); int core1 = msr_open(1); PETU_t pet0 = msr_calculate_units(core0); PETU_t pet1 = msr_calculate_units(core1); PackagePowerInfo_t ppi0 = msr_get_package_power_info(core0, &pet0); PackagePowerInfo_t ppi1 = msr_get_package_power_info(core1, &pet1); printf("PP Core 0: %.3f %.3f\n", ppi0.minimum_power, ppi0.maximum_power); printf("PP Core 1: %.3f %.3f\n", ppi1.minimum_power, ppi1.maximum_power); printf("Computation begins\n"); double e0 = msr_get_package_energy(core0, &pet0); double e1 = msr_get_package_energy(core1, &pet1); computation(); e0 = msr_get_package_energy(core0, &pet0) - e0; e1 = msr_get_package_energy(core1, &pet1) - e1; printf("Computation ends\n"); printf("Energy consumed: Core 0: %.3fJ\n", e0); printf("Energy consumed: Core 1: %.3fJ\n", e1); return 0; }
TestPlatformImp::TestPlatformImp() : PlatformImp(2, 5, 8.0, &(test_msr_map())) { m_num_logical_cpu = NUM_CPU; m_num_hw_cpu = NUM_CPU; m_num_tile = NUM_TILE; m_num_package = NUM_PACKAGE; m_num_cpu_per_core = 1; for (off_t i = 0; (int)i < m_num_hw_cpu; i++) { msr_open(i); } //for negative tests m_cpu_file_desc.push_back(675); }
int main() { void *dev; int cnt; int i,j; //Registrieren msr_init(&rtp,NULL); msr_reg_rtw_param("/daten/p1(ll=\"1\" ul=\"2\")","gain","int",&p1,1,1,SS_INT32,var_SCALAR,sizeof(int)); msr_reg_rtw_param("/daten/p2(init=\"0.5\" ll=\"1\" ul=\"2\")","gain","double",&p2,1,1,SS_DOUBLE,var_SCALAR,sizeof(double)); msr_reg_rtw_param("/daten/p3(unit=\"s\")","gain","double",&p3,1,10,SS_DOUBLE,var_VECTOR,sizeof(double)); msr_reg_rtw_signal("/kanal/k1","","int",(void *)&rtp.k1 - (void *)&rtp,1,1,SS_INT32,var_SCALAR,sizeof(int)); msr_reg_rtw_signal("/kanal/k2","","int",(void *)&rtp.k2 - (void *)&rtp,1,1,SS_DOUBLE,var_SCALAR,sizeof(double)); msr_reg_rtw_signal("/kanal/k3","","int",(void *)&rtp.k3[0] - (void *)&rtp,1,5,SS_DOUBLE,var_VECTOR,sizeof(double)); msr_reg_enum_list("/Aufzaehlung","",&en[0],MSR_R |MSR_W,5,1,"Eins,Zwei,Drei",NULL,NULL); //Kanäle füllen for(i=0;i<1000;i++) { // printf("index %i\n",i); rtp.k1 = i; rtp.k2 = i*0.3; for(j=0;j<5;j++) rtp.k3[j] = j*i; msr_update(&rtp); } //Lesen dev = msr_open(STDIN_FILENO,STDOUT_FILENO); msr_read(dev); do { cnt = msr_write(dev); // printf("Write count: %i\n",cnt); } while(cnt>0); msr_close(dev); msr_cleanup(); return 0; }