You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

powc.cpp 1.3 kB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /**
  2. * \file dnn/src/common/powc.cpp
  3. * MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
  4. *
  5. * Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
  6. *
  7. * Unless required by applicable law or agreed to in writing,
  8. * software distributed under the License is distributed on an
  9. * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. */
  11. #include "megdnn/oprs/general.h"
  12. #include <cmath>
  13. #include "src/common/utils.h"
  14. using namespace megdnn;
  15. void PowC::exec(_megdnn_tensor_in src, _megdnn_tensor_out dst) {
  16. megdnn_assert(src.layout.dtype == dst.layout.dtype &&
  17. src.layout.dtype.category() == DTypeCategory::FLOAT &&
  18. src.layout.eq_shape(dst.layout),
  19. "invalid layout: %s vs %s", src.layout.to_string().c_str(),
  20. dst.layout.to_string().c_str());
  21. int iv, *ivp = nullptr;
  22. float fv, *fvp = nullptr;
  23. float p = param().exp;
  24. int pi = static_cast<int>(std::round(p));
  25. if (std::abs(static_cast<float>(pi) - p) <
  26. std::numeric_limits<float>::epsilon()) {
  27. iv = pi;
  28. ivp = &iv;
  29. } else {
  30. fv = p;
  31. fvp = &fv;
  32. }
  33. do_exec(src, dst, fvp, ivp);
  34. }
  35. // vim: syntax=cpp.doxygen

MegEngine 安装包中集成了使用 GPU 运行代码所需的 CUDA 环境,不用区分 CPU 和 GPU 版。 如果想要运行 GPU 程序,请确保机器本身配有 GPU 硬件设备并安装好驱动。 如果你想体验在云端 GPU 算力平台进行深度学习开发的感觉,欢迎访问 MegStudio 平台