| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
4f86b2c503 |
fix(mge/subgraph): fix mem leak
GitOrigin-RevId:
|
4 years ago |
|
|
cbf9f1367a |
fix(imperative): fix CompNodeSyncManager deconstruct
GitOrigin-RevId:
|
4 years ago |
|
|
618c77c0b5 |
feat(dnn): enable eye to support bool
GitOrigin-RevId:
|
4 years ago |
|
|
a8941af0c6 |
fix(docs): fix traced module docs warning
GitOrigin-RevId:
|
4 years ago |
|
|
fefd4f0928 |
fix(traced_module): fix tensor node init
GitOrigin-RevId:
|
4 years ago |
| @@ -39,6 +39,7 @@ void exec_internal(T* dst, size_t m, size_t n, int k, cudaStream_t stream) { | |||||
| #define INST(T) template void exec_internal<T>(T*, size_t, size_t, int, cudaStream_t); | #define INST(T) template void exec_internal<T>(T*, size_t, size_t, int, cudaStream_t); | ||||
| #define cb(DType) INST(typename DTypeTrait<DType>::ctype) | #define cb(DType) INST(typename DTypeTrait<DType>::ctype) | ||||
| MEGDNN_FOREACH_COMPUTING_DTYPE(cb) | MEGDNN_FOREACH_COMPUTING_DTYPE(cb) | ||||
| cb(::megdnn::dtype::Bool) | |||||
| } // namespace eye | } // namespace eye | ||||
| } // namespace cuda | } // namespace cuda | ||||
| @@ -26,6 +26,7 @@ void EyeImpl::exec(_megdnn_tensor_out dst, _megdnn_workspace workspace) { | |||||
| cuda_stream(handle())); \ | cuda_stream(handle())); \ | ||||
| } | } | ||||
| MEGDNN_FOREACH_COMPUTING_DTYPE(cb) | MEGDNN_FOREACH_COMPUTING_DTYPE(cb) | ||||
| cb(::megdnn::dtype::Bool) | |||||
| #undef cb | #undef cb | ||||
| } | } | ||||
| @@ -31,6 +31,7 @@ void EyeImpl::exec(_megdnn_tensor_out dst, _megdnn_workspace workspace) { | |||||
| MEGDNN_DISPATCH_CPU_KERN_OPR(exec_internal<ctype>(dst.ptr<ctype>(), m, n)); \ | MEGDNN_DISPATCH_CPU_KERN_OPR(exec_internal<ctype>(dst.ptr<ctype>(), m, n)); \ | ||||
| } | } | ||||
| MEGDNN_FOREACH_COMPUTING_DTYPE(cb) | MEGDNN_FOREACH_COMPUTING_DTYPE(cb) | ||||
| cb(::megdnn::dtype::Bool) | |||||
| #undef cb | #undef cb | ||||
| } | } | ||||
| @@ -44,7 +44,7 @@ void exec_internal(T* dst, size_t m, size_t n, int k, hipStream_t stream) { | |||||
| template void exec_internal<T>(T*, size_t, size_t, int, hipStream_t); | template void exec_internal<T>(T*, size_t, size_t, int, hipStream_t); | ||||
| #define cb(DType) INST(typename DTypeTrait<DType>::ctype) | #define cb(DType) INST(typename DTypeTrait<DType>::ctype) | ||||
| MEGDNN_FOREACH_COMPUTING_DTYPE(cb) | MEGDNN_FOREACH_COMPUTING_DTYPE(cb) | ||||
| cb(::megdnn::dtype::Bool) | |||||
| } // namespace eye | } // namespace eye | ||||
| } // namespace rocm | } // namespace rocm | ||||
| } // namespace megdnn | } // namespace megdnn | ||||
| @@ -27,6 +27,7 @@ void EyeImpl::exec(_megdnn_tensor_out dst, _megdnn_workspace workspace) { | |||||
| hip_stream(handle())); \ | hip_stream(handle())); \ | ||||
| } | } | ||||
| MEGDNN_FOREACH_COMPUTING_DTYPE(cb) | MEGDNN_FOREACH_COMPUTING_DTYPE(cb) | ||||
| cb(::megdnn::dtype::Bool) | |||||
| #undef cb | #undef cb | ||||
| } | } | ||||
| @@ -21,10 +21,10 @@ from .traced_module import ( | |||||
| _register_all_builtin_module() | _register_all_builtin_module() | ||||
| set_cpp_apply_module_trace(cpp_apply_module_trace) | set_cpp_apply_module_trace(cpp_apply_module_trace) | ||||
| __all__ = { | |||||
| __all__ = [ | |||||
| "register_as_builtin", | "register_as_builtin", | ||||
| "trace_module", | "trace_module", | ||||
| "wrap", | "wrap", | ||||
| "TracedModule", | "TracedModule", | ||||
| "optimize", | "optimize", | ||||
| } | |||||
| ] | |||||
| @@ -222,7 +222,7 @@ class TensorNode(Node): | |||||
| def __init__( | def __init__( | ||||
| self, | self, | ||||
| expr: "Expr", | |||||
| expr, | |||||
| name: str = None, | name: str = None, | ||||
| qualname: str = None, | qualname: str = None, | ||||
| shape: Tuple[int] = None, | shape: Tuple[int] = None, | ||||
| @@ -231,7 +231,7 @@ class TensorNode(Node): | |||||
| ): | ): | ||||
| super().__init__(expr, name, qualname) | super().__init__(expr, name, qualname) | ||||
| self._shape = shape | self._shape = shape | ||||
| self._dtype = shape | |||||
| self._dtype = dtype | |||||
| self._qparams = qparams | self._qparams = qparams | ||||
| def __getstate__(self): | def __getstate__(self): | ||||
| @@ -450,6 +450,7 @@ void _init_py_op_def(py::module m) { | |||||
| py_type.tp_richcompare = PyOp(OpDef)::tp_richcompare; | py_type.tp_richcompare = PyOp(OpDef)::tp_richcompare; | ||||
| py_type.tp_getset = py_op::py_getsetters; | py_type.tp_getset = py_op::py_getsetters; | ||||
| py_type.tp_repr = py_op::py_repr; | py_type.tp_repr = py_op::py_repr; | ||||
| py_type.tp_dealloc = py_dealloc_generic<PyOp(OpDef)>; | |||||
| mgb_assert(PyType_Ready(&py_type) >= 0); | mgb_assert(PyType_Ready(&py_type) >= 0); | ||||
| m.add_object("OpDef", reinterpret_cast<PyObject*>(&py_type)); | m.add_object("OpDef", reinterpret_cast<PyObject*>(&py_type)); | ||||
| } | } | ||||
| @@ -24,21 +24,22 @@ from megengine.utils.network_node import VarNode | |||||
| def test_eye(): | def test_eye(): | ||||
| dtype = np.float32 | |||||
| dtypes = [np.float32, np.bool] | |||||
| cases = [{"input": [10, 20]}, {"input": [30]}] | cases = [{"input": [10, 20]}, {"input": [30]}] | ||||
| for case in cases: | |||||
| np.testing.assert_allclose( | |||||
| F.eye(case["input"], dtype=dtype).numpy(), | |||||
| np.eye(*case["input"]).astype(dtype), | |||||
| ) | |||||
| np.testing.assert_allclose( | |||||
| F.eye(*case["input"], dtype=dtype).numpy(), | |||||
| np.eye(*case["input"]).astype(dtype), | |||||
| ) | |||||
| np.testing.assert_allclose( | |||||
| F.eye(tensor(case["input"]), dtype=dtype).numpy(), | |||||
| np.eye(*case["input"]).astype(dtype), | |||||
| ) | |||||
| for dtype in dtypes: | |||||
| for case in cases: | |||||
| np.testing.assert_allclose( | |||||
| F.eye(case["input"], dtype=dtype).numpy(), | |||||
| np.eye(*case["input"]).astype(dtype), | |||||
| ) | |||||
| np.testing.assert_allclose( | |||||
| F.eye(*case["input"], dtype=dtype).numpy(), | |||||
| np.eye(*case["input"]).astype(dtype), | |||||
| ) | |||||
| np.testing.assert_allclose( | |||||
| F.eye(tensor(case["input"]), dtype=dtype).numpy(), | |||||
| np.eye(*case["input"]).astype(dtype), | |||||
| ) | |||||
| def test_full(): | def test_full(): | ||||
| @@ -44,7 +44,7 @@ public: | |||||
| } | } | ||||
| static CompNodeSyncManager& inst() { | static CompNodeSyncManager& inst() { | ||||
| static CompNodeSyncManager sl_inst; | |||||
| static CompNodeSyncManager* sl_inst = new CompNodeSyncManager(); | |||||
| #if MGB_CUDA && defined(WIN32) | #if MGB_CUDA && defined(WIN32) | ||||
| //! FIXME: windows cuda driver shutdown before call atexit function even | //! FIXME: windows cuda driver shutdown before call atexit function even | ||||
| //! register atexit function after init cuda driver! as a workround | //! register atexit function after init cuda driver! as a workround | ||||
| @@ -55,7 +55,7 @@ public: | |||||
| mgb_assert(!err, "failed to register atexit function"); | mgb_assert(!err, "failed to register atexit function"); | ||||
| } | } | ||||
| #endif | #endif | ||||
| return sl_inst; | |||||
| return *sl_inst; | |||||
| } | } | ||||
| CompNode::Event* get_or_create_event(Blob* blob) { | CompNode::Event* get_or_create_event(Blob* blob) { | ||||