Add python function operator - DALI-571#732
Conversation
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
| const auto &input = ws->Input<CPUBackend>(idx); | ||
| auto &output = ws->Output<CPUBackend>(idx); | ||
| py::gil_scoped_acquire guard{}; | ||
| py::array output_array = python_function(tensorToNumpyArray(input)); |
There was a problem hiding this comment.
Maybe we can provide instead of one NumpyArray a list of based on the number of inputs provided to the operator?
| const auto &input = ws->Input<CPUBackend>(idx); | ||
| auto &output = ws->Output<CPUBackend>(idx); | ||
| py::gil_scoped_acquire guard{}; | ||
| py::array output_array = python_function(tensorToNumpyArray(input)); |
There was a problem hiding this comment.
And maybe we could accept list on NumpyArrays to get multiple outputs from the operator?
| const auto &input = ws->Input<CPUBackend>(idx); | ||
| auto &output = ws->Output<CPUBackend>(idx); | ||
| py::gil_scoped_acquire guard{}; | ||
| py::array output_array = python_function(tensorToNumpyArray(input)); |
There was a problem hiding this comment.
What is the lifetime of this output_array? Maybe we can share its memory with the tensor and took over the ownership instead of copying it?
| p->SetOutputNames(outputs); | ||
| }) | ||
| .def("RunCPU", &Pipeline::RunCPU) | ||
| .def("RunCPU", &Pipeline::RunCPU, py::call_guard<py::gil_scoped_release>()) |
There was a problem hiding this comment.
I am just wondering what is this extra argument doing. Any performance implications (since this affects any pipeline's RunCPU)
There was a problem hiding this comment.
What it does is releasing the python global interpreter lock. Since a normal pipeline execution does not touch any python's resources it is safe to do it while not holding the GIL. Speaking about performance, actually it could even help because it unlocks the interpreter for other python threads. Of course in case of a python operator, GIL must be reacquired before executing.
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
712b2bc to
49eae64
Compare
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [705291]: BUILD STARTED
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [705327]: BUILD STARTED
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [705327]: BUILD PASSED
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [706273]: BUILD STARTED
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [706273]: BUILD FAILED
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [706487]: BUILD FAILED
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [706491]: BUILD FAILED
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [706494]: BUILD STARTED
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [706494]: BUILD PASSED
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [706568]: BUILD STARTED
klecki
left a comment
There was a problem hiding this comment.
CI MESSAGE: [706568]: BUILD PASSED
Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
|
CI MESSAGE: [707545]: BUILD STARTED |
|
CI MESSAGE: [707545]: BUILD PASSED |
* Add python function operator. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Add custom python operator example. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Add custom python operator example. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix style Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix style. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix test to follow nosetest convention Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Add test to the test script Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix docker build. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Move python operator to external plugin Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Add proper documentation for the operator Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Move plugin loading to backend.py Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix example notebook Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Move plugin loading to the operator constructor. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Move plugin loading to backend initialization. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Move the operator to pipeline/operators Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix registring python wrapper ops Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Typo fix Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> Signed-off-by: kychennv <kychen@nvidia.com>
* Add python function operator. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Add custom python operator example. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Add custom python operator example. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix style Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix style. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix test to follow nosetest convention Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Add test to the test script Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix docker build. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Move python operator to external plugin Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Add proper documentation for the operator Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Move plugin loading to backend.py Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix example notebook Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Move plugin loading to the operator constructor. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Move plugin loading to backend initialization. Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Move the operator to pipeline/operators Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Fix registring python wrapper ops Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com> * Typo fix Signed-off-by: Rafał Banaś <Banas.Rafal97@gmail.com>
Added python operator, a test and a jupyter notebook.