@@ -44,7 +44,7 @@ namespace rocshmem {
4444 * @note Derived classes which use Backend as a base class must add
4545 * themselves to this enum class to support static polymorphism.
4646 */
47- enum class BackendType { RO_BACKEND, GPU_IB_BACKEND };
47+ enum class BackendType { RO_BACKEND, GPU_IB_BACKEND, IPC_BACKEND };
4848
4949/* *
5050 * @brief Helper macro for some dispatch calls
@@ -57,9 +57,12 @@ enum class BackendType { RO_BACKEND, GPU_IB_BACKEND };
5757#ifdef USE_GPU_IB
5858#define DISPATCH (Func ) \
5959 static_cast <GPUIBContext *>(this )->Func;
60- #else
60+ #elif defined(USE_RO)
6161#define DISPATCH (Func ) \
6262 static_cast <ROContext *>(this )->Func;
63+ #else
64+ #define DISPATCH (Func ) \
65+ static_cast <IPCContext *>(this )->Func;
6366#endif
6467
6568/* *
@@ -69,10 +72,15 @@ enum class BackendType { RO_BACKEND, GPU_IB_BACKEND };
6972#define DISPATCH_RET (Func ) \
7073 auto ret_val = static_cast <GPUIBContext *>(this )->Func; \
7174 return ret_val;
72- #else
75+ #elif defined(USE_RO)
7376#define DISPATCH_RET (Func ) \
7477 auto ret_val = static_cast <ROContext *>(this )->Func; \
7578 return ret_val;
79+ #else
80+ #define DISPATCH_RET (Func ) \
81+ auto ret_val{0 }; \
82+ ret_val = static_cast <IPCContext *>(this )->Func; \
83+ return ret_val;
7684#endif
7785/* *
7886 * @brief Device static dispatch method call with a return type of pointer.
@@ -82,11 +90,16 @@ enum class BackendType { RO_BACKEND, GPU_IB_BACKEND };
8290 void *ret_val{nullptr }; \
8391 ret_val = static_cast <GPUIBContext *>(this )->Func; \
8492 return ret_val;
85- #else
93+ #elif defined(USE_RO)
8694#define DISPATCH_RET_PTR (Func ) \
8795 void *ret_val{nullptr }; \
8896 ret_val = static_cast <ROContext *>(this )->Func; \
8997 return ret_val;
98+ #else
99+ #define DISPATCH_RET_PTR (Func ) \
100+ void *ret_val{nullptr }; \
101+ ret_val = static_cast <IPCContext *>(this )->Func; \
102+ return ret_val;
90103#endif
91104
92105/* *
@@ -98,8 +111,10 @@ enum class BackendType { RO_BACKEND, GPU_IB_BACKEND };
98111 */
99112#ifdef USE_GPU_IB
100113#define HOST_DISPATCH (Func ) static_cast <GPUIBHostContext *>(this )->Func;
101- #else
114+ #elif defined(USE_RO)
102115#define HOST_DISPATCH (Func ) static_cast <ROHostContext *>(this )->Func;
116+ #else
117+ #define HOST_DISPATCH (Func ) static_cast <IPCHostContext *>(this )->Func;
103118#endif
104119/* *
105120 * @brief Host static dispatch method call with return value.
@@ -113,10 +128,15 @@ enum class BackendType { RO_BACKEND, GPU_IB_BACKEND };
113128#define HOST_DISPATCH_RET (Func ) \
114129 auto ret_val = static_cast <GPUIBHostContext *>(this )->Func; \
115130 return ret_val;
116- #else
131+ #elif defined(USE_RO)
117132#define HOST_DISPATCH_RET (Func ) \
118133 auto ret_val = static_cast <ROHostContext *>(this )->Func; \
119134 return ret_val;
135+ #else
136+ #define HOST_DISPATCH_RET (Func ) \
137+ auto ret_val{0 }; \
138+ ret_val = static_cast <IPCHostContext *>(this )->Func; \
139+ return ret_val;
120140#endif
121141
122142} // namespace rocshmem
0 commit comments