OMPython + SLURM通过添加核心来降低性能

时间:2018-01-09 18:16:45

标签: python performance openmp slurm openmodelica

注意此问题可视为previous problem的后续内容。

背景

我需要运行块模拟。我已经使用OMEdit来创建系统,我调用omc来使用带有zmq的OMPython进行模拟以进行消息传递。模拟工作正常但现在我需要将其移动到服务器以长时间模拟系统。

由于服务器是由一群人共享的,因此它使用slurm对作业进行排队。服务器有32个核心,但他们让我在调整脚本时只使用8个,然后在我想运行最终模拟时使用24个。

我已经配置了slurm以下列方式调用我的脚本:

#!/bin/bash 
#
#SBATCH --job-name=simulation_Test_ADC2_pipe_4096s
#SBATCH --output=simulation_Test_ADC2_pipe_4096s.txt 
#
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=8
#SBATCH --time=10:00
#SBATCH --mem-per-cpu=10000
source activate /home/jabozzo/conda_envs/py27
#which python
OMP_NUM_THREADS=8 python ./Test_ADC2_pipe_4096s.py

由于我无法仅使用--cpus-per-task限制模拟使用的核心数量,因此我还要使用OMP_NUM_THREADS(有关详细信息,请参阅上一个问题)。模拟运行良好,并将自己限制为分配的核心数。

问题

添加内核时,模拟速度不会增加。它实际上是一个很大的因素。以下是我做过的一些测量:

constant_time = 39s
| samples | cpus | total_time | var_time (total-constant_time) |
    10        1      1m 03s      24s
    10        4      1m 20s      41s
    10        8      1m 31s      52s
    10       16      1m 42s      63s
  • Samples是模拟参数并且与模拟长度成比例,因此所有模拟都是相同的。
  • CpusOMP_NUM_THREADS--cpus-per-task
  • 的值
  • total_time是python脚本运行的时间。
  • var_time是实际模拟时间,减去39s的常数 来自total_time,因为它与编译时间有关。

我不知道为什么会发生这种情况。这可能与磁盘有关吗?

更新1:测量

我测试了线性和非线性求解器的所有组合,并且它们都没有受益于并行处理。完全可能是我的模型本身不适合并行化。至少现在我知道我的特定模拟的最佳解算器组合。

以下是您感到好奇的全部信息:

constant_time = 39s
samples | cpu |       time        |             method           
-------------------------------------------------------------------
   10   |  8  | Integrator failed |    -ls=lis -nls=*          
   10   |  8  |  0:01:06.073854   |    -ls=klu -nls=hybrid     
   10   |  8  |  0:01:06.142541   |    -ls=klu -nls=homotopy    
   10   |  8  |  0:01:06.477493   |    -ls=klu -nls=newton     
   10   |  8  |  0:01:06.568340   |    -ls=klu -nls=kinsol     
   10   |  8  |  0:01:06.691057   |    -ls=klu -nls=mixed     
   10   |  8  |  0:01:14.684557   |    -ls=umfpack -nls=hybrid   
   10   |  8  |  0:01:14.890654   |    -ls=umfpack -nls=kinsol   
   10   |  8  |  0:01:15.113751   |    -ls=umfpack -nls=newton   
   10   |  8  |  0:01:15.152941   |    -ls=umfpack -nls=mixed   
   10   |  8  |  0:01:15.517794   |    -ls=umfpack -nls=homotopy  
   10   |  8  |  0:01:24.576667   |    -ls=lapack -nls=hybrid   
   10   |  8  |  0:01:30.822958   |    -ls=lapack -nls=mixed    
   10   |  8  |  0:01:31.096336   |    -ls=lapack -nls=newton   
   10   |  8  |  0:01:32.346660   |    -ls=lapack -nls=kinsol   
   10   |  8  |  0:01:33.206928   |    -ls=lapack -nls=homotopy  
   10   |  8  |  0:02:09.299385   |    -ls=totalpivot -nls=newton 
   10   |  8  |  0:02:09.584320   |    -ls=totalpivot -nls=mixed  
   10   |  8  |  0:02:10.153360   |    -ls=totalpivot -nls=kinsol 
   10   |  8  |  0:02:10.221089   |    -ls=totalpivot -nls=hybrid 
   10   |  8  |  0:02:10.451674   |    -ls=totalpivot -nls=homotopy
