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;
}
Beispiel #2
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;
}