Change cuda runtime to not serialize all calls on a single lock.
Change cuda runtime to not serialize all calls on a single lock.

Add support for loading modules onto more than one context in case
clients override the context acquire and release functions to return
different contexts as a functions of the user_context.


Former-commit-id: ec2de158948abbc2255c36ea5d57cf9cc732c05d [formerly 6d8f1d98c3ec4230e200ee1596cf0a876bcde34f]
Former-commit-id: 5a55992fbe2170f1dabfbd66b664698a35d55d62
Trass3r/Halide,Trass3r/Halide,darkbuck/Halide,Trass3r/Halide,Trass3r/Halide,darkbuck/Halide,darkbuck/Halide,darkbuck/Halide,darkbuck/Halide,Trass3r/Halide,darkbuck/Halide,Trass3r/Halide,darkbuck/Halide,Trass3r/Halide