Partitioned Memory Parallel Programming Library (PMLIB) | |||||||||||||||||||||||||||||||||||||||||||||||||
Based on BSP-RAMP: Partitioned Memory Parallel Programming Framework | |||||||||||||||||||||||||||||||||||||||||||||||||
Prof. Subodh Kumar | Prof. Sorav Bansal | ||||||||||||||||||||||||||||||||||||||||||||||||
Tarun Beri | |||||||||||||||||||||||||||||||||||||||||||||||||
Indian Institute of Technology, Delhi | |||||||||||||||||||||||||||||||||||||||||||||||||
Square Matrix Multiplication | |||||||||||||||||||||||||||||||||||||||||||||||||
Experimental Configuration | 14 | ||||||||||||||||||||||||||||||||||||||||||||||||
Four 64-bit Ubuntu Linux 8.04.2 Eight Core Machines [Intel Xeon CPU E5450 3.00 GHz with 16 GB physical memory]; | 5 | ||||||||||||||||||||||||||||||||||||||||||||||||
Two machines have one Tesla C1060 GPU Card each | 9 | ||||||||||||||||||||||||||||||||||||||||||||||||
Watch Dog/Kernel Execution Timeout Disabled; mpiexec with 4 processes on different machines; | |||||||||||||||||||||||||||||||||||||||||||||||||
CUDA Version 3.1; OpenMPI Version 1.78; OpenMP Version 3.0; gcc Version 4.2.4 | |||||||||||||||||||||||||||||||||||||||||||||||||
Equal task partitioning among all processing elements | |||||||||||||||||||||||||||||||||||||||||||||||||
Square Matrix Dimension | Matrix Multiplication Time (in seconds) | ||||||||||||||||||||||||||||||||||||||||||||||||
Serial Task | 1 host CPU Task | 1 host GPU Task | 1 host Task CPU+GPU |
Cluster CPU Task | Cluster GPU Task | Cluster Task CPU+GPU |
|||||||||||||||||||||||||||||||||||||||||||
100 | 0.001 | 0.001 | 0.53 | 0.54 | 0.02 | 0.54 | 0.54 | ||||||||||||||||||||||||||||||||||||||||||
200 | 0.01 | 0.01 | 0.53 | 0.54 | 0.02 | 0.54 | 0.55 | ||||||||||||||||||||||||||||||||||||||||||
300 | 0.04 | 0.02 | 0.53 | 0.54 | 0.04 | 0.55 | 0.57 | ||||||||||||||||||||||||||||||||||||||||||
400 | 0.09 | 0.03 | 0.54 | 0.54 | 0.07 | 0.55 | 0.59 | ||||||||||||||||||||||||||||||||||||||||||
500 | 0.18 | 0.10 | 0.54 | 0.54 | 0.12 | 0.57 | 0.62 | ||||||||||||||||||||||||||||||||||||||||||
1000 | 5.22 | 0.77 | 0.66 | 0.89 | 0.60 | 0.72 | 0.92 | ||||||||||||||||||||||||||||||||||||||||||
1500 | 21.34 | 2.98 | 0.99 | 2.90 | 1.91 | 1.04 | 1.90 | ||||||||||||||||||||||||||||||||||||||||||
2000 | 45.91 | 6.15 | 1.63 | 6.73 | 3.50 | 1.56 | 3.67 | ||||||||||||||||||||||||||||||||||||||||||
2500 | 106.01 | 14.99 | 2.70 | 13.57 | 6.06 | 2.37 | 6.42 | ||||||||||||||||||||||||||||||||||||||||||
3000 | 172.24 | 25.61 | 4.29 | 24.35 | 11.20 | 3.50 | 9.95 | ||||||||||||||||||||||||||||||||||||||||||
3500 | 307.82 | 45.33 | 6.48 | 40.64 | 16.93 | 5.01 | 17.52 | ||||||||||||||||||||||||||||||||||||||||||
4000 | 433.02 | 65.62 | 9.46 | 57.08 | 22.31 | 6.94 | 22.31 | ||||||||||||||||||||||||||||||||||||||||||
4500 | 695.93 | 96.05 | 13.22 | 90.62 | 34.85 | 9.36 | 31.97 | ||||||||||||||||||||||||||||||||||||||||||
5000 | 919.17 | 126.21 | 18.05 | 126.20 | 42.70 | 12.32 | 42.78 | ||||||||||||||||||||||||||||||||||||||||||
Comparison of Serial and PMLIB Tasks | |||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||
Comparison of PMLIB Tasks | |||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
Comparison of Serial Task, Fastest PMLIB Task and Slowest PMLIB Task | |||||||||||||||||||||||||||||||||||||||||||||||||
Square Matrix Dimension | Matrix Multiplication Time (in seconds) | ||||||||||||||||||||||||||||||||||||||||||||||||
Serial Task | 1 host CPU Task | 1 host GPU Task | 1 host Task CPU+GPU |
Cluster CPU Task | Cluster GPU Task | Cluster Task CPU+GPU |
Fastest PMLIB Task | Slowest PMLIB Task | |||||||||||||||||||||||||||||||||||||||||
100 | 0.001 | 0.001 | 0.53 | 0.54 | 0.02 | 0.54 | 0.54 | 0.001 | 0.54 | ||||||||||||||||||||||||||||||||||||||||
200 | 0.01 | 0.01 | 0.53 | 0.54 | 0.02 | 0.54 | 0.55 | 0.01 | 0.55 | ||||||||||||||||||||||||||||||||||||||||
300 | 0.04 | 0.02 | 0.53 | 0.54 | 0.04 | 0.55 | 0.57 | 0.02 | 0.57 | ||||||||||||||||||||||||||||||||||||||||
400 | 0.09 | 0.03 | 0.54 | 0.54 | 0.07 | 0.55 | 0.59 | 0.03 | 0.59 | ||||||||||||||||||||||||||||||||||||||||
500 | 0.18 | 0.10 | 0.54 | 0.54 | 0.12 | 0.57 | 0.62 | 0.10 | 0.62 | ||||||||||||||||||||||||||||||||||||||||
1000 | 5.22 | 0.77 | 0.66 | 0.89 | 0.60 | 0.72 | 0.92 | 0.60 | 0.92 | ||||||||||||||||||||||||||||||||||||||||
1500 | 21.34 | 2.98 | 0.99 | 2.90 | 1.91 | 1.04 | 1.90 | 0.99 | 2.98 | ||||||||||||||||||||||||||||||||||||||||
2000 | 45.91 | 6.15 | 1.63 | 6.73 | 3.50 | 1.56 | 3.67 | 1.56 | 6.73 | ||||||||||||||||||||||||||||||||||||||||
2500 | 106.01 | 14.99 | 2.70 | 13.57 | 6.06 | 2.37 | 6.42 | 2.37 | 14.99 | ||||||||||||||||||||||||||||||||||||||||
3000 | 172.24 | 25.61 | 4.29 | 24.35 | 11.20 | 3.50 | 9.95 | 3.50 | 25.61 | ||||||||||||||||||||||||||||||||||||||||
3500 | 307.82 | 45.33 | 6.48 | 40.64 | 16.93 | 5.01 | 17.52 | 5.01 | 45.33 | ||||||||||||||||||||||||||||||||||||||||
4000 | 433.02 | 65.62 | 9.46 | 57.08 | 22.31 | 6.94 | 22.31 | 6.94 | 65.62 | ||||||||||||||||||||||||||||||||||||||||
4500 | 695.93 | 96.05 | 13.22 | 90.62 | 34.85 | 9.36 | 31.97 | 9.36 | 96.05 | ||||||||||||||||||||||||||||||||||||||||
5000 | 919.17 | 126.21 | 18.05 | 126.20 | 42.70 | 12.32 | 42.78 | 12.32 | 126.21 | ||||||||||||||||||||||||||||||||||||||||
Fastest LPC Task | Slowest LPC Task | ||||||||||||||||||||||||||||||||||||||||||||||||
Square Matrix Dimension | Matrix Multiplication Time (in seconds) | % Speedup of PMLIB Task over Serial Task | |||||||||||||||||||||||||||||||||||||||||||||||
Serial Task | Fastest PMLIB Task | Slowest PMLIB Task | Fastest PMLIB Task | Slowest PMLIB Task | |||||||||||||||||||||||||||||||||||||||||||||
100 | 0.001 | 0.001 | 0.54 | 94.36 | 0.24 | ||||||||||||||||||||||||||||||||||||||||||||
200 | 0.01 | 0.01 | 0.55 | 172.32 | 1.90 | ||||||||||||||||||||||||||||||||||||||||||||
300 | 0.04 | 0.02 | 0.57 | 184.28 | 6.23 | ||||||||||||||||||||||||||||||||||||||||||||
400 | 0.09 | 0.03 | 0.59 | 247.63 | 14.67 | Max PMLIB Speedup over Serial Task | |||||||||||||||||||||||||||||||||||||||||||
500 | 0.18 | 0.10 | 0.62 | 188.35 | 29.25 | 74.64x | |||||||||||||||||||||||||||||||||||||||||||
1000 | 5.22 | 0.60 | 0.92 | 868.15 | 569.52 | ||||||||||||||||||||||||||||||||||||||||||||
1500 | 21.34 | 0.99 | 2.98 | 2147.04 | 715.60 | ||||||||||||||||||||||||||||||||||||||||||||
2000 | 45.91 | 1.56 | 6.73 | 2942.27 | 682.07 | ||||||||||||||||||||||||||||||||||||||||||||
2500 | 106.01 | 2.37 | 14.99 | 4469.61 | 707.25 | ||||||||||||||||||||||||||||||||||||||||||||
3000 | 172.24 | 3.50 | 25.61 | 4927.79 | 672.46 | ||||||||||||||||||||||||||||||||||||||||||||
3500 | 307.82 | 5.01 | 45.33 | 6142.32 | 678.99 | ||||||||||||||||||||||||||||||||||||||||||||
4000 | 433.02 | 6.94 | 65.62 | 6242.61 | 659.92 | ||||||||||||||||||||||||||||||||||||||||||||
4500 | 695.93 | 9.36 | 96.05 | 7432.48 | 724.55 | ||||||||||||||||||||||||||||||||||||||||||||
5000 | 919.17 | 12.32 | 126.21 | 7463.53 | 728.27 | ||||||||||||||||||||||||||||||||||||||||||||
PMLIB Tasks slower than Serial Task | PMLIB Tasks faster than Serial Task | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||