48 lines
		
	
	
		
			636 B
		
	
	
	
		
			Prolog
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			636 B
		
	
	
	
		
			Prolog
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/local/bin/yap -L --
 | |
| 
 | |
| % called with
 | |
| % mpirun -np 2 gowait.
 | |
| % prints
 | |
| % ------
 | |
| % main
 | |
| % main
 | |
| % after_init
 | |
| % after_init
 | |
| % [0,2]
 | |
| % [1,2]
 | |
| % irecv
 | |
| % wait_end
 | |
| % after_send
 | |
| % c(535755152,)
 | |
| 
 | |
| :- use_module(library(lam_mpi)).
 | |
| :- use_module(library(system)).
 | |
| main:-
 | |
| 	write(main),nl,
 | |
| 	mpi_init,
 | |
| 	write(after_init),nl,
 | |
| 	mpi_comm_size(S),
 | |
| 	mpi_comm_rank(R),
 | |
| 	write([R,S]),nl,
 | |
| 	(R == 0->
 | |
| 	 sleep(2),
 | |
| 	 write(wait_end),nl,
 | |
| 	 mpi_send(ciao,1,201),
 | |
| 	 write(after_send),nl
 | |
| 	;
 | |
| 	 mpi_irecv(0,_201,H),
 | |
| 	 write(irecv),nl,
 | |
| 	 test(H)
 | |
| 	),
 | |
| 	mpi_finalize.
 | |
| 
 | |
| test(H):-
 | |
| 	(mpi_wait_recv(H,S,Data)->
 | |
| 	 write(c(S,Data)),nl
 | |
| 	;
 | |
| 	 write(no),nl,
 | |
| 	 test(H)
 | |
| 	).
 | |
| 
 | |
| :-main.
 |