Multi-Node rocshmem_finalize() bug (#138)

这个提交包含在:
Yiltan
2025-06-04 10:02:03 -04:00
提交者 GitHub
父节点 ca5fdd4718
当前提交 3f01d89207
修改 18 个文件,包含 175 行新增237 行删除
+16 -16
查看文件
@@ -47,7 +47,7 @@
#include "ipc/backend_ipc.hpp"
#include "ipc/context_ipc_tmpl_host.hpp"
#endif
#include "mpi_init_singleton.hpp"
#include "mpi_instance.hpp"
#include "team.hpp"
#include "templates_host.hpp"
#include "util.hpp"
@@ -67,6 +67,7 @@ namespace rocshmem {
}
Backend *backend = nullptr;
MPIInstance *mpi_instance = nullptr;
rocshmem_ctx_t ROCSHMEM_HOST_CTX_DEFAULT;
@@ -86,6 +87,8 @@ rocshmem_ctx_t ROCSHMEM_HOST_CTX_DEFAULT;
rocm_init();
mpi_instance = new MPIInstance(comm);
#ifdef USE_RO
CHECK_HIP(hipHostMalloc(&backend, sizeof(ROBackend)));
backend = new (backend) ROBackend(comm);
@@ -103,7 +106,7 @@ rocshmem_ctx_t ROCSHMEM_HOST_CTX_DEFAULT;
rocshmem_init_attr_t *attr) {
MPI_Comm comm = MPI_COMM_NULL;
if ((attr == nullptr) ||
if ((attr == nullptr) ||
((flags != ROCSHMEM_INIT_WITH_UNIQUEID) &&
(flags != ROCSHMEM_INIT_WITH_MPI_COMM)) ) {
fprintf(stderr, "ROCSHMEM_ERROR: %s in file '%s' in line %d\n",
@@ -224,24 +227,21 @@ rocshmem_ctx_t ROCSHMEM_HOST_CTX_DEFAULT;
}
[[maybe_unused]] __host__ int rocshmem_my_pe() {
if(backend == nullptr) {
MPIInitSingleton *s = s->GetInstance();
return s->get_rank();
}
else
{
return backend->getMyPE();
if (mpi_instance != nullptr) {
return mpi_instance->get_rank();
}
fprintf(stderr, "[WARNING] rocshmem_init() has not been called\n");
return -1;
}
[[maybe_unused]] __host__ int rocshmem_n_pes() {
if(backend == nullptr) {
MPIInitSingleton *s = s->GetInstance();
return s->get_nprocs();
}
else {
return backend->getNumPEs();
if (mpi_instance != nullptr) {
return mpi_instance->get_nprocs();
}
fprintf(stderr, "[WARNING] rocshmem_init() has not been called\n");
return -1;
}
[[maybe_unused]] __host__ void *rocshmem_malloc(size_t size) {
@@ -294,7 +294,7 @@ rocshmem_ctx_t ROCSHMEM_HOST_CTX_DEFAULT;
backend->~Backend();
CHECK_HIP(hipHostFree(backend));
delete MPIInitSingleton::GetInstance();
delete mpi_instance;
}
__host__ void rocshmem_query_thread(int *provided) {