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 2017/11/16 19:46:37 UTC

[GitHub] cjolivier01 opened a new pull request #8686: Kernel operator tuning including broadcast

cjolivier01 opened a new pull request #8686: Kernel operator tuning including broadcast
URL: https://github.com/apache/incubator-mxnet/pull/8686
 
 
   @piiswrong 
   
   ## Description ##
   Automatic OMP operator tuning based upon kernel operation workload.
   Determines "weight" of a unary or binary kernel op and then uses this to determine if OMP should be used, given # of iterations required and # threads to perform the job.
   
   Correct decision accuracy is tested in gtest OMP_TUNING test suite by comparing with OMP, without OMP, and Auto times.
   
   For example:
   * AWS c4.8xlarge:
     Success rate for type float: 0.90278
     Success rate for type double: 0.88889
     Success rate for type mshadow::half::half_t: 0.83333
     Success rate for type unsigned char: 0.86111
     Success rate for type int: 0.95833
     Success rate for type long: 0.88889
   
   * desktop: 12-core (6 real CPU cores + hyperthreading)
     Success rate for type float: 0.79167
     Success rate for type double: 0.75000
     Success rate for type unsigned char: 0.72222
     Success rate for type int: 0.94444
     Success rate for type long: 1.00000
   
   A sample output from OMP_TUNING tests including staticstical data:
   [tune_all.txt](https://github.com/apache/incubator-mxnet/files/1450885/tune_all.txt)
   
   
   Currently autotuned kernel operators (tuning at startup takes a total of < 10ms):
   
   broadcast_kernel and:
   
   mxnet::op::PopulateFullIdxRspKernel
   mxnet::op::mxnet_op::set_to_int<0>
   mxnet::op::mshadow_op::smooth_l1_gradient
   mxnet::op::mshadow_op::smooth_l1_loss
   mxnet::op::mshadow_op::eq
   mxnet::op::mshadow_op::ne
   mxnet::op::mshadow_op::le
   mxnet::op::mshadow_op::lt
   mxnet::op::mshadow_op::hypot_grad_right
   mxnet::op::mshadow_op::hypot_grad_left
   mxnet::op::mshadow_op::hypot
   mxnet::op::mshadow_op::arctanh_grad
   mxnet::op::mshadow_op::arctan_grad
   mxnet::op::mshadow_op::cosh
   mxnet::op::mshadow_op::rpower
   mxnet::op::mshadow_op::minimum
   mxnet::op::mshadow_op::arctan
   mxnet::op::mshadow_op::reciprocal_square_root
   mxnet::op::mshadow_op::rminus
   mxnet::op::mshadow_op::arccosh_grad
   mxnet::op::mshadow_op::square_root_grad
   mxnet::op::mshadow_op::arctanh
   mxnet::op::mshadow_op::floor
   mxnet::op::mshadow_op::cosh_grad
   mxnet::op::mshadow_op::ceil
   mxnet::op::mshadow_op::cos_grad
   mxnet::op::mshadow_op::reciprocal_cube_root_grad
   mxnet::op::mshadow_op::arcsinh_grad
   mxnet::op::mshadow_op::sin
   mxnet::op::mshadow_op::arcsin
   mxnet::op::mshadow_op::log10_grad
   mxnet::op::mshadow_op::log1p_grad
   mxnet::op::mshadow_op::mod_grad
   mxnet::op::mshadow_op::arccos_grad
   mxnet::op::mshadow_op::exp
   mxnet::op::mshadow_op::tanh_grad
   mxnet::op::mshadow_op::log1p
   mxnet::op::mshadow_op::rint
   mshadow::op::minus
   mxnet::op::mshadow_op::relu_grad
   mxnet::op::mshadow_op::identity
   mxnet::op::mshadow_op::maximum
   mxnet::op::mshadow_op::reciprocal_grad
   mshadow::op::div
   mxnet::op::mshadow_op::rmod_grad
   mxnet::op::mshadow_op::arcsin_grad
   mxnet::op::mshadow_op::ge
   mxnet::op::mshadow_op::gammaln_grad
   mxnet::op::mshadow_op::sigmoid
   mxnet::op::mshadow_op::power_rgrad
   mxnet::op::mshadow_op::identity_grad
   mxnet::op::mshadow_op::tan
   mxnet::op::mshadow_op::gamma
   mxnet::op::mshadow_op::arcsinh
   mshadow::op::identity
   mxnet::op::mshadow_op::square_root
   mxnet::op::mshadow_op::reciprocal_square_root_grad
   mxnet::op::mshadow_op::cos
   mxnet::op::mshadow_op::log2
   mxnet::op::mshadow_op::tanh
   mxnet::op::mshadow_op::arccosh
   mxnet::op::mshadow_op::negation
   mxnet::op::mshadow_op::log10
   mxnet::op::mshadow_op::cube_root_grad
   mxnet::op::mshadow_op::expm1
   mxnet::op::mshadow_op::arccos
   mxnet::op::mshadow_op::rmod
   mxnet::op::mshadow_op::softrelu_grad
   mxnet::op::mshadow_op::sinh
   mxnet::op::mshadow_op::log_grad
   mxnet::op::mshadow_op::sin_grad
   mxnet::op::mshadow_op::rdiv_grad
   mxnet::op::mshadow_op::log
   mxnet::op::mshadow_op::softrelu
   mxnet::op::mshadow_op::square_grad
   mxnet::op::mshadow_op::log2_grad
   mxnet::op::mshadow_op::cube_root
   mxnet::op::mshadow_op::reciprocal_cube_root
   mxnet::op::mshadow_op::sign
   mxnet::op::mshadow_op::square
   mxnet::op::mshadow_op::sign_grad
   mxnet::op::mshadow_op::round
   mxnet::op::mshadow_op::trunc
   mxnet::op::mshadow_op::mod_rgrad
   mxnet::op::mshadow_op::reciprocal
   mxnet::op::mshadow_op::fix
   mxnet::op::mshadow_op::gamma_grad
   mxnet::op::mshadow_op::gammaln
   mxnet::op::mshadow_op::degrees
   mshadow::op::right
   mxnet::op::mshadow_op::sinh_grad
   mxnet::op::mshadow_op::degrees_grad
   mshadow::op::plus
   mxnet::op::mshadow_op::radians
   mxnet::op::mshadow_op::sigmoid_grad
   mxnet::op::mshadow_op::radians_grad
   mxnet::op::mshadow_op::gt
   mxnet::op::mshadow_op::mod
   mshadow::op::mul
   mxnet::op::mshadow_op::rdiv
   mxnet::op::mshadow_op::tan_grad
   mxnet::op::mshadow_op::div_grad
   mxnet::op::mshadow_op::div_rgrad
   mxnet::op::mshadow_op::left
   mxnet::op::mshadow_op::right
   mxnet::op::mshadow_op::power
   mxnet::op::mshadow_op::power_grad
   mxnet::op::mshadow_op::relu
   mxnet::op::mshadow_op::abs
   mxnet::op::mshadow_op::rpower_grad
   
   
   
   ## Checklist ##
   ### Essentials ###
   - [ ] Passed code style checking (`make lint`)
   - [ ] Changes are complete (i.e. I finished coding on this PR)
   - [ ] All changes have test coverage
   - [ ] For user-facing API changes, API doc string has been updated.
   - [ ] To my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change
   
   ### Changes ###
   - [ ] Feature1, tests, (and when applicable, API doc)
   - [ ] Feature2, tests, (and when applicable, API doc)
   
   ## Comments ##
   - If this change is a backward incompatible change, why must this change be made.
   - Intersting edge cases to note here
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on 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