gelu.h 955 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include <cuda.h>
  3. #include <cuda_fp16.h>
  4. #include <stdio.h>
  5. #include "custom_cuda_layers.h"
  6. template <typename T>
  7. class Gelu {
  8. public:
  9. struct Config {
  10. uint32_t intermediate_size;
  11. Config(uint32_t inter_size) : intermediate_size(inter_size) {}
  12. };
  13. Gelu(const Config& config) : _config(config) {}
  14. virtual ~Gelu() {}
  15. void ForwardWithBiasAdd(int bsz,
  16. const T* input_buf,
  17. const T* bias,
  18. T* output,
  19. cudaStream_t stream)
  20. {
  21. launch_bias_gelu<T>(input_buf, bias, output, _config.intermediate_size, bsz, stream);
  22. }
  23. void Backward(int bsz, T* d_output, const T* input_buf, const T* bias, cudaStream_t stream)
  24. {
  25. launch_d_gelu<T>(d_output, input_buf, bias, _config.intermediate_size, bsz, stream);
  26. }
  27. private:
  28. Config _config;
  29. };