我正在使用mpirun调用openMDAO代码,该代码使用包含4个子系统的并行组。我可以按如下所示从终端成功调用代码。
mpirun -n 2 python modified_objective.py
但是,由于我的PC具有2核/ 4个线程,因此我想使用所有4个线程来加速我的代码。但是我收到如下错误:
系统中没有足够的插槽来满足这4个插槽 应用程序要求的: python。 为您的应用程序请求更少的插槽,或腾出更多插槽 可供使用。
我在网上找到的解决方法之一是使用文本等级文件,如下所示:
rank 0=localhost slot=0:0
rank 1=localhost slot=0:0
rank 2=localhost slot=0:1
rank 3=localhost slot=0:1
,然后按如下所示调用代码:
mpiexec -np 4 -H localhost -rf rankfile python modified_objective.py
但这似乎不起作用。我可以使用所有4个内核吗?
谢谢
答案 0 :(得分:0)
解决方案取决于您拥有的特定MPI实现。它根本不是OpenMDAO问题,而是MPI库的问题。您似乎已经看到了,因为您正试图提供一个主机文件。
我认为您的选择错误。试试:
with open("bytesfile", "rb") as infile:
str = base64.b85encode(imageFile.read())
with open("bytesfile", "rb") as infile:
str2 = json.dumps(list(infile.read()))