【问题标题】:Running qsub with anaconda environment使用 anaconda 环境运行 qsub
【发布时间】:2019-04-20 03:10:19
【问题描述】:

我有一个通常在 Linux 的 conda 环境中运行的程序,因为我使用它来管理我的库,使用以下说明:

source activate my_environment
python hello_world.py

我怎样才能在与 PBS 配合使用的高级计算机上运行 hello_world.py。指令说明运行适配代码script.sh,如下所示,并使用指令qsub调用。

# script.sh
#!/bin/sh
#PBS -S /bin/sh
#PBS -N job_example
#PBS -l select=24
#PBS -j oe
cd $PBS_O_WORKDIR
mpiexec ./programa_mpi

如何在我的 anaconda 环境中使用 qsub 运行 hello_world.py?

【问题讨论】:

    标签: python anaconda pbs qsub


    【解决方案1】:

    您需要在激活环境和运行脚本之前加载 Python 模块。

    module load python3
    
    cd $PBS_O_WORKDIR
    source activate my_environment
    
    mpiexec python hello_world.py
    

    查看您所在机构的有关其 Python 模块的文档。在我的机构,Anaconda 是 Python3 的环境模块,所以你可以像我展示的那样加载它。

    【讨论】:

    • 你说的python模块是什么意思?
    • @Ghanem,我的意思是module load python3。在超级计算机上,Python 不会自动启用,因此您需要启用 Python 或 Matlab 版本或 PBS 脚本中的任何内容。运行 Python 脚本时,加载该模块会使该版本的 Python 成为您的默认版本。
    • 好的,@HS-nebula,可以看看这里:https://stackoverflow.com/questions/56871054/force-shell-to-use-python-from-conda-variable-in-sungrid-engine,我也有类似的问题。
    • @Ghanem 你能重新格式化你的评论,让它成为一个链接吗?我可以尝试,但我从未使用过 SunGrid Engine。
    【解决方案2】:

    除非默认情况下它在环境中,否则还需要在 SGE(qsub) 脚本中“加载”conda(我假设类似的事情也适用于 slurm 脚本)。例如,我已将 conda 安装到 SGE 脚本中下面看到的目录中,因此我导出了路径(如果 conda 作为模块安装在 HPCC 上,则只需加载它):

    #!/bin/bash
    #$ -q compute
    #$ -l compute
    #$ -cwd
    #$ -N name
    #$ -j yes
    
    export PATH=$HOME/miniconda3/bin:$PATH
    
    source activate my_environment
    
    environment function code...
    

    【讨论】:

      【解决方案3】:

      如果您真的需要您的 conda 环境,您可以在脚本中激活它

      source ~/.bashrc #configures your shell to use conda activate
      conda activate your_env_name
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-21
        • 2019-02-25
        • 1970-01-01
        • 2018-12-26
        • 2017-09-30
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        相关资源
        最近更新 更多