Author | SHA1 | Message | Date |
---|---|---|---|
|
4f86b2c503 |
fix(mge/subgraph): fix mem leak
GitOrigin-RevId:
|
3 years ago |
|
cbf9f1367a |
fix(imperative): fix CompNodeSyncManager deconstruct
GitOrigin-RevId:
|
3 years ago |
|
618c77c0b5 |
feat(dnn): enable eye to support bool
GitOrigin-RevId:
|
3 years ago |
|
a8941af0c6 |
fix(docs): fix traced module docs warning
GitOrigin-RevId:
|
3 years ago |
|
fefd4f0928 |
fix(traced_module): fix tensor node init
GitOrigin-RevId:
|
3 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) { | ||||