运行奇异容器时的CPU使用限制

问题描述 投票:2回答:1

我在python 3中开发了一些(复杂的)代码。当我从外壳(Ubuntu 18.04)在笔记本电脑上运行它时,CPU使用率为550%(来自“ top”命令)。当我从单个容器(基于Ubuntu 16.04)运行它时,CPU使用率为250%,执行时间增加了。我无法弄清楚为什么奇点不能使用更多的CPU。

我阅读了https://sylabs.io/guides/3.0/admin-guide/configfiles.html#singularity-conf上的手册,但我的singularity.conf是默认文件,我也没有创建任何/sys/fs/cgroup文件。奇异版本为3.0.3。

有人对此问题有任何线索吗?

谢谢!

JB

编辑:这种情况可以通过下面的简单示例复制:

使用:python3 nb_cpu_singularity.py 300000 10000

nb_cpu_singularity.py:

import numpy as np
import numba as nb
import argparse


parser = argparse.ArgumentParser(description="compute dot products")
parser.add_argument("sample_size", type=int, default=10000,
                    help="number of dot products")
parser.add_argument("dim", type=int, default=1000,
                    help="dimension of vectors")

args = parser.parse_args()

# Inputs
sample_size = args.sample_size
dim = args.dim

@nb.jit(nopython=True, nogil=True, fastmath=True, parallel=False)
def build_vector(offset, dim):

    v = np.zeros(dim, dtype=np.float64)
    for i in range(dim):
        v[i] += i+offset
    return(v)


@nb.jit(nopython=True, nogil=True, fastmath=True, parallel=False)
def dot_products(sample_size, dim):

    for i in range(sample_size):
        np.dot(build_vector(i, dim), build_vector(i+1, dim))        


dot_products(sample_size, dim)
python-3.x cpu-usage singularity-container
1个回答
0
投票

我也无法使用默认的singularity.conf和奇异版本3.5.1来复制此代码。差异可能是由于您的宿主环境和容器中的python环境之间的差异引起的吗?您可以分享您的奇点定义文件吗?

我的计算机有8个核心,在容器和主机上运行时,使用率高达798%。这是我使用的代码和命令。

奇点

Bootstrap: docker
From: continuumio/miniconda3:4.8.2

%post
/opt/conda/bin/conda install --yes nomkl numba numpy scipy

%runscript
/opt/conda/bin/python3 "$@"
sudo singularity build conda.sif Singularity
singularity run conda.sif nb_cpu_singularity.py 30000 100000

主机

conda create --yes -n sotest nomkl numba numpy scipy
conda activate sotest
python nb_cpu_singularity.py 30000 100000
© www.soinside.com 2019 - 2024. All rights reserved.