forked from apache/mxnet
-
Notifications
You must be signed in to change notification settings - Fork 1
Memory Efficiency Benchmarking
Anirudh Subramanian edited this page Sep 13, 2017
·
28 revisions
When we compare only storage for the sparse vs dense ndarray, we can see that we consume lesser peak memory for densities close to 10.24%(CSR). For RSP, we consume lesser peak memory for density upto 81.92%. (Note that the meaning of density for CSR is different from density of RSP. Please see below for explanation). We can also see that for dot operators we see significant memory savings for sparse data. For a density of 0.01% which is close to the density for real world datasets like kdda, avazu and criteo, we see that dot(csr, rsp) memory consumption is 65 times lesser compared to dot(dense, dense), and 30 times lesser compared to dot(csr, dense).
Dimensions: 128 * 1M
- Allocated a uniformly distributed ndarray for sparse and dense of shape (128, 1M) and compared peak memory consumption
Density(%) | Peak Memory Consumption (Sparse) | Peak Memory Consumption (Dense) | Ratio of Memory Consumption |
---|---|---|---|
0.01 | 29 | 1456 | 50.20689655 |
0.02 | 32 | 1456 | 45.5 |
0.04 | 34 | 1456 | 42.82352941 |
0.08 | 40 | 1456 | 36.4 |
0.16 | 53 | 1456 | 27.47169811 |
0.32 | 78 | 1456 | 18.66666667 |
0.64 | 130 | 1456 | 11.2 |
1.28 | 232 | 1456 | 6.275862069 |
2.56 | 437 | 1456 | 3.33180778 |
5.12 | 846 | 1456 | 1.721040189 |
10.24 | 1626 | 1456 | 0.895448954 |
- Allocated a uniformly distributed ndarray for rsp and dense of shape (1M, 256) and compared peak memory consumption
- NOTE: for rsp density doesn't mean number of nnzs / total elements in the matrix. the density is approximately equal to the ratio of non zero rows to the total number of rows (This is because rand_ndarray tries to generate a single dimension array with shape (shape[0]) with random values between 0 and 1 and selects only those indexes from array with values less than density. This array is used as the indices array and the rest are set to zeros. Thus the density is in most cases equal to the number of non zero rows/total rows)
Density(%) | Peak Memory Consumption (Sparse) | Peak Memory Consumption (Dense) | Ratio of Memory Consumption |
---|---|---|---|
0.01 | 52 | 2903 | 55.82692308 |
0.02 | 52 | 2903 | 55.82692308 |
0.04 | 52 | 2903 | 55.82692308 |
0.08 | 54 | 2903 | 53.75925926 |
0.16 | 56 | 2903 | 51.83928571 |
0.32 | 61 | 2903 | 47.59016393 |
0.64 | 70 | 2903 | 41.47142857 |
1.28 | 88 | 2903 | 32.98863636 |
2.56 | 126 | 2903 | 23.03968254 |
5.12 | 202 | 2903 | 14.37128713 |
10.24 | 351 | 2903 | 8.270655271 |
20.48 | 654 | 2903 | 4.43883792 |
40.96 | 1222 | 2903 | 2.375613748 |
81.92 | 2399 | 2903 | 1.210087536 |
- rhs_density is the same as lhs_density
- lhs_shape = (128, 1000000) , rhs_shape = (1000000, 256)
Density(%) | Peak Memory Consumption (Sparse) | Peak Memory Consumption (Dense) | Ratio of Memory Consumption |
---|---|---|---|
0.01 | 52 | 1575 | 30.28846154 |
0.02 | 52 | 1575 | 30.28846154 |
0.04 | 54 | 1575 | 29.16666667 |
0.08 | 57 | 1575 | 27.63157895 |
0.16 | 65 | 1575 | 24.23076923 |
0.32 | 87 | 1575 | 18.10344828 |
0.64 | 132 | 1575 | 11.93181818 |
1.28 | 221 | 1575 | 7.126696833 |
2.56 | 400 | 1575 | 3.9375 |
5.12 | 758 | 1575 | 2.077836412 |
10.24 | 1480 | 1575 | 1.064189189 |
- rhs_density is the same as lhs_density
- lhs_shape = (128, 1000000) , rhs_shape = (1000000, 256)
Density(%) | Peak Memory Consumption (Sparse) | Peak Memory Consumption (Dense) | Ratio of Memory Consumption |
---|---|---|---|
0.01 | 52 | 3380 | 65 |
0.02 | 52 | 3380 | 65 |
0.04 | 54 | 3380 | 62.59259259 |
0.08 | 57 | 3380 | 59.29824561 |
0.16 | 65 | 3380 | 52 |
0.32 | 87 | 3380 | 38.85057471 |
0.64 | 132 | 3380 | 25.60606061 |
1.28 | 221 | 3380 | 15.29411765 |
2.56 | 400 | 3380 | 8.45 |
5.12 | 758 | 3380 | 4.459102902 |
10.24 | 1480 | 3380 | 2.283783784 |