nswamy opened a new pull request #9568: Cherry-picked from master branch(Remove 
finalizers from Scala API (#8887))
URL: https://github.com/apache/incubator-mxnet/pull/9568
 
 
   * [scala] Remove finalizers for leakable resources
   
   Finalizers always run in a separate thread which is not controlled by the 
user.
   Since MXNet cannot be safely accessed from multiple threads, this causes 
memory
   corruption. It is not safe to use finalizers in this way.
   
   This change also adds some leaked object tracing, to allow leaks to be 
tracked.
   It's easy to leak objects and despite warnings in the documentation leaks are
   common (even within the Scala API itself). The leak tracing is activated by a
   system property, as its runtime cost may be significant.
   
   With the system property unset, the *first* leak of a type will be reported
   (without a trace) as a prompt to the developer to investigate.
   
   Co-authored-by: Andre Tamm <tammt...@amazon.com>
   
   * [scala] Fix various resource leaks
   
   These leaks were diagnosed with the leak detection added in the previous
   commit. This is not an exhaustive clean up but it allows predicting with a
   model from Scala at scale (hundreds of millions of comparisons) without a
   reported leak, as well as removing the most common errors when training using
   the Module code.
   
   Co-authored-by: Andre Tamm <tammt...@amazon.com>
   
   ## Description ##
   (Brief description on what this PR is about)
   
   ## Checklist ##
   ### Essentials ###
   - [ ] Passed code style checking (`make lint`)
   - [ ] Changes are complete (i.e. I finished coding on this PR)
   - [ ] All changes have test coverage:
   - Unit tests are added for small changes to verify correctness (e.g. adding 
a new operator)
   - Nightly tests are added for complicated/long-running ones (e.g. changing 
distributed kvstore)
   - Build tests will be added for build configuration changes (e.g. adding a 
new build option with NCCL)
   - [ ] Code is well-documented: 
   - For user-facing API changes, API doc string has been updated. 
   - For new C++ functions in header files, their functionalities and arguments 
are documented. 
   - For new examples, README.md is added to explain the what the example does, 
the source of the dataset, expected performance on test set and reference to 
the original paper if applicable
   - [ ] To the 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.
   - Interesting 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:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to