CPU Parallel Random Number Generator

Intel’s 2017 MKL random number generator functions do not provide parallel functions, but provide mechanisms to support multi-threaded generation. Some of these algorithms are bound by memory performance and run significantly faster when the array fits in the processor cache. These algorithms should scale well running on multiple cores when each array fits in non-shared […]

Read more "CPU Parallel Random Number Generator"

GPU Random Number Generators

NVIDIA has implemented several pseudo-random number generation (PRNG) algorithms that run on its family of powerful Graphics Processor Units (GPU). The GPU accelerates these algorithm by running them on its many computational cores, taking advantage of parallel computation, local embedded memory and high bandwidth external memory. The following graph compares performance of these algorithms, generating […]

Read more "GPU Random Number Generators"

Performance Limiters

Every computer system whether a laptop, a mobile device, a souped up desktop gaming system, or a distributed system in the cloud or on-premises, has many factors which limit performance. Limits such as memory bandwidth, cache bandwidth, number of cores, clock frequency of each core, network bandwidth, parallel instructions availability and capability, graphics processor computational […]

Read more "Performance Limiters"

Sorting Speed of Several Languages

Most computer programming languages provide built-in standard sorting algorithms. Let’s compare performance of these. C++ Sorting The above graph shows performance of the standard C++ STL sort algorithm. The vertical axis is time measured in seconds. The horizontal axis is array size of integers (32-bits each). Signed 32-bit integer values in the array are random […]

Read more "Sorting Speed of Several Languages"

Random Number Generator

Every programming language provides methods for generating random numbers, because random numbers are useful in so many situations. For years the C programming language only provided the rand() function, which generates 15 random bits per function call. To generate a 32-bit integer, it takes 3 calls to rand() to accumulate 32 bits. On my quad-core […]

Read more "Random Number Generator"