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.

workspace_wrapper.cpp 1.4 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "test/common/workspace_wrapper.h"
  2. #include "test/common/utils.h"
  3. namespace megdnn {
  4. namespace test {
  5. WorkspaceWrapper::WorkspaceWrapper() : WorkspaceWrapper(nullptr, 0) {}
  6. WorkspaceWrapper::WorkspaceWrapper(Handle* handle, size_t size_in_bytes)
  7. : m_handle(handle) {
  8. m_workspace.size = size_in_bytes;
  9. if (m_workspace.size > 0) {
  10. m_workspace.raw_ptr =
  11. static_cast<dt_byte*>(megdnn_malloc(handle, size_in_bytes));
  12. } else {
  13. m_workspace.raw_ptr = nullptr;
  14. }
  15. }
  16. void WorkspaceWrapper::update(size_t size_in_bytes) {
  17. megdnn_assert(this->valid());
  18. if (size_in_bytes > m_workspace.size) {
  19. // free workspace
  20. if (m_workspace.size > 0) {
  21. megdnn_free(m_handle, m_workspace.raw_ptr);
  22. m_workspace.raw_ptr = nullptr;
  23. }
  24. // alloc new workspace
  25. m_workspace.size = size_in_bytes;
  26. if (m_workspace.size > 0) {
  27. m_workspace.raw_ptr =
  28. static_cast<dt_byte*>(megdnn_malloc(m_handle, size_in_bytes));
  29. } else {
  30. m_workspace.raw_ptr = nullptr;
  31. }
  32. }
  33. }
  34. WorkspaceWrapper::~WorkspaceWrapper() {
  35. if (m_workspace.size > 0) {
  36. megdnn_free(m_handle, m_workspace.raw_ptr);
  37. m_workspace.raw_ptr = nullptr;
  38. }
  39. }
  40. } // namespace test
  41. } // namespace megdnn
  42. // vim: syntax=cpp.doxygen