@@ -119,6 +119,7 @@ struct umfIpcTest : umf_test::test,
119119        providerParamsDestroy = provider_params_destroy;
120120        memAccessor = accessor;
121121        openedIpcCacheSize = getOpenedIpcCacheSize ();
122+         numThreads = std::max (10 , (int )utils_get_num_cores ());
122123    }
123124
124125    void  TearDown () override  { test::TearDown (); }
@@ -188,7 +189,7 @@ struct umfIpcTest : umf_test::test,
188189              closeCount (0 ) {}
189190    };
190191
191-     static   constexpr   int  NTHREADS =  10 ;
192+     unsigned   int  numThreads ;
192193    stats_type stat;
193194    MemoryAccessor *memAccessor = nullptr ;
194195
@@ -214,9 +215,9 @@ struct umfIpcTest : umf_test::test,
214215            ptrs.push_back (ptr);
215216        }
216217
217-         std::array <std::vector<umf_ipc_handle_t >, NTHREADS > ipcHandles;
218+         std::vector <std::vector<umf_ipc_handle_t >> ipcHandles (numThreads) ;
218219
219-         umf_test::syncthreads_barrier syncthreads (NTHREADS );
220+         umf_test::syncthreads_barrier syncthreads (numThreads );
220221
221222        auto  getHandlesFn = [shuffle, &ipcHandles, &ptrs,
222223                             &syncthreads](size_t  tid) {
@@ -238,7 +239,7 @@ struct umfIpcTest : umf_test::test,
238239            }
239240        };
240241
241-         umf_test::parallel_exec (NTHREADS , getHandlesFn);
242+         umf_test::parallel_exec (numThreads , getHandlesFn);
242243
243244        auto  putHandlesFn = [&ipcHandles, &syncthreads](size_t  tid) {
244245            syncthreads ();
@@ -248,7 +249,7 @@ struct umfIpcTest : umf_test::test,
248249            }
249250        };
250251
251-         umf_test::parallel_exec (NTHREADS , putHandlesFn);
252+         umf_test::parallel_exec (numThreads , putHandlesFn);
252253
253254        for  (void  *ptr : ptrs) {
254255            umf_result_t  ret = umfPoolFree (pool.get (), ptr);
@@ -272,7 +273,7 @@ struct umfIpcTest : umf_test::test,
272273            ptrs.push_back (ptr);
273274        }
274275
275-         umf_test::syncthreads_barrier syncthreads (NTHREADS );
276+         umf_test::syncthreads_barrier syncthreads (numThreads );
276277
277278        auto  getPutHandlesFn = [shuffle, &ptrs, &syncthreads](size_t ) {
278279            //  Each thread gets a copy of the pointers to shuffle them
@@ -294,7 +295,7 @@ struct umfIpcTest : umf_test::test,
294295            }
295296        };
296297
297-         umf_test::parallel_exec (NTHREADS , getPutHandlesFn);
298+         umf_test::parallel_exec (numThreads , getPutHandlesFn);
298299
299300        for  (void  *ptr : ptrs) {
300301            umf_result_t  ret = umfPoolFree (pool.get (), ptr);
@@ -328,13 +329,13 @@ struct umfIpcTest : umf_test::test,
328329            ipcHandles.push_back (ipcHandle);
329330        }
330331
331-         std::array <std::vector<void  *>, NTHREADS > openedIpcHandles;
332+         std::vector <std::vector<umf_ipc_handle_t > > openedIpcHandles (numThreads) ;
332333        umf_ipc_handler_handle_t  ipcHandler = nullptr ;
333334        ret = umfPoolGetIPCHandler (pool.get (), &ipcHandler);
334335        ASSERT_EQ (ret, UMF_RESULT_SUCCESS);
335336        ASSERT_NE (ipcHandler, nullptr );
336337
337-         umf_test::syncthreads_barrier syncthreads (NTHREADS );
338+         umf_test::syncthreads_barrier syncthreads (numThreads );
338339
339340        auto  openHandlesFn = [shuffle, &ipcHandles, &openedIpcHandles,
340341                              &syncthreads, ipcHandler](size_t  tid) {
@@ -351,11 +352,11 @@ struct umfIpcTest : umf_test::test,
351352                umf_result_t  ret =
352353                    umfOpenIPCHandle (ipcHandler, ipcHandle, &ptr);
353354                ASSERT_EQ (ret, UMF_RESULT_SUCCESS);
354-                 openedIpcHandles[tid].push_back (ptr);
355+                 openedIpcHandles[tid].push_back (( umf_ipc_data_t  *) ptr);
355356            }
356357        };
357358
358-         umf_test::parallel_exec (NTHREADS , openHandlesFn);
359+         umf_test::parallel_exec (numThreads , openHandlesFn);
359360
360361        auto  closeHandlesFn = [&openedIpcHandles, &syncthreads](size_t  tid) {
361362            syncthreads ();
@@ -365,7 +366,7 @@ struct umfIpcTest : umf_test::test,
365366            }
366367        };
367368
368-         umf_test::parallel_exec (NTHREADS , closeHandlesFn);
369+         umf_test::parallel_exec (numThreads , closeHandlesFn);
369370
370371        for  (auto  ipcHandle : ipcHandles) {
371372            ret = umfPutIPCHandle (ipcHandle);
@@ -412,7 +413,7 @@ struct umfIpcTest : umf_test::test,
412413        ASSERT_EQ (ret, UMF_RESULT_SUCCESS);
413414        ASSERT_NE (ipcHandler, nullptr );
414415
415-         umf_test::syncthreads_barrier syncthreads (NTHREADS );
416+         umf_test::syncthreads_barrier syncthreads (numThreads );
416417
417418        auto  openCloseHandlesFn = [shuffle, &ipcHandles, &syncthreads,
418419                                   ipcHandler](size_t ) {
@@ -434,7 +435,7 @@ struct umfIpcTest : umf_test::test,
434435            }
435436        };
436437
437-         umf_test::parallel_exec (NTHREADS , openCloseHandlesFn);
438+         umf_test::parallel_exec (numThreads , openCloseHandlesFn);
438439
439440        for  (auto  ipcHandle : ipcHandles) {
440441            ret = umfPutIPCHandle (ipcHandle);
0 commit comments