注意此问题可视为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
是模拟参数并且与模拟长度成比例,因此所有模拟都是相同的。Cpus
是OMP_NUM_THREADS
和--cpus-per-task
total_time
是python脚本运行的时间。var_time
是实际模拟时间,减去39s的常数
来自total_time
,因为它与编译时间有关。我不知道为什么会发生这种情况。这可能与磁盘有关吗?
我测试了线性和非线性求解器的所有组合,并且它们都没有受益于并行处理。完全可能是我的模型本身不适合并行化。至少现在我知道我的特定模拟的最佳解算器组合。
以下是您感到好奇的全部信息:
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