76 lines
1.8 KiB
C++
76 lines
1.8 KiB
C++
// Copyright (C) 2015 Davis E. King (davis@dlib.net)
|
|
// License: Boost Software License See LICENSE.txt for the full license.
|
|
#ifndef DLIB_DNN_CuRAND_H_
|
|
#define DLIB_DNN_CuRAND_H_
|
|
|
|
#ifdef DLIB_USE_CUDA
|
|
|
|
#include "tensor.h"
|
|
#include "cuda_errors.h"
|
|
#include "cuda_data_ptr.h"
|
|
|
|
namespace dlib
|
|
{
|
|
namespace cuda
|
|
{
|
|
|
|
// -----------------------------------------------------------------------------------
|
|
|
|
class curand_generator
|
|
{
|
|
public:
|
|
// not copyable
|
|
curand_generator(const curand_generator&) = delete;
|
|
curand_generator& operator=(const curand_generator&) = delete;
|
|
|
|
curand_generator() : curand_generator(0) {}
|
|
curand_generator(unsigned long long seed);
|
|
~curand_generator();
|
|
|
|
void fill (
|
|
cuda_data_ptr<unsigned int>& data
|
|
);
|
|
/*!
|
|
ensures
|
|
- Fills data with random 32-bit unsigned integers.
|
|
!*/
|
|
|
|
void fill_gaussian (
|
|
tensor& data,
|
|
float mean = 0,
|
|
float stddev = 1
|
|
);
|
|
/*!
|
|
requires
|
|
- data.size()%2 == 0
|
|
- stddev >= 0
|
|
ensures
|
|
- Fills data with random numbers drawn from a Gaussian distribution
|
|
with the given mean and standard deviation.
|
|
!*/
|
|
|
|
void fill_uniform (
|
|
tensor& data
|
|
);
|
|
/*!
|
|
ensures
|
|
- Fills data with uniform random numbers in the range (0.0, 1.0].
|
|
!*/
|
|
|
|
private:
|
|
|
|
void* handle;
|
|
};
|
|
|
|
// -----------------------------------------------------------------------------------
|
|
|
|
}
|
|
}
|
|
|
|
#endif // DLIB_USE_CUDA
|
|
|
|
#endif // DLIB_DNN_CuRAND_H_
|
|
|
|
|
|
|