SMAUG
Simulating Machine Learning Applications on gem5-Aladdin
ref_elu_op.cpp
1 #include "smaug/core/backend.h"
3 #include "smaug/operators/elu_op.h"
4 #include "smaug/operators/ref/ref_activation_fun_op.h"
5 
6 namespace smaug {
7 
8 template <>
9 void EluOp<ReferenceBackend>::run() {
10  auto inputs = getInput(Inputs);
11  auto outputs = getOutput(Outputs);
12  assert(inputs->getShape() == outputs->getShape());
13  float* inputData = inputs->data<float>();
14  float* outputData = outputs->data<float>();
15  mapArrayToAccel(ref::kEltwiseOpHw, "inputs", inputData,
16  inputs->getShape().storageSize() * sizeof(float));
17  mapArrayToAccel(ref::kEltwiseOpHw, "results", outputData,
18  inputs->getShape().storageSize() * sizeof(float));
19  activation_type function = activation_type::ELU;
20  activation_param_t params;
21  params.alpha = alpha;
22  invokeKernel(ref::kEltwiseOpHw, ref_activation_fun_nc, inputData,
23  outputData, inputs->getShape().size(), function, params);
24 }
25 
26 template <>
27 void SeluOp<ReferenceBackend>::run() {
28  auto inputs = getInput(Inputs);
29  auto outputs = getOutput(Outputs);
30  assert(inputs->getShape() == outputs->getShape());
31  float* inputData = inputs->data<float>();
32  float* outputData = outputs->data<float>();
33  mapArrayToAccel(ref::kEltwiseOpHw, "inputs", inputData,
34  inputs->getShape().storageSize() * sizeof(float));
35  mapArrayToAccel(ref::kEltwiseOpHw, "results", outputData,
36  inputs->getShape().storageSize() * sizeof(float));
37  activation_type function = activation_type::SELU;
38  activation_param_t params;
39  params.alpha = alpha;
40  params.lambda = lambda;
41  invokeKernel(ref::kEltwiseOpHw, ref_activation_fun_nc, inputData,
42  outputData, inputs->getShape().size(), function, params);
43 }
44 
45 } // namespace smaug
activation_type
enum _activation_type activation_type
The activation function to apply to an operator's output in hardware.
ref_activation_fun_nc
void ref_activation_fun_nc(float *inputs, float *results, int inputs_size, activation_type function, activation_param_t params)
Top level entry point for all Reference activation functions.
Definition: ref_activation_fun_op.cpp:8
_activation_param_t
Parameters to the activation function hardware.
Definition: common.h:194
smaug
The smaug namespace is the parent namespace of all C++ code in SMAUG.
Definition: backend.cpp:38
common.h
Utilities for writing and invoking Aladdin kernels from Operators.
smaug::mapArrayToAccel
void mapArrayToAccel(unsigned reqCode, const char *arrayName, void *baseAddr, size_t size)
Maps an array of data to the accelerator.
Definition: common.cpp:12
smaug::invokeKernel
void invokeKernel(int accelIdx, unsigned reqCode, const Kernel &kernel, Args &&... args)
The generic blocking interface for all accelerator kernel functions.
Definition: common.h:72