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.

small_vector.cpp 1.6 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /**
  2. * \file dnn/src/common/small_vector.cpp
  3. * MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
  4. *
  5. * Copyright (c) 2014-2020 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/thin/small_vector.h"
  12. #include "src/common/utils.h"
  13. using namespace megdnn;
  14. void SmallVectorBase::on_invalid_at(size_t idx, size_t size) {
  15. megdnn_throw(ssprintf("invalid vector at(): idx=%zu size=%zu", idx, size));
  16. MEGDNN_MARK_USED_VAR(idx);
  17. MEGDNN_MARK_USED_VAR(size);
  18. }
  19. void SmallVectorBase::grow_pod(void* first_elm_ptr, size_t min_sz_in_bytes,
  20. size_t type_size) {
  21. size_t cur_sz_in_bytes = size_in_bytes();
  22. size_t new_capacity_in_bytes = 2 * capacity_in_bytes() + type_size;
  23. if (new_capacity_in_bytes < min_sz_in_bytes) {
  24. new_capacity_in_bytes = min_sz_in_bytes;
  25. }
  26. void* new_begin;
  27. if (first_elm_ptr == m_begin_ptr) {
  28. new_begin = malloc(new_capacity_in_bytes);
  29. memcpy(new_begin, m_begin_ptr, cur_sz_in_bytes);
  30. } else {
  31. new_begin = realloc(this->m_begin_ptr, new_capacity_in_bytes);
  32. }
  33. this->m_begin_ptr = new_begin;
  34. this->m_end_ptr = static_cast<char*>(this->m_begin_ptr) + cur_sz_in_bytes;
  35. this->m_capacity_ptr =
  36. static_cast<char*>(this->m_begin_ptr) + new_capacity_in_bytes;
  37. }
  38. // vim: syntax=cpp.doxygen

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