我写了一个 Rmpi 代码,希望主人与奴隶平等地分担工作负担。因此,函数work_by_master
会在进行发送-接收以交换结果之前mpi.bcast.cmd
对其进行work_by_slaves
调用。work_to_be_done_per_process
我不断收到一个错误:
Error in mpi.probe(source, tag, comm, status) : ignoring SIGPIPE signal
Calls: work_by_master -> mpi.recv.Robj -> mpi.probe -> .Call
我很难理解错误是什么,最后在投入大量时间后,间接意识到错误可能来自奴隶无法以嵌套方式调用用户定义函数的事实。当我合并并只让主调用时work_to_be_done_per_process
,错误就解决了。work_by_slaves
work_to_be_done_per_process
我还将函数复制work_to_be_done_per_process
到work_to_be_done_per_process_by_slaves
andwork_to_be_done_per_process_by_master
中,让从属和主控分别调用它们。即使这样也没有解决问题。因此,似乎只有我的上述结论是原因。
这是真的吗?有没有其他人也遇到过从机无法从内部调用用户定义函数的问题?有没有办法正确地做到这一点。