30 lines
		
	
	
		
			588 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			588 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright (c) 2023 Barcelona Supercomputing Center (BSC)
 | |
|  * SPDX-License-Identifier: GPL-3.0-or-later */
 | |
| 
 | |
| #include "compat.h"
 | |
| #include <stdio.h>
 | |
| 
 | |
| /* Adapted from Listing 2 of https://arxiv.org/pdf/2208.06332.pdf */
 | |
| 
 | |
| int
 | |
| main(void)
 | |
| {
 | |
| 	int A;
 | |
| 	#pragma oss task out(A) label("init")
 | |
| 	A = 1;
 | |
| 
 | |
| 	#pragma oss taskiter in(A) out(A) label("iter")
 | |
| 	for (int i = 0; i < 10; i++) {
 | |
| 		#pragma oss task in(A) label("sleep")
 | |
| 		sleep_us(10 + A);
 | |
| 		#pragma oss task out(A) label ("add")
 | |
| 		A = A + 1;
 | |
| 	}
 | |
| 
 | |
| 	# pragma oss task in(A) label("print")
 | |
| 	printf("A=%d\n", A);
 | |
| 
 | |
| 	#pragma oss taskwait
 | |
| 	return 0;
 | |
| }
 |