Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在大数组乘法后,进程关联转到{0}_Python_Numpy_Openmp - Fatal编程技术网

Python 在大数组乘法后,进程关联转到{0}

Python 在大数组乘法后,进程关联转到{0},python,numpy,openmp,Python,Numpy,Openmp,系统信息: 操作系统:CentOS Linux 7 处理器:24倍Intel(R)Xeon(R)Gold 6140 CPU@2.30GHz 软件信息: Python 3.7.3 NumPy 1.16.2 我之所以能找到这个问题,是因为我试图在一个1M记录数据集上并行拟合一个数据集(n_jobs=-1)。安装后,我注意到joblib后端已恢复为SequentialBackend一次运行一个作业 我确定在调用fit时,进程关联(如os.sched_getaffinity所示)被设置为单个核心

系统信息:

  • 操作系统:CentOS Linux 7
  • 处理器:24倍Intel(R)Xeon(R)Gold 6140 CPU@2.30GHz
软件信息:

  • Python 3.7.3
  • NumPy 1.16.2
我之所以能找到这个问题,是因为我试图在一个1M记录数据集上并行拟合一个数据集(
n_jobs=-1
)。安装后,我注意到
joblib
后端已恢复为
SequentialBackend
一次运行一个作业

我确定在调用
fit
时,进程关联(如
os.sched_getaffinity
所示)被设置为单个核心,而不是正常的24。事实证明,在数据转换中,有一个步骤是将
numpy.array
乘以
float
。在这一点上,OpenMP抛出了一系列关于KMP_关联性的消息,这些消息似乎都没有表明该进程已设置为单个核心,但我不是OpenMP日志记录方面的专家。下面是一个在我的系统上重现此错误的简单示例

import numpy as np
from os import sched_getaffinity as aff

aff(0)
{0,
 1,
 2,
 3,
 4,
 5,
 6,
 7,
 8,
 9,
 10,
 11,
 12,
 13,
 14,
 15,
 16,
 17,
 18,
 19,
 20,
 21,
 22,
 23}
arr = np.random.rand(1000000)
arr *= .5
OMP: Info #212: KMP_AFFINITY: decoding x2APIC ids.
OMP: Info #210: KMP_AFFINITY: Affinity capable, using global cpuid leaf 11 info
OMP: Info #154: KMP_AFFINITY: Initial OS proc set respected: 0-23
OMP: Info #156: KMP_AFFINITY: 24 available OS procs
OMP: Info #157: KMP_AFFINITY: Uniform topology
OMP: Info #179: KMP_AFFINITY: 24 packages x 1 cores/pkg x 1 threads/core (24 total cores)
OMP: Info #214: KMP_AFFINITY: OS proc to physical thread map:
OMP: Info #171: KMP_AFFINITY: OS proc 0 maps to package 0
OMP: Info #171: KMP_AFFINITY: OS proc 1 maps to package 2
OMP: Info #171: KMP_AFFINITY: OS proc 2 maps to package 4
OMP: Info #171: KMP_AFFINITY: OS proc 3 maps to package 6
OMP: Info #171: KMP_AFFINITY: OS proc 4 maps to package 8
OMP: Info #171: KMP_AFFINITY: OS proc 5 maps to package 10
OMP: Info #171: KMP_AFFINITY: OS proc 6 maps to package 12
OMP: Info #171: KMP_AFFINITY: OS proc 7 maps to package 14
OMP: Info #171: KMP_AFFINITY: OS proc 8 maps to package 16
OMP: Info #171: KMP_AFFINITY: OS proc 9 maps to package 18
OMP: Info #171: KMP_AFFINITY: OS proc 10 maps to package 20
OMP: Info #171: KMP_AFFINITY: OS proc 11 maps to package 22
OMP: Info #171: KMP_AFFINITY: OS proc 12 maps to package 24
OMP: Info #171: KMP_AFFINITY: OS proc 13 maps to package 26
OMP: Info #171: KMP_AFFINITY: OS proc 14 maps to package 28
OMP: Info #171: KMP_AFFINITY: OS proc 15 maps to package 30
OMP: Info #171: KMP_AFFINITY: OS proc 16 maps to package 32
OMP: Info #171: KMP_AFFINITY: OS proc 17 maps to package 34
OMP: Info #171: KMP_AFFINITY: OS proc 18 maps to package 36
OMP: Info #171: KMP_AFFINITY: OS proc 19 maps to package 38
OMP: Info #171: KMP_AFFINITY: OS proc 20 maps to package 40
OMP: Info #171: KMP_AFFINITY: OS proc 21 maps to package 42
OMP: Info #171: KMP_AFFINITY: OS proc 22 maps to package 44
OMP: Info #171: KMP_AFFINITY: OS proc 23 maps to package 46
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 8822 thread 0 bound to OS proc set 0
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9374 thread 1 bound to OS proc set 1
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9375 thread 2 bound to OS proc set 2
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9376 thread 3 bound to OS proc set 3
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9377 thread 4 bound to OS proc set 4
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9378 thread 5 bound to OS proc set 5
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9380 thread 7 bound to OS proc set 7
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9379 thread 6 bound to OS proc set 6
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9381 thread 8 bound to OS proc set 8
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9383 thread 10 bound to OS proc set 10
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9382 thread 9 bound to OS proc set 9
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9384 thread 11 bound to OS proc set 11
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9385 thread 12 bound to OS proc set 12
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9386 thread 13 bound to OS proc set 13
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9387 thread 14 bound to OS proc set 14
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9388 thread 15 bound to OS proc set 15
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9389 thread 16 bound to OS proc set 16
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9390 thread 17 bound to OS proc set 17
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9391 thread 18 bound to OS proc set 18
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9392 thread 19 bound to OS proc set 19
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9394 thread 21 bound to OS proc set 21
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9393 thread 20 bound to OS proc set 20
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9395 thread 22 bound to OS proc set 22
OMP: Info #250: KMP_AFFINITY: pid 8822 tid 9396 thread 23 bound to OS proc set 23

