add_relu.cpp 1.16 KB
Newer Older
Paul's avatar
Paul committed
1
2
#include <migraphx/gpu/device/add_relu.hpp>
#include <migraphx/gpu/device/nary.hpp>
Paul's avatar
Paul committed
3

Paul's avatar
Paul committed
4
namespace migraphx {
Paul's avatar
Paul committed
5
inline namespace MIGRAPHX_INLINE_NS {
Paul's avatar
Paul committed
6
7
8
namespace gpu {
namespace device {

Paul's avatar
Paul committed
9
10
11
12
13
14
15
16
17
18
void mul_add_relu(hipStream_t stream,
              const argument& result,
              const argument& arg1,
              const argument& arg2,
              const argument& arg3)
{
    nary(stream, result, arg1, arg2, arg3)(
        [](auto x, auto a, auto b) { return std::max<decltype(a*x + b)>(0, a*x + b); });
}

Paul's avatar
Paul committed
19
20
21
22
void add_relu(hipStream_t stream,
              const argument& result,
              const argument& arg1,
              const argument& arg2)
Paul's avatar
Paul committed
23
{
Paul's avatar
Paul committed
24
25
    nary(stream, result, arg1, arg2)(
        [](auto x, auto y) { return std::max<decltype(x + y)>(0, x + y); });
Paul's avatar
Paul committed
26
27
}

Paul's avatar
Paul committed
28
29
void add_relu(hipStream_t stream,
              const argument& result,
Paul's avatar
Paul committed
30
31
32
33
              const argument& arg1,
              const argument& arg2,
              const argument& arg3)
{
Paul's avatar
Paul committed
34
    nary(stream, result, arg1, arg2, arg3)(
Paul's avatar
Paul committed
35
36
37
        [](auto x, auto y, auto z) { return std::max<decltype(x + y + z)>(0, x + y + z); });
}

Paul's avatar
Paul committed
38
39
} // namespace device
} // namespace gpu
Paul's avatar
Paul committed
40
} // namespace MIGRAPHX_INLINE_NS
Paul's avatar
Paul committed
41
} // namespace migraphx