67 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include <omp.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include "compat.h"
 | 
						|
 | 
						|
/* Test several work-distribution and task constructs, so we can generate a
 | 
						|
 * trace that includes most of the states. */
 | 
						|
 | 
						|
int main(void)
 | 
						|
{
 | 
						|
	#pragma omp parallel
 | 
						|
	{
 | 
						|
		#pragma omp for
 | 
						|
		for (int i = 0; i < 100; i++) {
 | 
						|
			sleep_us(1);
 | 
						|
		}
 | 
						|
 | 
						|
		#pragma omp sections
 | 
						|
		{
 | 
						|
			#pragma omp section
 | 
						|
			{ sleep_us(101); printf("101\n"); }
 | 
						|
			#pragma omp section
 | 
						|
			{ sleep_us(102); printf("102\n"); }
 | 
						|
			#pragma omp section
 | 
						|
			{ sleep_us(103); printf("103\n"); }
 | 
						|
			#pragma omp section
 | 
						|
			{ sleep_us(104); printf("104\n"); }
 | 
						|
		}
 | 
						|
 | 
						|
		#pragma omp for
 | 
						|
		for (int i = 0; i < 100; i++) {
 | 
						|
			sleep_us(1);
 | 
						|
		}
 | 
						|
 | 
						|
		#pragma omp single
 | 
						|
		for (int i = 0; i < 100; i++)
 | 
						|
		{
 | 
						|
			#pragma omp task
 | 
						|
			sleep_us(10);
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	#pragma omp parallel
 | 
						|
	{
 | 
						|
		#pragma omp critical
 | 
						|
		sleep_us(20);
 | 
						|
 | 
						|
		#pragma omp barrier
 | 
						|
 | 
						|
		#pragma omp for
 | 
						|
		for (int i = 0; i < 100; i++) {
 | 
						|
			sleep_us(1);
 | 
						|
		}
 | 
						|
		#pragma omp for schedule(dynamic, 1)
 | 
						|
		for (int i = 0; i < 100; i++) {
 | 
						|
			sleep_us(i);
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	// FIXME: Crashes OpenMP-V runtime
 | 
						|
	//#pragma omp distribute parallel for
 | 
						|
	//for (int i = 0; i < 1000; i++) {
 | 
						|
	//	sleep_us(1);
 | 
						|
	//}
 | 
						|
 | 
						|
	return 0;
 | 
						|
}
 |