Due to the limited functionality of MATLAB CUDA kernel objects, I am in a situation where I need to create pRNGs (Mersenne Twister for maximum quality) random numbers without the use of special input types or multiple functions.
Requirement of this function:
This function has the ability to, in a 500000 iteration “for” loop, generate a new random decimal number in the interval [0,1] at every iteration.
So within a single CUDA function i.e
__global__ myFunction()
{
int threadsPerBlock = blockDim.x * blockDim.y;
int blockId = blockIdx.x + (blockIdx.y * gridDim.x);
int threadId = threadIdx.x + (threadIdx.y * blockDim.x);
int globalIdx = (blockId * threadsPerBlock) + threadId;
///code here///
}
Is such a feat possible? Does the code for this already exist?
Thanks so much and forgive me for my ignorance of the Mersenne Twister implementation. I tried to answer this question myself but could not understand how Mersenne Twister is implemented.
Also, I don’t know if it matters, but I need a solution for CUDA 6.0.