[GitHub] [incubator-mxnet] eric-haibin-lin commented on a change in pull request #17376: [MXNET-1404] Implement storage tagging, the first half of the memory profiler
eric-haibin-lin commented on a change in pull request #17376: [MXNET-1404] Implement storage tagging, the first half of the memory profiler URL: https://github.com/apache/incubator-mxnet/pull/17376#discussion_r373242645 ## File path: src/profiler/gpu_memory_profiler.h ## @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +#ifndef MXNET_PROFILER_GPU_MEMORY_PROFILER_H_ +#define MXNET_PROFILER_GPU_MEMORY_PROFILER_H_ + +#include +#include +#include + +namespace mxnet { +namespace profiler { + +class GpuMemoryProfiler { + public: + /// \brief Get the global instance of the memory profiler + ///to record an allocation entry. + static GpuMemoryProfiler* Get(); + GpuMemoryProfiler(); + /// \brief Set/Get the profiler scope. + static void SetCurrentScope(const std::string& scope); + static std::string GetCurrentScope(); + /// \brief Record an allocation entry in the profiler. + void addEntry(const Storage::Handle& handle, Review comment: could you use CamelCase: AddEntry This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [incubator-mxnet] eric-haibin-lin commented on a change in pull request #17376: [MXNET-1404] Implement storage tagging, the first half of the memory profiler
eric-haibin-lin commented on a change in pull request #17376: [MXNET-1404] Implement storage tagging, the first half of the memory profiler URL: https://github.com/apache/incubator-mxnet/pull/17376#discussion_r373243452 ## File path: include/mxnet/ndarray.h ## @@ -1057,6 +1119,41 @@ class NDArray { bool IsDefault() const; #endif +/// \brief Cast storage type and auxiliary index to string, +///used for recording storage allocations. +inline std::string STypeToString() const { + if (storage_type == kUndefinedStorage) { +return "undef"; + } else if (storage_type == kRowSparseStorage) { +return "row_sparse"; + } else if (storage_type == kCSRStorage) { +return "csr"; + } else { +return "unknown"; + } +} Review comment: it exists in https://github.com/apache/incubator-mxnet/blob/master/src/common/utils.h#L386-L397 . can we reuse it? This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [incubator-mxnet] eric-haibin-lin commented on a change in pull request #17376: [MXNET-1404] Implement storage tagging, the first half of the memory profiler
eric-haibin-lin commented on a change in pull request #17376: [MXNET-1404] Implement storage tagging, the first half of the memory profiler URL: https://github.com/apache/incubator-mxnet/pull/17376#discussion_r373277999 ## File path: src/profiler/gpu_memory_profiler.h ## @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +#ifndef MXNET_PROFILER_GPU_MEMORY_PROFILER_H_ +#define MXNET_PROFILER_GPU_MEMORY_PROFILER_H_ + +#include +#include +#include + +namespace mxnet { +namespace profiler { + +class GpuMemoryProfiler { + public: + /// \brief Get the global instance of the memory profiler + ///to record an allocation entry. + static GpuMemoryProfiler* Get(); + GpuMemoryProfiler(); + /// \brief Set/Get the profiler scope. + static void SetCurrentScope(const std::string& scope); + static std::string GetCurrentScope(); + /// \brief Record an allocation entry in the profiler. + void addEntry(const Storage::Handle& handle, + const size_t actual_alloc_size, const bool reuse); + private: + bool enabled_; + std::ofstream alloc_csv_fout_; Review comment: could you add a mutex to make this class thread safe? This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] [incubator-mxnet] eric-haibin-lin commented on a change in pull request #17376: [MXNET-1404] Implement storage tagging, the first half of the memory profiler
eric-haibin-lin commented on a change in pull request #17376: [MXNET-1404] Implement storage tagging, the first half of the memory profiler URL: https://github.com/apache/incubator-mxnet/pull/17376#discussion_r373242986 ## File path: include/mxnet/ndarray.h ## @@ -998,7 +1054,10 @@ class NDArray { << "CheckAndAlloc(dbytes) is only intended for kDefaultStorage"; dbytes = std::max(dbytes, static_cast(shandle.size)); if (delay_alloc) { -shandle = Storage::Get()->Alloc(dbytes, shandle.ctx); +shandle = Storage::Get()->Alloc(dbytes, shandle.ctx, +shandle.profiler_scope, +shandle.name + "_realloc", Review comment: Why append `_realloc`? This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services