You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by GitBox <gi...@apache.org> on 2019/09/23 22:52:20 UTC

[GitHub] [incubator-mxnet] access2rohit edited a comment on issue #16218: Improving performance of argmax operator

access2rohit edited a comment on issue #16218: Improving performance of argmax operator
URL: https://github.com/apache/incubator-mxnet/pull/16218#issuecomment-534314927
 
 
   @drivanov can you share the build procedure of your code base so your results can be reproduced ?
   How did you benchmark your code ?
   I pulled your fork and used branch `new_argmax` and build with CPU mode only in 32 -bit version. Then I tried to use opperf utility present in MXNet to bencmark perf formance of your code and I got the following errors 
   ```
   home/ubuntu/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
     from ._conv import register_converters as _register_converters
   INFO:root:Begin Benchmark - argmax
   INFO:root:Complete Benchmark - argmax
   [{'argmax': [{'avg_time_argmax': 0.29419124126434326, 'p50_time_argmax': 0.28957799077033997, 'p90_time_argmax': 0.3093678504228592, 'p99_time_argmax': 0.3325981646776199, 'inputs': {'data': (1024, 1024), 'axis': 1}}]}]
   INFO:root:Begin Benchmark - argmax
   INFO:root:Complete Benchmark - argmax
   [{'argmax': [{'avg_time_argmax': 0.38427121937274933, 'p50_time_argmax': 0.38124993443489075, 'p90_time_argmax': 0.39454028010368347, 'p99_time_argmax': 0.40961168706417084, 'inputs': {'data': (1024, 1024), 'axis': 0}}]}]
   Traceback (most recent call last):
     File "perf_argmax.py", line 7, in <module>
       print(run_performance_test(nd.argmax, run_backward=True, dtype='float32', ctx=mx.cpu(),inputs=[{"data":(1024,1024)}],warmup=10, runs=25, profiler='python'))
     File "/home/ubuntu/PERF/drivanov/incubator-mxnet/benchmark/opperf/utils/benchmark_utils.py", line 137, in run_performance_test
       benchmark_result = _run_nd_operator_performance_test(op, inputs, run_backward, warmup, runs, args_list, kwargs_list, profiler)
     File "/home/ubuntu/PERF/drivanov/incubator-mxnet/benchmark/opperf/utils/benchmark_utils.py", line 69, in _run_nd_operator_performance_test
       _, _ = benchmark_helper_func(op, warmup, [], **kwargs_list[0])
     File "/home/ubuntu/PERF/drivanov/incubator-mxnet/benchmark/opperf/utils/profiler_utils.py", line 241, in python_profile_it
       res = func(*modified_args, **kwargs)
     File "/home/ubuntu/PERF/drivanov/incubator-mxnet/benchmark/opperf/utils/ndarray_utils.py", line 52, in nd_forward_backward_and_profile
       nd.waitall()
     File "/home/ubuntu/PERF/drivanov/incubator-mxnet/python/mxnet/ndarray/ndarray.py", line 188, in waitall
       check_call(_LIB.MXNDArrayWaitAll())
     File "/home/ubuntu/PERF/drivanov/incubator-mxnet/python/mxnet/base.py", line 254, in check_call
       raise MXNetError(py_str(_LIB.MXGetLastError()))
   mxnet.base.MXNetError: [22:48:58] src/operator/tensor/./broadcast_reduce_op.h:689: Global reduction not supported yet
   Stack trace:
     [bt] (0) /home/ubuntu/PERF/drivanov/incubator-mxnet/python/mxnet/../../lib/libmxnet.so(dmlc::LogMessageFatal::~LogMessageFatal()+0x32) [0x7fb239db4cb2]
     [bt] (1) /home/ubuntu/PERF/drivanov/incubator-mxnet/python/mxnet/../../lib/libmxnet.so(void mxnet::op::ArgMax<mshadow::cpu>(nnvm::NodeAttrs const&, mxnet::OpContext const&, std::vector<mxnet::TBlob, std::allocator<mxnet::TBlob> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&, std::vector<mxnet::TBlob, std::allocator<mxnet::TBlob> > const&)+0x92) [0x7fb23b3973d2]
     [bt] (2) /home/ubuntu/PERF/drivanov/incubator-mxnet/python/mxnet/../../lib/libmxnet.so(mxnet::imperative::PushFCompute(std::function<void (nnvm::NodeAttrs const&, mxnet::OpContext const&, std::vector<mxnet::TBlob, std::allocator<mxnet::TBlob> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&, std::vector<mxnet::TBlob, std::allocator<mxnet::TBlob> > const&)> const&, nnvm::Op const*, nnvm::NodeAttrs const&, mxnet::Context const&, std::vector<mxnet::engine::Var*, std::allocator<mxnet::engine::Var*> > const&, std::vector<mxnet::engine::Var*, std::allocator<mxnet::engine::Var*> > const&, std::vector<mxnet::Resource, std::allocator<mxnet::Resource> > const&, std::vector<mxnet::NDArray*, std::allocator<mxnet::NDArray*> > const&, std::vector<mxnet::NDArray*, std::allocator<mxnet::NDArray*> > const&, std::vector<unsigned int, std::allocator<unsigned int> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&)::{lambda(mxnet::RunContext)#1}::operator()(mxnet::RunContext) const+0x2b2) [0x7fb23c8b8ae2]
     [bt] (3) /home/ubuntu/PERF/drivanov/incubator-mxnet/python/mxnet/../../lib/libmxnet.so(std::_Function_handler<void (mxnet::RunContext), mxnet::imperative::PushFCompute(std::function<void (nnvm::NodeAttrs const&, mxnet::OpContext const&, std::vector<mxnet::TBlob, std::allocator<mxnet::TBlob> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&, std::vector<mxnet::TBlob, std::allocator<mxnet::TBlob> > const&)> const&, nnvm::Op const*, nnvm::NodeAttrs const&, mxnet::Context const&, std::vector<mxnet::engine::Var*, std::allocator<mxnet::engine::Var*> > const&, std::vector<mxnet::engine::Var*, std::allocator<mxnet::engine::Var*> > const&, std::vector<mxnet::Resource, std::allocator<mxnet::Resource> > const&, std::vector<mxnet::NDArray*, std::allocator<mxnet::NDArray*> > const&, std::vector<mxnet::NDArray*, std::allocator<mxnet::NDArray*> > const&, std::vector<unsigned int, std::allocator<unsigned int> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&)::{lambda(mxnet::RunContext)#1}>::_M_invoke(std::_Any_data const&, mxnet::RunContext&&)+0x17) [0x7fb23c8b8cc7]
     [bt] (4) /home/ubuntu/PERF/drivanov/incubator-mxnet/python/mxnet/../../lib/libmxnet.so(+0x3772bfe) [0x7fb23ce12bfe]
     [bt] (5) /home/ubuntu/PERF/drivanov/incubator-mxnet/python/mxnet/../../lib/libmxnet.so(mxnet::engine::ThreadedEngine::ExecuteOprBlock(mxnet::RunContext, mxnet::engine::OprBlock*)+0x995) [0x7fb23ce0d115]
     [bt] (6) /home/ubuntu/PERF/drivanov/incubator-mxnet/python/mxnet/../../lib/libmxnet.so(std::_Function_handler<void (std::shared_ptr<dmlc::ManualEvent>), mxnet::engine::ThreadedEnginePerDevice::PushToExecute(mxnet::engine::OprBlock*, bool)::{lambda()#1}::operator()() const::{lambda(std::shared_ptr<dmlc::ManualEvent>)#1}>::_M_invoke(std::_Any_data const&, std::shared_ptr<dmlc::ManualEvent>&&)+0xfe) [0x7fb23ce208de]
     [bt] (7) /home/ubuntu/PERF/drivanov/incubator-mxnet/python/mxnet/../../lib/libmxnet.so(std::thread::_Impl<std::_Bind_simple<std::function<void (std::shared_ptr<dmlc::ManualEvent>)> (std::shared_ptr<dmlc::ManualEvent>)> >::_M_run()+0x4a) [0x7fb23ce0bb7a]
     [bt] (8) /home/ubuntu/anaconda3/bin/../lib/libstdc++.so.6(+0xafc5c) [0x7fb249e03c5c]
   ```

----------------------------------------------------------------
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:
users@infra.apache.org


With regards,
Apache Git Services