* Resolve conflicting name, ContextManager
Concept name `Context Manager` is taken by Python. See https://docs.python.org/3.6/reference/datamodel.html#with-statement-context-managers
It says,
A context manager is an object that defines the runtime context to be established when executing a with statement. The context manager handles the entry into, and the exit from, the desired runtime context for the execution of the block of code.
The `ContextManager` here is more like a registry.
And there is a C++ registry in caffe2 codebase `caffe2/caffe2/core/registry.h`.
There is also a Caffe2DBRegistry, declared by calling `CAFFE_DECLARE_REGISTRY(Caffe2DBRegistry, DB, const string&, Mode);` in `caffe2/caffe2/core/db.h`.
I think we can follow the concept name `Registry`, calling it `ContextRegistry`.
* Make Classes and Functions internal to this module start with "_"
Make Classes and Functions internal to this module start with "_"
* Update context.py
* Update context.py
Summary: Making it more convenient to wrap code int context
Reviewed By: boryiingsu
Differential Revision: D5680991
fbshipit-source-id: 07b7e4d5aa657184039a7d18192b68fe11c1a570
Summary: ContextManager was thread local. This caused issues because the context registration needs to be global. What needs to be thread local is the current context.
Reviewed By: jhcross
Differential Revision: D4556050
fbshipit-source-id: 5de1c0d9fd0a778c4cb1eadef01f9a1ab488f603