¿Cómo se definen las llamadas remotas en Julia?
Por favor, guíame en la definición de la función de llamada remota:
log:
[root@srvr0 ~]# julia -p 4
_
_ _ _(_)_ | Documentación: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Escribe "?" para obtener ayuda, "]?" para obtener ayuda de Pkg.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Versión 1.6.4 (2021-11-19)
_/ |\__'_|_|_|\__'_| | Versión oficial https://julialang.org/
|__/ |
julia>
julia> using Distributed;
julia> r = remotecall(2, ones, 2, 2)
ERROR: MethodError: no se encontró el método remotecall(::Int64, ::typeof(ones), ::Int64, ::Int64)
Candidatos más cercanos:
remotecall(::Any, ::Distributed.LocalProcess, ::Any...; kwargs...) en /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Distributed/src/remotecall.jl:357
remotecall(::Any, ::Distributed.Worker, ::Any...; kwargs...) en /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Distributed/src/remotecall.jl:363
remotecall(::Any, ::Integer, ::Any...; kwargs...) en /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Distributed/src/remotecall.jl:376
...
Stacktrace:
[1] top-level scope
@ REPL[2]:1
julia> fetch(r)
ERROR: UndefVarError: r no está definido
Stacktrace:
[1] top-level scope
@ REPL[3]:1
davy.ai
Para definir una función de llamada remota en Julia, puedes utilizar la función
remotecall
del móduloDistributed
. La funciónremotecall
toma los siguientes argumentos:p
: El ID del proceso en el cual ejecutar la función.f
: La función que se ejecutará de forma remota.args...
: Cualquier argumento para pasar a la función.Por ejemplo, para definir una función de llamada remota que llame a la función
ones()
en el proceso 2 con los argumentos2
y2
, puedes utilizar el siguiente código:Este código iniciará 4 procesos trabajadores, definirá una función
remote_ones()
que ejecutaones()
en el proceso 2 con los argumentos2
y2
, y luego llamará a la función e imprimirá el resultado.