【问题标题】:pyOptSparse Error: There was an error importing the compiled snopt module during testing of OpenMDAOpyOptSparse 错误:在测试 OpenMDAO 期间导入已编译的 snopt 模块时出错
【发布时间】:2020-08-31 17:15:11
【问题描述】:

我需要在 Ubuntu 中为我的项目使用开放框架 openMDAO。通过在 anaconda 中创建新环境,我已经成功安装了 mpi4py、petsc、petsc4py。我还安装了 pyoptsparse 和其他库。 安装后当我运行测试命令时

$ testflo openmdao -n 1
它给出的错误如下:
(omd) mujahed@Lenovo-G50-80:~$ testflo openmdao -n 1
..................................................... …………………………………………………………………………………………………………………………
+-------------------------------------------------- ---------------------------------------------+
| pyOptSparse 错误:导入已编译的 snopt 模块时出错 |
+-------------------------------------------------- ---------------------------------------------+

SSS......../home/mujahed/anaconda3/envs/omd/lib/python3.8/site-packages/openmdao/core/group.py:1113: UserWarning:Group (sub): 试图连接从“tgt.x”到“cmp.x”,但“tgt.x”是一个输入。所有连接必须从输出到输入。
..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ......................................... ..................................................... ..................................................... .....................S....................... ........................................SS.... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… ..................................................... ..................................................... ……………………………………………………………………………………………………………………………………………… ..................................................... ..................................................... .....................S.......
+-------------------------------------------------- ---------------------------------------------+
| pyOptSparse 错误:导入已编译的 snopt 模块时出错 |
+-------------------------------------------------- ---------------------------------------------+

..................................................... ....................(mpi)/home/mujahed/anaconda3/envs/omd/lib/python3.8/site-packages/openmdao/core/tests/test_prob_remote2 .py:ProbRemoteTestCase.test_get_remote ... 失败 (00:00:0.02, 203 MB)
回溯(最近一次通话最后):
  _try_call 中的文件“/home/mujahed/anaconda3/envs/omd/lib/python3.8/site-packages/testflo/test.py”,第 425 行
    函数()
  文件“/home/mujahed/anaconda3/envs/omd/lib/python3.8/site-packages/openmdao/core/tests/test_prob_remote2.py”,第 200 行,在 test_get_remote
    prob.get_val('par.c2.x', get_remote=False)
  文件“/home/mujahed/anaconda3/envs/omd/lib/python3.8/unittest/case.py”,第 227 行,在 __exit__
    self._raiseFailure("{} 未提出".format(exc_name))
  _raiseFailure 中的文件“/home/mujahed/anaconda3/envs/omd/lib/python3.8/unittest/case.py”,第 164 行
    引发 self.test_case.failureException(msg)
AssertionError:未引发 RuntimeError

...
+-------------------------------------------------- ---------------------------------------------+
| pyOptSparse 错误:导入已编译的 snopt 模块时出错 |
+-------------------------------------------------- ---------------------------------------------+

SSS..................................................S. ....X............................................. ..................................................... ..................................................... .....................................
+-------------------------------------------------- ---------------------------------------------+
| pyOptSparse 错误:导入已编译的 snopt 模块时出错 |
+-------------------------------------------------- ---------------------------------------------+

..SS............S...capi_return 为 NULL
回调 cb_slfunc_in_slsqp__user__routines 失败。
.capi_return 为 NULL
回调 cb_slfunc_in_slsqp__user__routines 失败。
....S.............SSSSSSS.......
   从子程序 COBYLA 正常返回

   NFVALS = 56 F =-1.080000E+02 MAXCV = 0.000000E+00
   X = 3.500001E+00 -3.500001E+00
..................................................................
   从子程序 COBYLA 正常返回

   NFVALS = 124 F =-2.733333E+01 MAXCV = 0.000000E+00
   X = 6.666667E+00 -7.333332E+00
..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..........................SSSSSSSSSSSSSSSSSSSSSS.............
   从子程序 COBYLA 正常返回

   NFVALS = 54 F =-2.700000E+01 MAXCV = 0.000000E+00
   X = 6.999999E+00 -6.999999E+00
.................................. SS.... ..................................................... ..................................................... ………………………………………………………………………………………… ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ……

以下测试失败:
test_prob_remote2.py:ProbRemoteTestCase.test_get_remote


通过:2619
失败:1
跳过:62


使用 1 个进程运行 2682 次测试
挂钟时间:00:22:33.07

通过:2619 失败:1 跳过:62

我没有计算机科学背景,这是我第一次处理这样的事情。 我在用: 开放MDAO 3.2.1 mpich 3.3.2 mpi4py 3.0.3 petsc 3.13.4 petsc4py 3.13.0 pyoptsparse 2.1.5 蟒蛇3.8.5

我已经通过命令 ./build_pyoptsparse.sh 从https://github.com/OpenMDAO/build_pyoptsparse 构建了 pyoptsparse。

我有 Ubuntu 20.04.1 LTS,我正在使用 Anaconda3。我怎样才能通过所有测试(不跳过)? 谁能帮我解决这个问题?

【问题讨论】:

  • 你可以尝试运行`testflo openmdao -n 1 --show_skipped 吗?这将提供更多关于跳过的信息

标签: openmdao


【解决方案1】:

对此表示歉意.. 它看起来像是一个无关的文件 (test_prob_remote2.py) 进入了发行版.. 这不是一个合法的测试,您可以忽略它。

“pyOptSparse 错误”消息只是告诉您没有安装 SNOPT 优化器,这很好。

你的安装应该很好。

【讨论】:

    【解决方案2】:

    其中一些测试输出可能有点令人困惑。您遇到的错误实际上与 SNOPT 无关。这是 pyoptsparse 发出的警告,但这不是问题。

    实际失败的测试由这一行标识:

    The following tests failed:
    test_prob_remote2.py:ProbRemoteTestCase.test_get_remote
    

    而导致失败的错误就在这里:

      File "/home/mujahed/anaconda3/envs/omd/lib/python3.8/site-packages/testflo/test.py", line 425, in _try_call
        func()
      File "/home/mujahed/anaconda3/envs/omd/lib/python3.8/site-packages/openmdao/core/tests/test_prob_remote2.py", line 200, in test_get_remote
        prob.get_val('par.c2.x', get_remote=False)
      File "/home/mujahed/anaconda3/envs/omd/lib/python3.8/unittest/case.py", line 227, in __exit__
        self._raiseFailure("{} not raised".format(exc_name))
      File "/home/mujahed/anaconda3/envs/omd/lib/python3.8/unittest/case.py", line 164, in _raiseFailure
        raise self.test_case.failureException(msg)
    AssertionError: RuntimeError not raised
    

    由于某种原因,您的安装没有在预期出现错误时引发错误。我不确定为什么会这样,但如果您不打算使用 MPI 运行,那么这不是问题。

    您已经费心安装 MPI,所以您可能正计划并行运行……这个失败的测试当然很奇怪。如果您的 MPI 安装存在严重问题,我认为您会遇到更多失败的测试。

    您可以尝试像这样运行 testflo: testflo openmdao -n 1 --show_skipped 看看是否有更多的 MPI 测试被跳过...这可能会帮助您缩小范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      相关资源
      最近更新 更多