-------------------------------------------------------------------
   10   |  4  | Integrator failed |    -ls=lis -nls=*          
   10   |  4  |  0:01:06.371825   |    -ls=klu -nls=homotopy    
   10   |  4  |  0:01:06.429397   |    -ls=klu -nls=mixed     
   10   |  4  |  0:01:06.583910   |    -ls=klu -nls=newton     
   10   |  4  |  0:01:06.838422   |    -ls=klu -nls=hybrid     
   10   |  4  |  0:01:06.948438   |    -ls=klu -nls=kinsol     
   10   |  4  |  0:01:13.780854   |    -ls=umfpack -nls=mixed   
   10   |  4  |  0:01:14.519788   |    -ls=umfpack -nls=kinsol   
   10   |  4  |  0:01:14.752058   |    -ls=umfpack -nls=homotopy  
   10   |  4  |  0:01:14.752473   |    -ls=umfpack -nls=newton   
   10   |  4  |  0:01:15.241889   |    -ls=umfpack -nls=hybrid   
   10   |  4  |  0:01:17.395550   |    -ls=lapack -nls=hybrid   
   10   |  4  |  0:01:23.474006   |    -ls=lapack -nls=newton   
   10   |  4  |  0:01:24.191592   |    -ls=lapack -nls=mixed    
   10   |  4  |  0:01:24.447797   |    -ls=lapack -nls=homotopy  
   10   |  4  |  0:01:24.859954   |    -ls=lapack -nls=kinsol   
   10   |  4  |  0:02:08.701093   |    -ls=totalpivot -nls=homotopy
   10   |  4  |  0:02:09.668870   |    -ls=totalpivot -nls=hybrid 
   10   |  4  |  0:02:09.797309   |    -ls=totalpivot -nls=mixed  
   10   |  4  |  0:02:09.965805   |    -ls=totalpivot -nls=kinsol 
   10   |  4  |  0:02:10.427495   |    -ls=totalpivot -nls=newton 
-------------------------------------------------------------------
   10   |  2  | Integrator failed |    -ls=lis -nls=*    
   10   |  2  |  0:01:05.391883   |    -ls=klu -nls=newton     
   10   |  2  |  0:01:05.503954   |    -ls=klu -nls=mixed     
   10   |  2  |  0:01:06.430987   |    -ls=klu -nls=hybrid     
   10   |  2  |  0:01:06.980129   |    -ls=klu -nls=homotopy    
   10   |  2  |  0:01:07.248639   |    -ls=klu -nls=kinsol     
   10   |  2  |  0:01:12.760185   |    -ls=lapack -nls=hybrid   
   10   |  2  |  0:01:13.615821   |    -ls=umfpack -nls=homotopy  
   10   |  2  |  0:01:13.663998   |    -ls=umfpack -nls=hybrid   
   10   |  2  |  0:01:13.787998   |    -ls=umfpack -nls=newton   
   10   |  2  |  0:01:13.950495   |    -ls=umfpack -nls=mixed   
   10   |  2  |  0:01:15.701129   |    -ls=umfpack -nls=kinsol   
   10   |  2  |  0:01:19.168938   |    -ls=lapack -nls=newton   
   10   |  2  |  0:01:19.886090   |    -ls=lapack -nls=kinsol   
   10   |  2  |  0:01:20.082878   |    -ls=lapack -nls=mixed    
   10   |  2  |  0:01:20.549771   |    -ls=lapack -nls=homotopy  
   10   |  2  |  0:02:09.020501   |    -ls=totalpivot -nls=kinsol 
   10   |  2  |  0:02:09.234483   |    -ls=totalpivot -nls=newton 
   10   |  2  |  0:02:09.277363   |    -ls=totalpivot -nls=homotopy
   10   |  2  |  0:02:09.594828   |    -ls=totalpivot -nls=hybrid 
   10   |  2  |  0:02:09.985678   |    -ls=totalpivot -nls=mixed  
-------------------------------------------------------------------
   10   |  1  | Integrator failed |    -ls=lis -nls=*     
   10   |  1  |  0:00:53.794419   |    -ls=lapack -nls=hybrid   
   10   |  1  |  0:00:59.929421   |    -ls=lapack -nls=kinsol   
   10   |  1  |  0:01:00.532473   |    -ls=lapack -nls=newton   
   10   |  1  |  0:01:00.810815   |    -ls=lapack -nls=mixed    
   10   |  1  |  0:01:01.446853   |    -ls=lapack -nls=homotopy  
   10   |  1  |  0:01:07.081730   |    -ls=klu -nls=homotopy    
   10   |  1  |  0:01:07.193936   |    -ls=klu -nls=mixed     
   10   |  1  |  0:01:07.642832   |    -ls=klu -nls=hybrid     
   10   |  1  |  0:01:08.086962   |    -ls=klu -nls=kinsol     
   10   |  1  |  0:01:08.125929   |    -ls=klu -nls=newton     
   10   |  1  |  0:01:15.551880   |    -ls=umfpack -nls=newton   
   10   |  1  |  0:01:15.657809   |    -ls=umfpack -nls=mixed   
   10   |  1  |  0:01:15.683899   |    -ls=umfpack -nls=hybrid   
   10   |  1  |  0:01:15.767198   |    -ls=umfpack -nls=homotopy  
   10   |  1  |  0:01:15.956935   |    -ls=umfpack -nls=kinsol   
   10   |  1  |  0:02:10.154189   |    -ls=totalpivot -nls=newton 
   10   |  1  |  0:02:10.206857   |    -ls=totalpivot -nls=kinsol 
   10   |  1  |  0:02:10.803616   |    -ls=totalpivot -nls=homotopy
   10   |  1  |  0:02:10.848160   |    -ls=totalpivot -nls=mixed  
   10   |  1  |  0:02:11.545972   |    -ls=totalpivot -nls=hybrid 

0 个答案:

没有答案