From c9052e090d2fe61236b1d3b5966e133e3f3c02da Mon Sep 17 00:00:00 2001 From: Dun Liang Date: Wed, 22 Apr 2020 19:38:01 +0800 Subject: [PATCH] fix fetcher segfault --- extern/cuda/nccl/ops/nccl_broadcast_op.h | 2 +- extern/cuda/nccl/ops/nccl_reduce_op.h | 2 +- extern/mpi/ops/mpi_all_reduce_op.cc | 5 --- extern/mpi/ops/mpi_broadcast_op.cc | 5 --- extern/mpi/ops/mpi_broadcast_op.h | 2 +- extern/mpi/ops/mpi_reduce_op.cc | 5 --- python/jittor/__init__.py | 14 +++---- python/jittor/compile_extern.py | 9 +++++ python/jittor/nn.py | 51 ++++++------------------ python/jittor/test/test_mpi_op.py | 8 ++-- python/jittor/test/test_nccl_ops.py | 18 ++++----- src/fetcher.cc | 5 ++- 12 files changed, 46 insertions(+), 80 deletions(-) diff --git a/extern/cuda/nccl/ops/nccl_broadcast_op.h b/extern/cuda/nccl/ops/nccl_broadcast_op.h index 4afdec5d..97c8be2f 100644 --- a/extern/cuda/nccl/ops/nccl_broadcast_op.h +++ b/extern/cuda/nccl/ops/nccl_broadcast_op.h @@ -15,7 +15,7 @@ struct NcclBroadcastOp : Op { Var* x, * y; int root; - NcclBroadcastOp(Var* x, int root); + NcclBroadcastOp(Var* x, int root=0); void infer_shape() override; const char* name() const override { return "nccl_broadcast"; } diff --git a/extern/cuda/nccl/ops/nccl_reduce_op.h b/extern/cuda/nccl/ops/nccl_reduce_op.h index 4568e139..4c750ac5 100644 --- a/extern/cuda/nccl/ops/nccl_reduce_op.h +++ b/extern/cuda/nccl/ops/nccl_reduce_op.h @@ -15,7 +15,7 @@ struct NcclReduceOp : Op { Var* x, * y; int root; - NcclReduceOp(Var* x, int root); + NcclReduceOp(Var* x, int root=0); void infer_shape() override; const char* name() const override { return "nccl_reduce"; } diff --git a/extern/mpi/ops/mpi_all_reduce_op.cc b/extern/mpi/ops/mpi_all_reduce_op.cc index 8c1c6797..7228e010 100644 --- a/extern/mpi/ops/mpi_all_reduce_op.cc +++ b/extern/mpi/ops/mpi_all_reduce_op.cc @@ -45,7 +45,6 @@ MpiAllReduceOp::MpiAllReduceOp(Var* x, NanoString op) : x(x), op(op) { } #endif y = create_output(nullptr, x->dtype()); - ASSERT(x->dtype().is_float()); } void MpiAllReduceOp::infer_shape() { @@ -80,10 +79,6 @@ void MpiAllReduceOp::jit_run() { index_t num = y->num; MPI_Allreduce(xp, yp, num, T_MPI, OP_MPI, MPI_COMM_WORLD); } -#else -void MpiAllReduceOp::jit_run() { - // cuda device code -} #endif // JIT_cpu #endif // JIT diff --git a/extern/mpi/ops/mpi_broadcast_op.cc b/extern/mpi/ops/mpi_broadcast_op.cc index ab982f66..b8209dc7 100644 --- a/extern/mpi/ops/mpi_broadcast_op.cc +++ b/extern/mpi/ops/mpi_broadcast_op.cc @@ -30,7 +30,6 @@ MpiBroadcastOp::MpiBroadcastOp(Var* x, int root) : x(x), root(root) { } #endif y = create_output(nullptr, x->dtype()); - ASSERT(x->dtype().is_float()); } void MpiBroadcastOp::infer_shape() { @@ -61,10 +60,6 @@ void MpiBroadcastOp::jit_run() { auto* __restrict__ yp = y->ptr(); MPI_Bcast(yp, y->num, T_MPI, root, MPI_COMM_WORLD); } -#else -void MpiBroadcastOp::jit_run() { - // cuda device code -} #endif // JIT_cpu #endif // JIT diff --git a/extern/mpi/ops/mpi_broadcast_op.h b/extern/mpi/ops/mpi_broadcast_op.h index ee92e2cc..d3f8983c 100644 --- a/extern/mpi/ops/mpi_broadcast_op.h +++ b/extern/mpi/ops/mpi_broadcast_op.h @@ -15,7 +15,7 @@ struct MpiBroadcastOp : Op { Var* x, * y; int root; - MpiBroadcastOp(Var* x, int root); + MpiBroadcastOp(Var* x, int root=0); void infer_shape() override; const char* name() const override { return "mpi_broadcast"; } diff --git a/extern/mpi/ops/mpi_reduce_op.cc b/extern/mpi/ops/mpi_reduce_op.cc index 50786a24..7b94fe89 100644 --- a/extern/mpi/ops/mpi_reduce_op.cc +++ b/extern/mpi/ops/mpi_reduce_op.cc @@ -45,7 +45,6 @@ MpiReduceOp::MpiReduceOp(Var* x, NanoString op, int root) : x(x), op(op), root(r } #endif y = create_output(nullptr, x->dtype()); - ASSERT(x->dtype().is_float()); } void MpiReduceOp::infer_shape() { @@ -82,10 +81,6 @@ void MpiReduceOp::jit_run() { if (root != mpi_world_rank) for (index_t i=0; i& vh, FetchFunc&& func) { + #ifdef HAS_CUDA + static Init init; + #endif sync(vh); vector allocations(vh.size()); vector arrays(vh.size());