Ios Kivy应用程序提供;奇异矩阵;电话错误,但计算机错误

Ios Kivy应用程序提供;奇异矩阵;电话错误,但计算机错误,ios,xcode,numpy,kivy,Ios,Xcode,Numpy,Kivy,我在自己编写的Kivy应用程序中遇到了一个问题,我在网上找不到任何帮助。非常感谢。 问题如下。我的代码涉及numpy矩阵求逆,当我在我的计算机上运行它时,它运行得非常好。但是,当我在XCode中的模拟iPhone上或在我的个人手机上运行它时,我会得到一个LinalError(“奇异矩阵”)numpy.linalg.LinalError:Singular matrix错误,即使所讨论的矩阵肯定不是奇异的 编辑: 在计算机上: Numpy版本:1.19.1 numpy.show\u config()

我在自己编写的Kivy应用程序中遇到了一个问题,我在网上找不到任何帮助。非常感谢。
问题如下。我的代码涉及numpy矩阵求逆,当我在我的计算机上运行它时,它运行得非常好。但是,当我在XCode中的模拟iPhone上或在我的个人手机上运行它时,我会得到一个
LinalError(“奇异矩阵”)numpy.linalg.LinalError:Singular matrix
错误,即使所讨论的矩阵肯定不是奇异的

编辑:

在计算机上:

Numpy版本:
1.19.1

numpy.show\u config()的输出

在模拟电话上:

Numpy版本:
1.16.4

numpy.show\u config()的输出


问题的原因几乎可以肯定是链接器args中的
-Wl,Accelerate
。使用一个非常旧且有点破损的LAPACK版本加速船只,这就是为什么从(未发布的1.20)起它不再受支持的原因

如果您可以在您的环境变量中设置
ATLAS=None BLAS=None LAPACK=None
来重建kivy的numpy,那么您最终将没有这种加速依赖关系


你可能需要从开始研究如何将其传递给kivy。

对numpy.linalg和kivy ios的进一步实验似乎表明,在使用工具链创建应用程序之后,linalg似乎根本不起作用。即使计算良性2x2矩阵的行列式也会给出完全错误的结果……什么numpy版本?
numpy.show\u config()
在手机和电脑上给出了什么?我已经编辑了这个问题,包括了您请求的信息谢谢!在哪里以及如何设置环境变量?我只是从Kivy开始。
ATLAS=None BLAS=None LAPACK=None
选项在
toolchain build…
中吗?如果幸运的话,您可以直接使用
ATLAS=None BLAS=None LAPACK=None toolchain build…
。我从来没有用过kivy,所以你可能会在他们的问题追踪器上有更多的运气。但是有没有可能旧版本的numpy.linalg就那么糟糕呢?在上面的示例中,基本上不可能找到任何numpy.linalg.det()不提供完全无意义的矩阵…我不能说
det
,但在一个例程中有一个错误,当你问它“此操作需要多少工作内存”时,lapack会返回无意义。Accelerate被固定在lapack 3.2.1上,因此您可以查看lapack变更日志,找出自那时以来已修复的bug。
blas_mkl_info:
  NOT AVAILABLE
blis_info:
  NOT AVAILABLE
openblas_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
  NOT AVAILABLE
openblas_lapack_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
  NOT AVAILABLE
openblas_lapack_info:
  NOT AVAILABLE
openblas_clapack_info:
  NOT AVAILABLE
atlas_3_10_threads_info:
  NOT AVAILABLE
atlas_3_10_info:
  NOT AVAILABLE
atlas_threads_info:
  NOT AVAILABLE
atlas_info:
  NOT AVAILABLE
accelerate_info:
    extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
    extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
    define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
lapack_opt_info:
    extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
    extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
    define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]