Skip to content

Commit a217424

Browse files
Added new logic for init attr flags
1 parent 8cd2f16 commit a217424

5 files changed

Lines changed: 35 additions & 29 deletions

File tree

clang/lib/DPCT/RuleInfra/MapNames.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1671,9 +1671,11 @@ void MapNames::setExplicitNamespaceMap(
16711671
{"NVSHMEM_TEAM_INVALID",
16721672
std::make_shared<EnumNameRule>("ISHMEM_TEAM_INVALID")},
16731673
{"NVSHMEMX_INIT_WITH_MPI_COMM",
1674-
std::make_shared<EnumNameRule>("ISHMEMX_RUNTIME_MPI")},
1674+
std::make_shared<EnumNameRule>(MapNames::getDpctNamespace() +
1675+
"shmemx::RUNTIME_MPI")},
16751676
{"NVSHMEMX_INIT_WITH_SHMEM",
1676-
std::make_shared<EnumNameRule>("ISHMEMX_RUNTIME_OPENSHMEM")},
1677+
std::make_shared<EnumNameRule>(MapNames::getDpctNamespace() +
1678+
"shmemx::RUNTIME_OPENSHMEM")},
16771679
{"NVSHMEM_SIGNAL_SET",
16781680
std::make_shared<EnumNameRule>("ISHMEM_SIGNAL_SET")},
16791681
{"NVSHMEM_SIGNAL_ADD",

clang/lib/DPCT/RulesSHMEM/APINamesNvshmem.inc

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -203,18 +203,13 @@
203203
FEATURE_REQUEST_FACTORY(HelperFeatureEnum::device_ext,
204204
CALL_FACTORY_ENTRY("nvshmem_init", CALL("ishmem_init")))
205205

206-
HEADER_INSERT_FACTORY(
207-
HeaderType::HT_DPCT_SHMEM_Utils,
208-
FEATURE_REQUEST_FACTORY(
209-
HelperFeatureEnum::device_ext,
210-
CALL_FACTORY_ENTRY(
211-
"nvshmemx_init_attr",
212-
CALL(MapNames::getDpctNamespace() + "shmem::init_attr",
213-
makeCombinedArg(
214-
makeCombinedArg(
215-
ARG("static_cast<ishmemx_runtime_type_t>("), ARG(0)),
216-
ARG(")")),
217-
ARG(1)))))
206+
HEADER_INSERT_FACTORY(HeaderType::HT_DPCT_SHMEM_Utils,
207+
FEATURE_REQUEST_FACTORY(
208+
HelperFeatureEnum::device_ext,
209+
CALL_FACTORY_ENTRY("nvshmemx_init_attr",
210+
CALL(MapNames::getDpctNamespace() +
211+
"shmemx::init_attr",
212+
ARG(0), ARG(1)))))
218213

219214
FEATURE_REQUEST_FACTORY(HelperFeatureEnum::device_ext,
220215
CALL_FACTORY_ENTRY("nvshmem_my_pe",
@@ -513,7 +508,7 @@ HEADER_INSERT_FACTORY(HeaderType::HT_DPCT_SHMEM_Utils,
513508
HelperFeatureEnum::device_ext,
514509
CALL_FACTORY_ENTRY("nvshmemx_signal_op",
515510
CALL(MapNames::getDpctNamespace() +
516-
"shmem::signal_op",
511+
"shmemx::signal_op",
517512
ARG(0), ARG(1), ARG(2),
518513
ARG(3)))))
519514

clang/runtime/dpct-rt/include/dpct/shmem_utils.hpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,27 @@
99
#ifndef __DPCT_SHMEM_UTILS_HPP__
1010
#define __DPCT_SHMEM_UTILS_HPP__
1111

12-
namespace dpct::shmem {
12+
namespace dpct::shmemx {
13+
14+
enum flags { RUNTIME_MPI = 1 << 1, RUNTIME_OPENSHMEM = 1 << 2 };
1315

1416
/// Initialize Intel SHMEM library based on exisiting communicator
1517
/// \param [in] runtime_flags specify the underlying communicator like MPI/
1618
/// OpenSHMEM to initialize iSHMEM for launcher agnostic bootstrapping
1719
/// \param [in] attr Additional attributes for initializing the iSHMEM library.
18-
void init_attr(ishmemx_runtime_type_t runtime_flags, ishmemx_attr_t *attr) {
20+
void init_attr(unsigned runtime_flags, ishmemx_attr_t *attr) {
1921
if (runtime_flags == 0) {
2022
// if no runtime flags are present, initialize iSHMEM normally
2123
ishmem_init();
2224
} else {
23-
attr->runtime = runtime_flags;
25+
unsigned ishmem_runtime_flags = 0;
26+
27+
if (runtime_flags & RUNTIME_MPI)
28+
ishmem_runtime_flags |= ISHMEMX_RUNTIME_MPI;
29+
if (runtime_flags & RUNTIME_OPENSHMEM)
30+
ishmem_runtime_flags |= ISHMEMX_RUNTIME_OPENSHMEM;
31+
32+
attr->runtime = static_cast<ishmemx_runtime_type_t>(ishmem_runtime_flags);
2433
ishmemx_init_attr(attr);
2534
}
2635
}
@@ -42,6 +51,6 @@ void signal_op(uint64_t *sig_addr, uint64_t signal, int sig_op, int pe) {
4251
}
4352
}
4453

45-
} // namespace dpct::shmem
54+
} // namespace dpct::shmemx
4655

4756
#endif // __DPCT_SHMEM_UTILS_HPP__

clang/test/dpct/nvshmem/library_setup_exit_query.cu

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,21 @@ int main() {
6060
attr.args = args;
6161
#endif // NO_BUILD_TEST
6262

63-
// CHECK: dpct::shmem::init_attr(static_cast<ishmemx_runtime_type_t>(ISHMEMX_RUNTIME_MPI), &attr);
64-
// CHECK-NEXT: dpct::shmem::init_attr(static_cast<ishmemx_runtime_type_t>(ISHMEMX_RUNTIME_OPENSHMEM), &attr);
65-
// CHECK-NEXT: dpct::shmem::init_attr(static_cast<ishmemx_runtime_type_t>(ISHMEMX_RUNTIME_MPI | ISHMEMX_RUNTIME_OPENSHMEM), &attr);
63+
// CHECK: dpct::shmemx::init_attr(dpct::shmemx::RUNTIME_MPI, &attr);
64+
// CHECK-NEXT: dpct::shmemx::init_attr(dpct::shmemx::RUNTIME_OPENSHMEM, &attr);
65+
// CHECK-NEXT: dpct::shmemx::init_attr(dpct::shmemx::RUNTIME_MPI | dpct::shmemx::RUNTIME_OPENSHMEM, &attr);
6666
nvshmemx_init_attr(NVSHMEMX_INIT_WITH_MPI_COMM, &attr);
6767
nvshmemx_init_attr(NVSHMEMX_INIT_WITH_SHMEM, &attr);
6868
nvshmemx_init_attr(NVSHMEMX_INIT_WITH_MPI_COMM | NVSHMEMX_INIT_WITH_SHMEM, &attr);
6969

70-
// CHECK: unsigned int rt = ISHMEMX_RUNTIME_MPI;
71-
// CHECK-NEXT: rt = ISHMEMX_RUNTIME_OPENSHMEM;
72-
// CHECK-NEXT: dpct::shmem::init_attr(static_cast<ishmemx_runtime_type_t>(rt), &attr);
70+
// CHECK: unsigned int rt = dpct::shmemx::RUNTIME_MPI;
71+
// CHECK-NEXT: rt = dpct::shmemx::RUNTIME_OPENSHMEM;
72+
// CHECK-NEXT: dpct::shmemx::init_attr(rt, &attr);
7373
unsigned int rt = NVSHMEMX_INIT_WITH_MPI_COMM;
7474
rt = NVSHMEMX_INIT_WITH_SHMEM;
7575
nvshmemx_init_attr(rt, &attr);
7676

77-
// CHECK: dpct::shmem::init_attr(static_cast<ishmemx_runtime_type_t>(0), &attr);
77+
// CHECK: dpct::shmemx::init_attr(0, &attr);
7878
nvshmemx_init_attr(0, &attr);
7979

8080
// CHECK: ishmem_init();

clang/test/dpct/nvshmem/sig_ops.cu

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ __host__ __device__ void test() {
4848

4949
// nvshmemx_signal_op
5050
// ishmemx_signal_set/add
51-
// CHECK: dpct::shmem::signal_op(&sig_addr, signal, sig_op, pe);
52-
// CHECK-NEXT: dpct::shmem::signal_op(&sig_addr, signal, ISHMEM_SIGNAL_SET, pe);
53-
// CHECK-NEXT: dpct::shmem::signal_op(&sig_addr, signal, ISHMEM_SIGNAL_ADD, pe);
51+
// CHECK: dpct::shmemx::signal_op(&sig_addr, signal, sig_op, pe);
52+
// CHECK-NEXT: dpct::shmemx::signal_op(&sig_addr, signal, ISHMEM_SIGNAL_SET, pe);
53+
// CHECK-NEXT: dpct::shmemx::signal_op(&sig_addr, signal, ISHMEM_SIGNAL_ADD, pe);
5454
nvshmemx_signal_op(&sig_addr, signal, sig_op, pe);
5555
nvshmemx_signal_op(&sig_addr, signal, NVSHMEM_SIGNAL_SET, pe);
5656
nvshmemx_signal_op(&sig_addr, signal, NVSHMEM_SIGNAL_ADD, pe);

0 commit comments

Comments
 (0)