1414 * See the License for the specific language governing permissions and
1515 * limitations under the License.
1616 */
17- #include < iostream>
18- #include < cassert>
19-
2017#include < sys/time.h>
2118
19+ #include < cassert>
20+ #include < iostream>
21+
2222#include " nixl.h"
2323#include " ucx_backend.h"
2424
2525std::string agent1 (" Agent001" );
2626std::string agent2 (" Agent002" );
2727
28- void check_buf (void * buf, size_t len) {
29-
28+ void check_buf (void * buf, size_t len)
29+ {
3030 // Do some checks on the data.
31- for (size_t i = 0 ; i<len; i++){
32- assert (((uint8_t *) buf)[i] == 0xbb );
33- }
31+ for (size_t i = 0 ; i < len; i++) { assert (((uint8_t *)buf)[i] == 0xbb ); }
3432}
3533
36- bool equal_buf (void * buf1, void * buf2, size_t len) {
37-
34+ bool equal_buf (void * buf1, void * buf2, size_t len)
35+ {
3836 // Do some checks on the data.
39- for (size_t i = 0 ; i<len; i++)
40- if (((uint8_t *) buf1)[i] != ((uint8_t *) buf2)[i])
41- return false ;
37+ for (size_t i = 0 ; i < len; i++)
38+ if (((uint8_t *)buf1)[i] != ((uint8_t *)buf2)[i]) return false ;
4239 return true ;
4340}
4441
45- void printParams (const nixl_b_params_t & params, const nixl_mem_list_t & mems) {
42+ void printParams (const nixl_b_params_t ¶ms, const nixl_mem_list_t &mems)
43+ {
4644 if (params.empty ()) {
4745 std::cout << " Parameters: (empty)" << std::endl;
4846 return ;
4947 }
5048
5149 std::cout << " Parameters:" << std::endl;
52- for (const auto & pair : params) {
50+ for (const auto & pair : params) {
5351 std::cout << " " << pair.first << " = " << pair.second << std::endl;
5452 }
5553
@@ -59,15 +57,15 @@ void printParams(const nixl_b_params_t& params, const nixl_mem_list_t& mems) {
5957 }
6058
6159 std::cout << " Mems:" << std::endl;
62- for (const auto & elm : mems) {
60+ for (const auto & elm : mems) {
6361 std::cout << " " << nixlEnumStrings::memTypeStr (elm) << std::endl;
6462 }
6563}
6664
6765int main ()
6866{
6967 nixl_status_t ret1, ret2;
70- std::string ret_s1, ret_s2;
68+ std::string ret_s1, ret_s2;
7169
7270 // Example: assuming two agents running on the same machine,
7371 // with separate memory regions in DRAM
@@ -83,39 +81,38 @@ int main()
8381 std::vector<nixl_backend_t > plugins;
8482
8583 ret1 = A1.getAvailPlugins (plugins);
86- assert (ret1 == NIXL_SUCCESS);
84+ assert (ret1 == NIXL_SUCCESS);
8785
8886 std::cout << " Available plugins:\n " ;
8987
90- for (nixl_backend_t b: plugins)
91- std::cout << b << " \n " ;
88+ for (nixl_backend_t b : plugins) std::cout << b << " \n " ;
9289
9390 ret1 = A1.getPluginParams (" UCX" , mems1, init1);
9491 ret2 = A2.getPluginParams (" UCX" , mems2, init2);
9592
96- assert (ret1 == NIXL_SUCCESS);
97- assert (ret2 == NIXL_SUCCESS);
93+ assert (ret1 == NIXL_SUCCESS);
94+ assert (ret2 == NIXL_SUCCESS);
9895
9996 std::cout << " Params before init:\n " ;
10097 printParams (init1, mems1);
10198 printParams (init2, mems2);
10299
103- nixlBackendH* ucx1, *ucx2;
100+ nixlBackendH * ucx1, *ucx2;
104101 ret1 = A1.createBackend (" UCX" , init1, ucx1);
105102 ret2 = A2.createBackend (" UCX" , init2, ucx2);
106103
107104 nixl_opt_args_t extra_params1, extra_params2;
108105 extra_params1.backends .push_back (ucx1);
109106 extra_params2.backends .push_back (ucx2);
110107
111- assert (ret1 == NIXL_SUCCESS);
112- assert (ret2 == NIXL_SUCCESS);
108+ assert (ret1 == NIXL_SUCCESS);
109+ assert (ret2 == NIXL_SUCCESS);
113110
114111 ret1 = A1.getBackendParams (ucx1, mems1, init1);
115112 ret2 = A2.getBackendParams (ucx2, mems2, init2);
116113
117- assert (ret1 == NIXL_SUCCESS);
118- assert (ret2 == NIXL_SUCCESS);
114+ assert (ret1 == NIXL_SUCCESS);
115+ assert (ret2 == NIXL_SUCCESS);
119116
120117 std::cout << " Params after init:\n " ;
121118 printParams (init1, mems1);
@@ -130,22 +127,22 @@ int main()
130127
131128 // User allocates memories, and passes the corresponding address
132129 // and length to register with the backend
133- nixlBlobDesc buff1, buff2, buff3;
130+ nixlBlobDesc buff1, buff2, buff3;
134131 nixl_reg_dlist_t dlist1 (DRAM_SEG), dlist2 (DRAM_SEG);
135- size_t len = 256 ;
136- void * addr1 = calloc (1 , len);
137- void * addr2 = calloc (1 , len);
132+ size_t len = 256 ;
133+ void * addr1 = calloc (1 , len);
134+ void * addr2 = calloc (1 , len);
138135
139136 memset (addr1, 0xbb , len);
140137 memset (addr2, 0 , len);
141138
142- buff1.addr = (uintptr_t ) addr1;
143- buff1.len = len;
139+ buff1.addr = (uintptr_t )addr1;
140+ buff1.len = len;
144141 buff1.devId = 0 ;
145142 dlist1.addDesc (buff1);
146143
147- buff2.addr = (uintptr_t ) addr2;
148- buff2.len = len;
144+ buff2.addr = (uintptr_t )addr2;
145+ buff2.len = len;
149146 buff2.devId = 0 ;
150147 dlist2.addDesc (buff2);
151148
@@ -156,85 +153,86 @@ int main()
156153 ret1 = A1.registerMem (dlist1, &extra_params1);
157154 ret2 = A2.registerMem (dlist2, &extra_params2);
158155
159- assert (ret1 == NIXL_SUCCESS);
160- assert (ret2 == NIXL_SUCCESS);
156+ assert (ret1 == NIXL_SUCCESS);
157+ assert (ret2 == NIXL_SUCCESS);
161158
162159 std::string meta1;
163160 ret1 = A1.getLocalMD (meta1);
164161 std::string meta2;
165162 ret2 = A2.getLocalMD (meta2);
166163
167- assert (ret1 == NIXL_SUCCESS);
168- assert (ret2 == NIXL_SUCCESS);
164+ assert (ret1 == NIXL_SUCCESS);
165+ assert (ret2 == NIXL_SUCCESS);
169166
170167 std::cout << " Agent1's Metadata: " << meta1 << " \n " ;
171168 std::cout << " Agent2's Metadata: " << meta2 << " \n " ;
172169
173- ret1 = A1.loadRemoteMD (meta2, ret_s1);
170+ ret1 = A1.loadRemoteMD (meta2, ret_s1);
174171
175- assert (ret1 == NIXL_SUCCESS);
176- assert (ret2 == NIXL_SUCCESS);
172+ assert (ret1 == NIXL_SUCCESS);
173+ assert (ret2 == NIXL_SUCCESS);
177174
178175 size_t req_size = 8 ;
179176 size_t dst_offset = 8 ;
180177
181- nixl_xfer_dlist_t req_src_descs (DRAM_SEG);
182- nixlBasicDesc req_src;
183- req_src.addr = (uintptr_t ) (((char *) addr1) + 16 ); // random offset
184- req_src.len = req_size;
185- req_src.devId = 0 ;
178+ nixl_xfer_dlist_t req_src_descs (DRAM_SEG);
179+ nixlBasicDesc req_src;
180+ req_src.addr = (uintptr_t )(((char *)addr1) + 16 ); // random offset
181+ req_src.len = req_size;
182+ req_src.devId = 0 ;
186183 req_src_descs.addDesc (req_src);
187184
188- nixl_xfer_dlist_t req_dst_descs (DRAM_SEG);
189- nixlBasicDesc req_dst;
190- req_dst.addr = (uintptr_t ) ((char *) addr2) + dst_offset; // random offset
191- req_dst.len = req_size;
185+ nixl_xfer_dlist_t req_dst_descs (DRAM_SEG);
186+ nixlBasicDesc req_dst;
187+ req_dst.addr = (uintptr_t )((char *)addr2) + dst_offset; // random offset
188+ req_dst.len = req_size;
192189 req_dst.devId = 0 ;
193190 req_dst_descs.addDesc (req_dst);
194191
195192 std::cout << " Transfer request from " << addr1 << " to " << addr2 << " \n " ;
196- nixlXferReqH * req_handle;
193+ nixlXferReqH* req_handle;
197194
198195 extra_params1.notifMsg = " notification" ;
199196 extra_params1.hasNotif = true ;
200- ret1 = A1.createXferReq (NIXL_WRITE, req_src_descs, req_dst_descs, agent2, req_handle, &extra_params1);
201- assert (ret1 == NIXL_SUCCESS);
197+ ret1 = A1.createXferReq (NIXL_WRITE, req_src_descs, req_dst_descs, agent2, req_handle,
198+ &extra_params1);
199+ assert (ret1 == NIXL_SUCCESS);
202200
203201 nixl_status_t status = A1.postXferReq (req_handle);
204202
205203 std::cout << " Transfer was posted\n " ;
206204
207205 nixl_notifs_t notif_map;
208- int n_notifs = 0 ;
206+ int n_notifs = 0 ;
209207
210208 while (status != NIXL_SUCCESS || n_notifs == 0 ) {
211209 if (status != NIXL_SUCCESS) status = A1.getXferStatus (req_handle);
212210 if (n_notifs == 0 ) ret2 = A2.getNotifs (notif_map);
213- assert (status >= 0 );
214- assert (ret2 == NIXL_SUCCESS);
211+ assert (status >= 0 );
212+ assert (ret2 == NIXL_SUCCESS);
215213 n_notifs = notif_map.size ();
216214 }
217215
218216 std::vector<std::string> agent1_notifs = notif_map[agent1];
219- assert (agent1_notifs.size () == 1 );
220- assert (agent1_notifs.front () == " notification" );
221- notif_map[agent1].clear (); // Redundant, for testing
217+ assert (agent1_notifs.size () == 1 );
218+ assert (agent1_notifs.front () == " notification" );
219+ notif_map[agent1].clear (); // Redundant, for testing
222220 notif_map.clear ();
223221 n_notifs = 0 ;
224222
225223 std::cout << " Transfer verified\n " ;
226224
227225 ret1 = A1.releaseXferReq (req_handle);
228- assert (ret1 == NIXL_SUCCESS);
226+ assert (ret1 == NIXL_SUCCESS);
229227
230228 ret1 = A1.deregisterMem (dlist1, &extra_params1);
231229 ret2 = A2.deregisterMem (dlist2, &extra_params2);
232- assert (ret1 == NIXL_SUCCESS);
233- assert (ret2 == NIXL_SUCCESS);
230+ assert (ret1 == NIXL_SUCCESS);
231+ assert (ret2 == NIXL_SUCCESS);
234232
235- // only initiator should call invalidate
233+ // only initiator should call invalidate
236234 ret1 = A1.invalidateRemoteMD (agent2);
237- assert (ret1 == NIXL_SUCCESS);
235+ assert (ret1 == NIXL_SUCCESS);
238236
239237 free (addr1);
240238 free (addr2);
0 commit comments