You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mxnet.apache.org by Sam Skalicky <no...@github.com> on 2019/12/07 18:34:36 UTC

[apache/incubator-mxnet] [RFC] Custom Operator Part 2 (#17006)

## Description
Request for comments on the next PR for enhancing custom operator support

Heres some suggestions from the initial PR (Part 1):
- custom GPU operators
- Random number generator resource request
- sparse data types
- migrate lambda functions in MXLoadLib in src/c_api/c_api.cc to classes defined elsewhere
- Documentation, add the "library" python package to the namespace to the doc: https://mxnet.apache.org/api/python/docs/api/ ?

## References
- initial PR (Part 1): #15921


-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-mxnet/issues/17006

Re: [apache/incubator-mxnet] [RFC] Custom Operator Part 2 (#17006)

Posted by Przemyslaw Tredak <no...@github.com>.
Custom ops should be able to set the inplace property.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-mxnet/issues/17006#issuecomment-616807857

Re: [apache/incubator-mxnet] [RFC] Custom Operator Part 2 (#17006)

Posted by Sam Skalicky <no...@github.com>.
We should create a namespace for the stuff in the lib_api.h file as suggested by @larroy:
https://github.com/apache/incubator-mxnet/pull/15760/files#r311756416

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-mxnet/issues/17006#issuecomment-569422074

Re: [apache/incubator-mxnet] [RFC] Custom Operator Part 2 (#17006)

Posted by Ziyi Mu <no...@github.com>.
Need to include a fix for the test error https://github.com/apache/incubator-mxnet/pull/15921#pullrequestreview-328686634

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-mxnet/issues/17006#issuecomment-563085461

Re: [apache/incubator-mxnet] [RFC] Custom Operator Part 2 (#17006)

Posted by kpuatamazon <no...@github.com>.
Speed.  All those `std::string` and `std::unordered_map` objects don't come cheaply.  

I compared an integrated fork with a custom operator.  

https://github.com/kpuatamazon/incubator-mxnet/tree/intgemm integrated version end-to-end Sockeye performance (based on 1.6.0):
```
real	2m57.962s
user	7m3.986s
sys	0m6.724s
```
Custom operator version (based on 1.7.x. because it had to be for custom operators):
```
real	3m16.879s
user	7m43.727s
sys	0m8.273s
```
Conditions:
`unset MXNET_ENGINE_TYPE; export OMP_NUM_THREADS=2; numactl -C 0-7 translate.sh`
Both were compiled with the MKL backend hack for the remaining fp32 operations.  

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-mxnet/issues/17006#issuecomment-636870342

Re: [apache/incubator-mxnet] [RFC] Custom Operator Part 2 (#17006)

Posted by JackieWu <no...@github.com>.
@larroy Users may need matrix operators and DNN Op(e.g. ReLU, Conv) when writing a custom Op. Although they can implement it by third-party libraries, it is more convenient to use the built-in functions in MXNet.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-mxnet/issues/17006#issuecomment-569467244

Re: [apache/incubator-mxnet] [RFC] Custom Operator Part 2 (#17006)

Posted by Pedro Larroy <no...@github.com>.
@wkcn could you explain your suggestion? calling gemm back into the framework which gets dispatched to GPU or CPU?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-mxnet/issues/17006#issuecomment-569131388

Re: [apache/incubator-mxnet] [RFC] Custom Operator Part 2 (#17006)

Posted by JackieWu <no...@github.com>.
Hi @samskalicky , thank you for the contribution!
I have several suggestions.

- custom GPU operators
  1. Provide CUDA stream in `OpResource`.
  2. Share the same function on CPU and GPU.
      Users can discriminate the context by `MXTensor::dltensor::ctx`
- Call framework specific math helper
  It is important for a custom operator. Users may call gemm, even convolution op in custom op.

Thanks.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-mxnet/issues/17006#issuecomment-562898682