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); }
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); }
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; }