繁体   English   中英

在集群上使用 Python、Cython 和 GSL

[英]Using Python, Cython, and GSL on cluster

我希望在集群计算系统上运行我的 Python 程序。 由于我没有对集群的每个节点的 root 访问权限,我需要在本地目录中安装 Python 和我的模块并从那里运行我的代码。 为了节省时间,我可以在其中一个节点上进行本地 Python 构建,对其进行 tar 处理,然后将经过 tar 处理的 Python 保存在代理服务器上。 然后,当我想在其余节点上运行我的代码时,我只需 wget tared Python,解压它,然后运行我的程序。 所以基本上我只需要构建一次Python,然后就可以在集群上反复使用; 我在集群上运行的代码如下所示:

#!/bin/bash
wget www.proxyserver.Local_Python_Build.tgz
tar xzf Local_Python_Build.tgz
./Local_Python_Build/bin/python my_python_code.py

我遇到了一个主要问题。 首先,我的主要代码使用了一些我编写的需要 GSL 的 Cython 程序。 当我进行 Python 的初始安装时,我还会进行 GSL 的本地构建,以及编译 Cython 代码(所有这些都包含在 tar 中)。 我已经检查以确保在我构建之后一切正常运行,但是一旦我在集群上提交代码,代码就不起作用。 我不断收到以下错误:

ImportError: libgsl.so.0: cannot open shared object file: No such file or directory

现在,我尝试将路径添加到 LD_LIBRARY_PATH 中 libgsl.so.0 所在目录的路径,但这不起作用; IE

export LD_LIBRARY_PATH=path/where/libgsl/is

我担心每次运行代码时都需要构建 GSL; 即运行以下代码:

#!/bin/bash
wget www.proxyserver.Local_Python_Build.tgz
tar xzf Local_Python_Build.tgz
install GSL
Compile Cython Code
./Local_Python_Build/bin/python my_python_code.py

这显然会增加我的运行时间,我希望避免这种情况。 任何想法? 计算集群运行Linux。

谢谢!

绝对没有必要在每次运行时构建 GSL(或 Python)。 假设所有节点都可以访问某个共享文件系统,您可以简单地,

  1. 在共享文件夹中构建 Python、GSL 并编译您的 Cython 代码
  2. 在您提交给批处理队列系统的文件中,您更改环境变量( LD_LIBRARY_PATHPATH等),以便它可以找到可执行文件和必要的库。

可能失败的原因是path/where/libgsl/is is 未安装在节点上。 请向系统管理员咨询有关该问题的信息。 所使用的批处理系统的细节也将影响如何进行这项工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM