diff options
author | Matti Picus <matti.picus@gmail.com> | 2019-05-31 16:25:27 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-31 16:25:27 +0300 |
commit | 392866d1c8dce0abb8cb327a42f8e134f5d2a05e (patch) | |
tree | f7db2105acf825b9217f16c5349cbb7ff8d4610a /doc/source/reference | |
parent | 0c70787c04d7b0febacb14edfe214cb68d87b6c3 (diff) | |
parent | 9695c1ff191b5d1d9fe6480a040baf320ce20d02 (diff) | |
download | numpy-392866d1c8dce0abb8cb327a42f8e134f5d2a05e.tar.gz |
Merge pull request #13665 from bashtage/rkern-pcg-patch
MAINT: Use intrinsics in Win64-PCG64
Diffstat (limited to 'doc/source/reference')
-rw-r--r-- | doc/source/reference/random/performance.rst | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/doc/source/reference/random/performance.rst b/doc/source/reference/random/performance.rst index 82efdab60..07867ee07 100644 --- a/doc/source/reference/random/performance.rst +++ b/doc/source/reference/random/performance.rst @@ -72,3 +72,72 @@ performance was computed using a geometric mean. .. note:: All timings were taken using Linux on a i5-3570 processor. + +Performance on different Operating Systems +****************************************** +Performance differs across platforms due to compiler and hardware availability +(e.g., register width) differences. The default bit generator has been chosen +to perform well on 64-bit platforms. Performance on 32-bit operating systems +is very different. + +The values reported are normalized relative to the speed of MT19937 in +each table. A value of 100 indicates that the performance matches the MT19937. +Higher values indicate improved performance. These values cannot be compared +across tables. + +64-bit Linux +~~~~~~~~~~~~ + +=================== ======= ========= ======= ======== ========== ============ +Distribution DSFMT MT19937 PCG64 Philox ThreeFry Xoshiro256 +=================== ======= ========= ======= ======== ========== ============ +32-bit Unsigned Int 99.3 100 113.9 72.1 48.3 117.1 +64-bit Unsigned Int 105.7 100 143.3 89.7 48.1 161.7 +Uniform 222.1 100 181.5 90.8 59.9 204.7 +Exponential 110.8 100 145.5 92.5 55.0 177.1 +Normal 113.2 100 121.4 98.3 71.9 162.0 +**Overall** 123.9 100 139.3 88.2 56.0 161.9 +=================== ======= ========= ======= ======== ========== ============ + + +64-bit Windows +~~~~~~~~~~~~~~ +The performance on 64-bit Linux and 64-bit Windows is broadly similar. + + +=================== ======= ========= ======= ======== ========== ============ +Distribution DSFMT MT19937 PCG64 Philox ThreeFry Xoshiro256 +=================== ======= ========= ======= ======== ========== ============ +32-bit Unsigned Int 122.8 100 134.9 44.1 72.3 133.1 +64-bit Unsigned Int 130.4 100 162.7 41.0 77.7 142.3 +Uniform 273.2 100 200.0 44.8 84.6 175.8 +Exponential 135.0 100 167.8 47.4 84.5 166.9 +Normal 115.3 100 135.6 60.3 93.6 169.6 +**Overall** 146.7 100 158.4 47.1 82.2 156.5 +=================== ======= ========= ======= ======== ========== ============ + +32-bit Windows +~~~~~~~~~~~~~~ + +The performance of 64-bit generators on 32-bit Windows is much lower than on 64-bit +operating systems due to register width. DSFMT uses SSE2 when available, and so is less +affected by the size of the operating system's register. MT19937, the generator that has been +in NumPy since 2005, operates on 32-bit integers and so is close to DSFMT. + +=================== ======= ========= ======= ======== ========== ============ +Distribution DSFMT MT19937 PCG64 Philox ThreeFry Xoshiro256 +=================== ======= ========= ======= ======== ========== ============ +32-bit Unsigned Int 110.9 100 30.6 28.1 29.2 74.4 +64-bit Unsigned Int 104.7 100 24.2 23.7 22.7 72.7 +Uniform 247.0 100 26.7 28.4 27.8 78.8 +Exponential 110.1 100 32.1 32.6 30.5 89.6 +Normal 107.2 100 36.3 37.5 35.2 93.0 +**Overall** 127.6 100 29.7 29.7 28.8 81.3 +=================== ======= ========= ======= ======== ========== ============ + + +.. note:: + + Linux timings used Ubuntu 18.04 and GCC 7.4. Windows timings were made on Windows 10 + using Microsoft C/C++ Optimizing Compiler Version 19 (Visual Studio 2015). All timings + were produced on a i5-3570 processor. |