add seed to random number initialization
This commit is contained in:
@ -41,14 +41,15 @@ CudaBase::~CudaBase() {
|
||||
/*
|
||||
create curandStates
|
||||
*/
|
||||
int CudaBase::cuda_createCurandStates(int size) {
|
||||
int CudaBase::cuda_createCurandStates(int size, int seed) {
|
||||
|
||||
if (defaultRndSet == 1)
|
||||
cuda_deleteCurandStates();
|
||||
|
||||
int threads = 128;
|
||||
int blocks = size / threads + 1;
|
||||
int seed = time(NULL);
|
||||
if (seed == -1)
|
||||
seed = time(NULL);
|
||||
|
||||
//std::cout << "sizeof: " << sizeof(curandState) << std::endl;
|
||||
cudaMalloc(&defaultRndState, sizeof(curandState)*size);
|
||||
|
@ -41,7 +41,7 @@ public:
|
||||
* and create a curandState with different seed for each array entry.
|
||||
* Return success or error code
|
||||
*/
|
||||
int cuda_createCurandStates(int size);
|
||||
int cuda_createCurandStates(int size, int seed = -1);
|
||||
|
||||
/**
|
||||
* Delete curandState.
|
||||
|
@ -807,9 +807,9 @@ int DKSBase::callCollimatorPhysicsSortSoA(void *label_ptr, void *localID_ptr,
|
||||
}
|
||||
|
||||
|
||||
int DKSBase::callInitRandoms(int size) {
|
||||
int DKSBase::callInitRandoms(int size, int seed) {
|
||||
if (apiCuda())
|
||||
return CUDA_SAFECALL(cbase->cuda_createCurandStates(size));
|
||||
return CUDA_SAFECALL(cbase->cuda_createCurandStates(size, seed));
|
||||
else if (apiOpenCL())
|
||||
return OPENCL_SAFECALL(oclbase->ocl_createRndStates(size));
|
||||
else if (apiOpenMP())
|
||||
|
@ -1074,7 +1074,7 @@ public:
|
||||
* Init random number states and save for reuse on device.
|
||||
* TODO: opencl and mic implementations.
|
||||
*/
|
||||
int callInitRandoms(int size);
|
||||
int callInitRandoms(int size, int seed = -1);
|
||||
|
||||
/**
|
||||
* Integration code from ParallelTTracker from OPAL.
|
||||
|
Reference in New Issue
Block a user