我在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)
我也无法使用默认的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