Exemplo n.º 1
0
int pm_cgi (HTTP_INFO *info){

	int i;
	tPM *conf;
	tPM temp;
	int ret = 0;

	conf = &sPm;

	memcpy (&temp, conf, sizeof (temp));

	for (i = 0; i < info->argc; i ++) {
		char *ptr = info->argv[i];

		//VOLTAGE
		if (strncmp (ptr, "PM_L1_VOLTAGE=", 14) == 0)
			temp.sLines[0].voltage = atol (ptr + 14);
		else if (strncmp (ptr, "PM_L2_VOLTAGE=", 14) == 0)
			temp.sLines[1].voltage = atol (ptr + 14);
		else if (strncmp (ptr, "PM_L3_VOLTAGE=", 14) == 0)
			temp.sLines[2].voltage = atol (ptr + 14);

		//CURRENT
		else if (strncmp (ptr, "PM_L1_CURRENT=", 14) == 0)
			temp.sLines[0].current = atol (ptr + 14);
		else if (strncmp (ptr, "PM_L2_CURRENT=", 14) == 0)
			temp.sLines[1].current = atol (ptr + 14);
		else if (strncmp (ptr, "PM_L3_CURRENT=", 14) == 0)
			temp.sLines[2].current = atol (ptr + 14);

		//POWER
		else if (strncmp (ptr, "PM_L1_POWER=", 12) == 0)
			temp.sLines[0].power = atol (ptr + 12);
		else if (strncmp (ptr, "PM_L2_POWER=", 12) == 0)
			temp.sLines[1].power = atol (ptr + 12);
		else if (strncmp (ptr, "PM_L3_POWER=", 12) == 0)
			temp.sLines[2].power = atol (ptr + 12);

		//ENERGY
		else if (strncmp (ptr, "PM_L1_ENERGY=", 13) == 0)
			temp.sLines[0].energy = atol (ptr + 13);
		else if (strncmp (ptr, "PM_L1_ENERGY=", 13) == 0)
			temp.sLines[1].energy = atol (ptr + 13);
		else if (strncmp (ptr, "PM_L1_ENERGY=", 13) == 0)
			temp.sLines[2].energy = atol (ptr + 13);
	}

	if (ret == 0) {
		if (memcmp (conf, &temp, sizeof (temp)) != 0) {
			if (pm_write_config (&temp) == 0) {
				memcpy (conf, &temp, sizeof (temp));
                pm_stop();
                pm_start();
            }
		}
	}

	return ret;
}
Exemplo n.º 2
0
int user_stop (void)
{
//	terminate_process (httpd_pidfile, 0);

	sys_stop ();
	net_stop ();
	io_stop ();
	pm_stop ();

	return 0;
}
Exemplo n.º 3
0
int pm_start (void){

	pm_stop ();

	//nastaveni pocatecnich hodnot
	pm_default_config (&sPm);

	//precteni hodnot ze souboru a jejich nastaveni
	pm_read_config (&sPm);

	return 0;
}
Exemplo n.º 4
0
void do_profiling(const int *sizes, const size_t count)
{
  const int repetitions = 50;
  const int size_field_width = 5;
  const int result_field_width = 15;

  const plan_constructor_t plan_constructors[] =
  {
    interpolate_plan_3d_naive_interleaved,
    interpolate_plan_3d_padding_aware_interleaved,
    interpolate_plan_3d_phase_shift_interleaved,
  };

  const papi_event_t counters[] =
  {
    PAPI_TOT_CYC,
    PAPI_L3_TCM,
    PAPI_DP_OPS
  };

  const size_t num_plan_constructors = sizeof(plan_constructors)/sizeof(plan_constructors[0]);
  const size_t num_counters = sizeof(counters)/sizeof(counters[0]);

  printf("%*s", size_field_width, "");
  for(size_t constructor_index = 0; constructor_index < num_plan_constructors; ++constructor_index)
  {
    interpolate_plan plan = plan_constructors[constructor_index](1, 1, 1, 0);
    assert(plan != NULL);
    printf("%*s", (int) (result_field_width * num_counters), interpolate_get_name(plan));
    interpolate_destroy_plan(plan);
  }
  printf("\n");

  printf("%*s", size_field_width, "");
  for(size_t constructor_index = 0; constructor_index < num_plan_constructors; ++constructor_index)
  {
    char name[PAPI_MAX_STR_LEN];
    for(size_t i=0; i < num_counters; ++i)
    {
      PAPI_CHECK(PAPI_event_code_to_name(counters[i], name));
      printf("%*s", result_field_width, name);
    }
  }
  printf("\n");

  for(size_t size_index = 0; size_index < count; ++size_index)
  {
    const int layout = INTERLEAVED;
    const size_t size = sizes[size_index];
    const size_t block_size = size * size * size;
    storage_t coarse, fine;

    storage_allocate(&coarse, layout, block_size);
    storage_allocate(&fine, layout, 8 * block_size);

    printf("%5zd", size);

    for(size_t constructor_index = 0; constructor_index < num_plan_constructors; ++constructor_index)
    {
      interpolate_plan plan = plan_constructors[constructor_index](size, size, size, 0);
      assert(plan != NULL);

      papi_multiplex_t multiplex;
      PAPI_CHECK(pm_init(&multiplex));

      for(size_t i=0; i < num_counters; ++i)
        PAPI_CHECK(pm_add_event(&multiplex, counters[i]));

      for(int repetition = 0; repetition < repetitions; ++repetition)
      {
        PAPI_CHECK(pm_start(&multiplex));
        execute_interpolate(plan, &coarse, &fine);
        PAPI_CHECK(pm_stop(&multiplex));
      }

      for(size_t i=0; i < num_counters; ++i)
      {
        long long value;
        PAPI_CHECK(pm_count(&multiplex, counters[i], &value));
        printf("%15lld", value);
      }

      PAPI_CHECK(pm_destroy(&multiplex));
      interpolate_destroy_plan(plan);
    }

    printf("\n");

    storage_free(&coarse);
    storage_free(&fine);
  }
}