aff(0)
{0}
对于如何解释这种行为,我有点不知所措,甚至用
os重置进程关联。之后sched_setaffinity
也不能恢复使用所有内核的能力

请注意
当阵列的大小为1e5而不是1e6时,不会发生这种情况。内存不是问题,因为这个系统有256GB。

我在OpenMP bugzilla页面的下面打开了一个票证

我从一位英特尔工程师那里得到的建议是使用
norspect
KMP\u AFFINITY
修饰符。此修饰符和其他修饰符的文档可在中找到。这对我有用

export KMP_AFFINITY=norespect

ipython
In [1]: import numpy as np
In [2]: from os import sched_getaffinity as aff
In [3]: aff(0)
Out[3]:
{0,
 1,
 2,
 3,
 4,
 5,
 6,
 7,
 8,
 9,
 10,
 11,
 12,
 13,
 14,
 15,
 16,
 17,
 18,
 19,
 20,
 21,
 22,
 23}
In [4]: arr = np.random.rand(1000000)
In [5]: arr *= .5
OMP: Info #212: KMP_AFFINITY: decoding x2APIC ids.
OMP: Info #210: KMP_AFFINITY: Affinity capable, using global cpuid leaf 11 info
OMP: Info #155: KMP_AFFINITY: Initial OS proc set not respected: 0-23
OMP: Info #156: KMP_AFFINITY: 24 available OS procs
OMP: Info #157: KMP_AFFINITY: Uniform topology
OMP: Info #179: KMP_AFFINITY: 24 packages x 1 cores/pkg x 1 threads/core (24 total cores)
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4274 thread 0 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4697 thread 3 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4698 thread 4 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4699 thread 5 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4700 thread 6 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4701 thread 7 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4702 thread 8 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4703 thread 9 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4704 thread 10 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4705 thread 11 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4706 thread 12 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4708 thread 14 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4709 thread 15 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4710 thread 16 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4711 thread 17 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4712 thread 18 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4714 thread 20 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4715 thread 21 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4716 thread 22 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4717 thread 23 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4713 thread 19 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4707 thread 13 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4695 thread 1 bound to OS proc set 0-23
OMP: Info #250: KMP_AFFINITY: pid 4274 tid 4696 thread 2 bound to OS proc set 0-23
In [6]: aff(0)
Out[6]:
{0,
 1,
 2,
 3,
 4,
 5,
 6,
 7,
 8,
 9,
 10,
 11,
 12,
 13,
 14,
 15,
 16,
 17,
 18,
 19,
 20,
 21,
 22,
 23}