Utilities

HPPL Base

hl_base.h

Defines

HL_FLOAT_MAX

HPPL data type: real (float or double)

if real == float

HL_FLOAT_MAX: 3.40282347e+38F

HL_FLOAT_MIN: 1.17549435e-38F

HL_FLOAT_MIN

if real == double

HL_FLOAT_MAX: 1.7976931348623157e+308

HL_FLOAT_MIN: 2.2250738585072014e-308

EXP_MAX_INPUT

The maximum input value for exp, used to avoid overflow problem.

Currently only used for tanh function.

DIVUP(x, y)

DIVUP(x, y) is similar to ceil(x / y).

Note
For CUDA, DIVUP will be used to specify the size of blockDim.

Typedefs

typedef struct _hl_matrix_s *hl_matrix_s
typedef struct _hl_sparse_matrix_s *hl_sparse_matrix_s

Enums

enum hl_stream_t

HPPL CUDA Stream.

HPPL is an internal high performance parallel computing library for high-level neural network routines, which can support many heterogeneous compute architectures, such as GPU, FPGA, etc.

Note
Each thread can use HPPL_STREAM_* after calling hl_init. HPPL_STREAM_DEFAULT is HPPL default stream.

Values:

HPPL_STREAM_DEFAULT = 0
HPPL_STREAM_1 = 1
HPPL_STREAM_2 = 2
HPPL_STREAM_3 = 3
HPPL_STREAM_4 = 4
HPPL_THREAD_STREAM_1 = 5
HPPL_THREAD_STREAM_2 = 6
HPPL_THREAD_STREAM_3 = 7
HPPL_THREAD_STREAM_4 = 8
HPPL_STREAM_END
enum hl_activation_mode_t

HPPL activation mode.

Values:

HL_ACTIVATION_SIGMOID = 0
HL_ACTIVATION_RELU = 1
HL_ACTIVATION_TANH = 2
HL_ACTIVATION_LINEAR = 3
HL_ACTIVATION_END
enum hl_trans_op_t

Transpose type.

Values:

HPPL_OP_N = 0
HPPL_OP_T = 1
HPPL_OP_END
enum hl_matrix_value_t

Sparse matrix value type.

Values:

HL_NO_VALUE = 0
HL_FLOAT_VALUE = 1
HL_VALUE_END
enum hl_matrix_format_t

HPPL matrix format.

Values:

HL_SPARSE_CSR = 0
HL_SPARSE_CSC = 1
HL_SPARSE_END
struct hl_lstm_value
#include <hl_base.h>

Lstm value.

Parameters
  • gateValue: input value.
  • prevStateValue: previous state value.
  • stateValue: state value.
  • stateActiveValue: state active value.
  • outputValue: output value.

Public Members

real *gateValue
real *prevStateValue
real *stateValue
real *stateActiveValue
real *outputValue
real *checkIg
real *checkFg
real *checkOg
struct hl_lstm_grad
#include <hl_base.h>

Lstm gradient.

Parameters
  • gateGrad: input gradient.
  • prevStateGrad: previous state gradient.
  • stateGrad: state gradient.
  • stateActiveGrad: state active gradient.
  • outputGrad: output gradient.

Public Members

real *gateGrad
real *prevStateGrad
real *stateGrad
real *stateActiveGrad
real *outputGrad
real *checkIgGrad
real *checkFgGrad
real *checkOgGrad
struct hl_gru_value
#include <hl_base.h>

Gru value.

Parameters
  • gateWeight: gate weight (updateGate + resetGate).
  • stateWeight: frame state weight.
  • gateValue: gate value results.
  • resetOutputValue: resetOutput value.
  • outputValue: output value.
  • prevOutValue: previous output value.

Public Members

real *gateWeight
real *stateWeight
real *gateValue
real *resetOutputValue
real *outputValue
real *prevOutValue
struct hl_gru_grad
#include <hl_base.h>

Gru gradient.

Parameters
  • gateWeightGrad: gate weight gradient.
  • stateWeightGrad: frame state weight gradient.
  • gateGrad: gate gradient results.
  • resetOutputGrad: resetOutput gradient.
  • outputGrad: output gradient.
  • prevOutGrad: previous output gradient.

Public Members

real *gateWeightGrad
real *stateWeightGrad
real *gateGrad
real *resetOutputGrad
real *outputGrad
real *prevOutGrad
struct _hl_sparse_matrix_s
#include <hl_base.h>

HPPL sparse matrix.

Parameters
  • matrix: sparse matrix.
  • format: matrix format.
  • type: the type of matrix values.
  • rows: matrix rows.
  • cols: matrix columns.
  • nnz: nonzero values of sparse matrix.

Public Members

hl_matrix_s matrix
hl_matrix_format_t format
hl_matrix_value_t type
int rows
int cols
size_t nnz

Timer

hl_time.h

Functions

int64_t getCurrentTimeStick(void)

High resolution timer.

Return
int64_t the representation value of the object as a count of periods, which are not necessarily seconds.
Note
It is used to generate random perturbation parameters.

Thread Resource

hl_thread.ph

Defines

HL_THREAD_PH_

Typedefs

typedef struct _hl_thread_resource *hl_thread_resource

Functions

void hl_cudnn_init(cudnnHandle_t *cudnn_handle, cudaStream_t stream)

Initialize cudnn.

Parameters
  • cudnn_handle: Cudnn handle.
  • stream: Cudnn stream.

void hl_cublas_init(cublasHandle_t *cublas_handle, cudaStream_t stream)

Initialize cublas.

Parameters
  • cublas_handle: Cublas handle.
  • stream: Cuda stream.

void hl_cudnn_desc_init(cudnnTensorDescriptor_t *cudnn_desc)

Initialize cudnn tensor descriptor.

Parameters
  • cudnn_desc: Cudnn tensor descriptor.

Variables

__thread _hl_thread_resource t_resource

thread resource.

struct _hl_thread_resource

Thread resource structure.

Parameters
  • stream[HPPL_STREAM_END]: Stream for thread.
  • handle: Cublas Handle.
  • gen: Curand Generator.
  • cudnn_handle: Cudnn handle.
  • cudnn_desc: Cudnn image descriptor.
  • *gen_mutex: Gen lock.
  • *gpu_mem: HPPL GPU Memory.
  • *cpu_mem: HPPL CPU Memory.
  • event: gpu_mem event.
  • device: Thread device context.
  • major: Compute capability.
  • is_init: Thread init or not.

Public Members

cudaStream_t stream[HPPL_STREAM_END]
cublasHandle_t handle
curandGenerator_t gen
cudnnHandle_t cudnn_handle
cudnnTensorDescriptor_t cudnn_desc
pthread_mutex_t *gen_mutex
real *gpu_mem
real *cpu_mem
cudaEvent_t event
int device
int major
bool is_init