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