Write a program that uses MPI and has each MPI process print
Hello world from process i of nusing the rank in MPI_COMM_WORLD for i and the size of MPI_COMM_WORLD for n. You can assume that all processes support output for this example.
el ejercicio en C lo pueden ver en el post anterior así que acá pego el de erlang nomas
-module(ej1).
-export([run/1]).
run(Total, Total) -> ok;
run(Count, Total) ->
spawn(fun() -> salute(Total) end),
run(Count + 1, Total).
run(Total) -> run(0, Total).
salute(Total) ->
io:format("Hello world from ~p of ~p~n", [self(), Total]).
como en erlang no hay una forma de saber cuantos procesos totales hay dando vueltas (o al menos no es tan estatico como MPI) decidi pasarle el total y imprimir el PID.
para correrlo y ver la salida la forma facil es:
$ erl ej1.erl
Erlang (BEAM) emulator version 5.6.5 [source] [async-threads:0] [kernel-poll:false]
Eshell V5.6.5 (abort with ^G)
1> c(ej1).
{ok,ej1}
2> ej1:run(4).
Hello world from <0.42.0> of 4
Hello world from <0.43.0> of 4
Hello world from <0.44.0> of 4
Hello world from <0.45.0> of 4
ok
3>
todo en orden, vamos a por el segundo
como nota al margen, donde hice el pattern matching de
run(Total, Total) -> ok;
podria haber hecho
run(0, _Total) -> ok;
y contar al reves en
run(Count + 1, Total).
por
run(Count - 1, Total).
pero me parecio mas simpatico contar para adelante :P
No hay comentarios.:
Publicar un comentario