Details
-
New Feature
-
Status: Open
-
Major
-
Resolution: Unresolved
-
SystemDS 3.2
-
None
Description
SystemDS's random number generation is based on a sequential number generation of
individual blocks of BlockSize x BlockSize. This makes the generation of matrices
parallelized at maximum at the number of blocks. This technique is inefficient on
GPUs. This project is to implement a Counter-based random generation of blocks
that work well on both CPU and GPU. The ideal implementation produce equivalent results to cuRAND.
https://docs.nvidia.com/cuda/curand/index.html
The design of this method should still generate values based on the block ID associated to make the generation compatible with spark, but inside each block, the values should be generated based on the Counter-based number generator.
The whole implementation should be something we can enable via a configuration flag, specifying that we generated based on the previous default, or this counter based one.