コード例 #1
0
ファイル: synchronize.c プロジェクト: jonarbo/KUBE
void determine_time_differences(void)
{
  int i;
  double *tmp_tds;
  double start_time, finish_time;

  if( lrootproc() ) 
    start_time = acc_start_sync();
  else
    start_time = MPI_Wtime();
  logging(DBG_SYNC, "determine_time_differences\n");
  for( i = 1; i < get_measurement_size(); i++) {
    MPI_Barrier(get_measurement_comm());
    if( get_measurement_rank() == 0 || get_measurement_rank() == i ) 
      ping_pong(0,i);
  }
  tmp_tds = skampi_malloc_doubles(get_measurement_size());
  if( lrootproc() ) {
    for( i = 1; i < get_measurement_size(); i++) 
            tmp_tds[i] = tds[get_global_rank(i)];
  }
  
  assert(get_measurement_size() - 1 >= 0 );
  MPI_Bcast(&(tmp_tds[1]), get_measurement_size()-1, MPI_DOUBLE, 0, get_measurement_comm());

  if( get_measurement_rank() != 0 ) {
    logging(DBG_TIMEDIFF, "tds[%d] = %9.1f us\n", 
	    get_global_rank(0), tds[get_global_rank(0)]*1.0e6);
    for( i = 1; i < get_measurement_size(); i++) {
      tds[get_global_rank(i)] = tmp_tds[i] + tds[get_global_rank(0)];
      logging(DBG_TIMEDIFF, "tds[%d] = %9.1f us\n", 
	      get_global_rank(i), tds[get_global_rank(i)]*1.0e6);
    }
  } 
  free(tmp_tds);
  MPI_Barrier(get_measurement_comm());
  if( lrootproc() )
    finish_time = acc_stop_sync();
  else
    finish_time = MPI_Wtime();
  rdebug(DBG_TIMEDIFF, "determine_time_differences() on %d processes: %f sec.\n", 
	 get_measurement_size(), finish_time - start_time);
}
コード例 #2
0
ファイル: synchronize.c プロジェクト: jonarbo/KUBE
void init_synchronization_module(void)
{
  int i, flag;
  int *mpi_wtime_is_global_ptr;

  tds = skampi_malloc_doubles(get_global_size());
  for(i = 0; i < get_global_size(); i++) tds[i] = 0.0;
  ping_pong_min_time = skampi_malloc_doubles(get_global_size());
  for( i = 0; i < get_global_size(); i++) ping_pong_min_time[i] = -1.0;

#if MPI_VERSION < 2
  MPI_Attr_get(MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL, &mpi_wtime_is_global_ptr, &flag);
#else
  MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL, &mpi_wtime_is_global_ptr, &flag);
#endif
  if( flag == 0 ) 
    mpi_wtime_is_global = False;
  else
    mpi_wtime_is_global = *mpi_wtime_is_global_ptr;

  rdebug(DBG_TIMEDIFF, "mpi_wtime_is_global = %d\n", mpi_wtime_is_global);
}
コード例 #3
0
static int pwm_backlight_update_status(struct backlight_device *bl)
{
	struct pwm_bl_data *pb = dev_get_drvdata(&bl->dev);
	int brightness = bl->props.brightness;
	int max = bl->props.max_brightness;

	if (bl->props.power != FB_BLANK_UNBLANK)
		brightness = 0;

	if (bl->props.fb_blank != FB_BLANK_UNBLANK)
		brightness = 0;

	if (pb->notify)
		brightness = pb->notify(brightness);

#if defined(CONFIG_MX100) /* ktj */
#if defined(CONFIG_MX100_EVM)
    {
        /* 
            inuput is duty_ns 
            brightness input range : 30 ~ 255, 21 steps    
        */
        int period;
        int period_min = 24000;
        
        period = pb->period - (brightness * pb->period / max);
        period = period * period_min / 40000;
        
	    if (brightness == 0) {
	    	pwm_config(pb->pwm, period, pb->period);
	    	pwm_disable(pb->pwm);
	
	    } else {
	    	pwm_config(pb->pwm, period, pb->period);
	    	pwm_enable(pb->pwm);
        }
	    rdebug("brightness=%3d duty_ns=%5d period_ns=%5d \n\n", brightness, period, pb->period);
    }
#elif defined(CONFIG_MX100_WS)
    {
        /* pb->period : 40000nsec, 25KHz */
        int period = 0;
        
    #if 1 /* use period_tbl */

	    if (brightness == 0) {
	    	pwm_config(pb->pwm, 0, pb->period);
	    	pwm_disable(pb->pwm);

	        gpio_request(GPIO_LED_PWM, "GPD0");
	        gpio_direction_output(GPIO_LED_PWM, 0);
	        gpio_free(GPIO_LED_PWM);
	    } else {
            period = period_tbl[brightness];
	    	pwm_config(pb->pwm, period, pb->period);
	    	pwm_enable(pb->pwm);
	    }
    #else
	    if (brightness == 0) {
	    	pwm_config(pb->pwm, 0, pb->period);
	    	pwm_disable(pb->pwm);
	    } else {
	        period = (brightness * pb->period / max) * 92 / 100;  /* max brightness duty is 92% */
	    	pwm_config(pb->pwm, period, pb->period);
	    	pwm_enable(pb->pwm);
	    }
	#endif
	    
	    if (debug_enable)
    	    printk("_[backlight] brightness=%3d period=%5d max_period=%5d duty=%d \n\n", 
	            brightness, period, pb->period, (period * 100 / pb->period));
    }
#endif
#else
	if (brightness == 0) {
		pwm_config(pb->pwm, 0, pb->period);
		pwm_disable(pb->pwm);
	} else {
		pwm_config(pb->pwm, brightness * pb->period / max, pb->period);
		pwm_enable(pb->pwm);
	}
#endif

	return 0;
}