alloc check for RNG (#179)
* missing alloc validation in RandomGenerator for CUDA Signed-off-by: raver119 <raver119@gmail.com> * set error message if rng alloc failed Signed-off-by: raver119 <raver119@gmail.com> * check for error code during RNG creation in java Signed-off-by: raver119 <raver119@gmail.com>master
parent
25db3a44f1
commit
256c9d20b0
|
@ -3602,7 +3602,13 @@ void deleteGraphContext(nd4j::graph::Context* ptr) {
|
|||
|
||||
|
||||
nd4j::graph::RandomGenerator* createRandomGenerator(Nd4jLong rootSeed, Nd4jLong nodeSeed) {
|
||||
return new nd4j::graph::RandomGenerator(rootSeed, nodeSeed);
|
||||
try {
|
||||
return new nd4j::graph::RandomGenerator(rootSeed, nodeSeed);
|
||||
} catch (std::exception &e) {
|
||||
nd4j::LaunchContext::defaultContext()->errorReference()->setErrorCode(1);
|
||||
nd4j::LaunchContext::defaultContext()->errorReference()->setErrorMessage(e.what());
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
Nd4jLong getRandomGeneratorRootState(nd4j::graph::RandomGenerator* ptr) {
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include <chrono>
|
||||
#include <array/DataTypeUtils.h>
|
||||
#include <helpers/logger.h>
|
||||
#include <stdexcept>
|
||||
|
||||
#ifdef __CUDACC__
|
||||
#include <cuda.h>
|
||||
|
@ -46,7 +47,10 @@ namespace nd4j {
|
|||
public:
|
||||
void *operator new(size_t len) {
|
||||
void *ptr;
|
||||
cudaHostAlloc(&ptr, len, cudaHostAllocDefault);
|
||||
auto res = cudaHostAlloc(&ptr, len, cudaHostAllocDefault);
|
||||
if (res != 0)
|
||||
throw std::runtime_error("CudaManagedRandomGenerator: failed to allocate memory");
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,10 @@ public class CudaNativeRandom extends NativeRandom {
|
|||
public void init() {
|
||||
nativeOps = NativeOpsHolder.getInstance().getDeviceNativeOps();
|
||||
statePointer = nativeOps.createRandomGenerator(this.seed, this.seed ^ 0xdeadbeef);
|
||||
|
||||
if (nativeOps.lastErrorCode() != 0)
|
||||
throw new RuntimeException(nativeOps.lastErrorMessage());
|
||||
|
||||
setSeed(seed);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue