multithreading - 我强大的本地计算机与另一台远程计算机上的MATLAB Quadprog极其慢

标签 multithreading matlab rhel quadprog quadratic-programming

我正在使用MATLAB的quadprog,它在我的本地计算机上运行非常慢。

当我在远程计算机上运行确切的代码时,它会在10分钟内完成。当我在本地计算机上运行它时,它甚至在24小时后也不会终止(我有时会杀死它)。

代码运行时,我的本地计算机上的内存使用量约为10GB RAM(而我的本地计算机具有约100GB的可用RAM)。远程计算机上的使用量为20-30GB RAM。

关于如何使它在我的本地计算机上更快运行的任何想法?

重要编辑10月18日:我在两台计算机上都执行了较小规模的问题。在本地计算机上需要1900秒,而在远程计算机上则需要8秒,增益约为240。这两台机器还具有多个多核处理器。我这次用htop注意到,远程计算机使用所有处理器,而本地计算机仅使用单个处理器(尽管所有其他处理器都可用)。 关于如何使MATLAB使用本地计算机上的所有处理器的任何想法?

一些注意事项:

1:H的nnz,Aeq =〜10e6,尺寸约为11e6 x 11e6

2:仅具有相等约束的四元编程具有封闭形式的解决方案(请参见Boyd)。当我使用封闭式解决方案解决它时,在本地计算机上花费约10分钟,而在远程计算机上花费5分钟。虽然两者都消耗〜20-30GB的内存。由于我想添加不平等约束,因此我希望能够在本地计算机上快速运行quadprog。

3:下面是我的机器vs远程机器上的cat /proc/cpuinfo(远程机器更强大,但是本地机器也更强大):14核vs 4核的 yield 约为x3.5(不占用多线程开销), AVX vs SSE的最大值约为x2。因此,这并不能解释我看到的240增益。另外,当我使用封闭形式的解决方案(而不是quadprog)时,与本地计算机相比,远程计算机的增益仅为x2。

4:我确定我正在运行64位版本,因为我看到内存消耗为10-15GB。

5:本地系统运行RHEL,远程系统运行ubuntu。

本地uname -a结果:

 Linux hostname 2.6.32-573.7.1.el6.x86_64 #1 SMP Thu Sep 10 13:42:16 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux    

远程uname -a结果:
 Linux hostname 3.13.0-65-generic #105-Ubuntu SMP Mon Sep 21 18:50:58 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux    

6:在计算机上启用了超线程。我用this脚本检查了它。

7:按照有人的建议启动并行池无济于事。

谢谢!

单个处理器的本地计算机cpu信息(在许多处理器中)
vendor_id       : GenuineIntel
cpu family      : 6
model           : 26
model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
stepping        : 5
microcode       : 25
cpu MHz         : 1600.000
cache size      : 8192 KB
physical id     : 1
siblings        : 8
core id         : 3
cpu cores       : 4
apicid          : 23
initial apicid  : 23
fpu             : yes
fpu_exception   : yes
cpui level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4532.68
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

单个处理器的远程计算机cpu信息(在许多处理器中)
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
stepping        : 2
microcode       : 0x2d
cpu MHz         : 1200.000
cache size      : 35840 KB
physical id     : 1
siblings        : 28
core id         : 14
cpu cores       : 14
apicid          : 61
initial apicid  : 61
fpu             : yes
fpu_exception   : yes
cpuid level     : 15
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips        : 5189.05
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

最佳答案

答案(除非与操作系统配置有关)与以下其中一项有关:

  • 远程计算机具有14个核心。如果该实现可以处理所有14个内核,它将从中受益匪浅。
  • 远程计算机Intel Xeon E5-2697 v3的CPU支持AVX和AVX 2.0。
    本地计算机的CPU Intel Xeon E5520仅支持SSE 4.2,并且频率较低。
    如果该算法可以利用这些矢量化函数(我认为2014b使用的MKL足够新)可以提高性能。

  • 考虑到所有这些可以解释您所看到的。

    关于multithreading - 我强大的本地计算机与另一台远程计算机上的MATLAB Quadprog极其慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181637/

    相关文章:

    java - 将事件分派(dispatch)线程置于搁置状态,直到 Swing 计时器停止

    java - 当多个线程在 Java 中的 System.in 上使用扫描程序时,stdin 数据会发生什么变化?

    python - 停止运行无限循环的 python 线程

    java - 在 Matlab 中将 java.util.HashMap 键转换为 vector

    java - Java ExecutorService死锁?

    matlab - 在 Matlab 中使用 sprintf?

    matlab - 如何加速 Eigen 库的矩阵乘积?

    linux - 可用空间/

    linux - RHEL 版本 5.5 (Tikanga),df --total 选项

    linux - 修改 SSH 警告 : Root Login Not Permitted