void #endif compute_mandelbrot(struct mandelbrot_param param) { #if NB_THREADS > 0 mandelbrot_param = param; // Trigger threads' resume pthread_barrier_wait(&thread_pool_barrier); // Wait for the threads to be done pthread_barrier_wait(&thread_pool_barrier); #else #ifdef MEASURE clock_gettime(CLOCK_MONOTONIC, &sequential.start); #endif init_round(); sequential_mandelbrot(¶m); #ifdef MEASURE clock_gettime(CLOCK_MONOTONIC, &sequential.stop); #endif #endif #ifdef MEASURE return timing; #endif }
void #endif compute_mandelbrot(struct mandelbrot_param param) { #if NB_THREADS > 0 mandelbrot_param = param; #if LOADBALANCE == 1 pthread_mutex_lock(&mutex); pixel_count = 0; pthread_mutex_unlock(&mutex); #endif #if LOADBALANCE == 2 pthread_mutex_lock(&mutex); row_count = 0; pthread_mutex_unlock(&mutex); #endif // Trigger threads' resume pthread_barrier_wait(&thread_pool_barrier); // Wait for the threads to be done pthread_barrier_wait(&thread_pool_barrier); #else #ifdef MEASURE clock_gettime(CLOCK_MONOTONIC, &sequential.start); #endif sequential_mandelbrot(¶m); #ifdef MEASURE clock_gettime(CLOCK_MONOTONIC, &sequential.stop); #endif #endif #ifdef MEASURE return timing; #endif }