Skip to main content

Table 3 Overhead costs: d2o’s relative performance to numpy when scaling the array size and being run with one MPI-process

From: d2o: a distributed data object for parallel high-performance computing in Python

Array size

2\(^{\mathrm {0}}\) (%)

2\(^{\mathrm {2}}\) (%)

2\(^{\mathrm {4}}\) (%)

2\(^{\mathrm {6}}\) (%)

2\(^{\mathrm {8}}\) (2 KiB) (%)

2\(^{\mathrm {10}}\) (%)

2\(^{\mathrm {12}}\) (%)

2\(^{\mathrm {14}}\) (128 KiB) (%)

2\(^{\mathrm {16}}\) (%)

2\(^{\mathrm {18}}\) (%)

2\(^{\mathrm {20}}\) (8 MiB) (%)

\(2_{\mathrm {22}}\) (%)

2\(^{\mathrm {23}}\) (%)

2\(^{\mathrm {24}}\) (128 MiB) (%)

2\(^{\mathrm {25}}\) (%)

initialization

0.65

0.64

0.69

0.69

0.71

0.71

0.74

0.72

0.75

0.74

0.75

5.41

5.58

5.83

6.00

copy .empty

3.77

3.86

4.00

4.12

4.57

3.92

3.95

3.98

4.01

4.10

4.15

25.0

24.2

25.3

26.0

max

56.2

56.0

54.4

55.5

56.0

56.9

62.6

79.2

91.7

97.5

99.4

99.4

99.9

99.8

99.9

sum

59.7

59.0

57.5

60.1

58.6

59.8

62.5

74.8

88.4

95.9

99.0

99.3

99.7

99.7

100.0

obj[::-2]

1.18

1.17

1.20

1.24

1.34

1.50

2.14

4.77

15.0

22.2

28.7

24.1

45.8

47.3

47.7

copy

8.16

8.86

9.30

9.72

9. 66

10.4

14.8

26.7

65.8

95.5

98.7

99.1

99.9

99.4

98.4

obj \(+\) 0

6.58

6.48

6.67

7.08

7.37

9.51

16.2

35.0

65.2

34.7

44.7

98.7

99.7

96.5

100.0

obj \(+\) obj

3.07

3.10

3.24

3.59

3.98

5.70

13.3

31.9

64.0

34.6

45.0

98.7

99.9

99.5

99.8

obj \(+=\) obj

5.17

5.35

5.41

6.02

6.66

11.3

22.8

46.4

75.3

91.9

97.8

98.0

99.8

99.3

99.7

sqrt

3.25

3.17

3.26c

3.50

4.42

7.49

18.7

45.6

75.8

65.2

83.2

98.8

99.4

99.6

99.8

bincount

3.57

3.35

3.76

4.04

4.97

7.54

16.5

35.4

58.0

75.1

78.0

76.8

78.9

82.1

83.2

  1. “100 %” corresponds to the case when d2o is as fast as numpy. In order to guide the eye, values <30 % are printed italic, values ≥90 % are printed bold-italics. Please see "Scaling the array size" section for discussion