@@ -93,6 +93,7 @@ struct umfIpcTest : umf_test::test,
9393        providerParamsDestroy = provider_params_destroy;
9494        memAccessor = accessor;
9595        openedIpcCacheSize = getOpenedIpcCacheSize ();
96+         numThreads = std::max (10 , (int )utils_get_num_cores ());
9697    }
9798
9899    void  TearDown () override  { test::TearDown (); }
@@ -162,7 +163,7 @@ struct umfIpcTest : umf_test::test,
162163              closeCount (0 ) {}
163164    };
164165
165-     static   constexpr   int  NTHREADS =  10 ;
166+     unsigned   int  numThreads ;
166167    stats_type stat;
167168    MemoryAccessor *memAccessor = nullptr ;
168169
@@ -188,9 +189,9 @@ struct umfIpcTest : umf_test::test,
188189            ptrs.push_back (ptr);
189190        }
190191
191-         std::array <std::vector<umf_ipc_handle_t >, NTHREADS > ipcHandles;
192+         std::vector <std::vector<umf_ipc_handle_t >> ipcHandles (numThreads) ;
192193
193-         umf_test::syncthreads_barrier syncthreads (NTHREADS );
194+         umf_test::syncthreads_barrier syncthreads (numThreads );
194195
195196        auto  getHandlesFn = [shuffle, &ipcHandles, &ptrs,
196197                             &syncthreads](size_t  tid) {
@@ -212,7 +213,7 @@ struct umfIpcTest : umf_test::test,
212213            }
213214        };
214215
215-         umf_test::parallel_exec (NTHREADS , getHandlesFn);
216+         umf_test::parallel_exec (numThreads , getHandlesFn);
216217
217218        auto  putHandlesFn = [&ipcHandles, &syncthreads](size_t  tid) {
218219            syncthreads ();
@@ -222,7 +223,7 @@ struct umfIpcTest : umf_test::test,
222223            }
223224        };
224225
225-         umf_test::parallel_exec (NTHREADS , putHandlesFn);
226+         umf_test::parallel_exec (numThreads , putHandlesFn);
226227
227228        for  (void  *ptr : ptrs) {
228229            umf_result_t  ret = umfPoolFree (pool.get (), ptr);
@@ -246,7 +247,7 @@ struct umfIpcTest : umf_test::test,
246247            ptrs.push_back (ptr);
247248        }
248249
249-         umf_test::syncthreads_barrier syncthreads (NTHREADS );
250+         umf_test::syncthreads_barrier syncthreads (numThreads );
250251
251252        auto  getPutHandlesFn = [shuffle, &ptrs, &syncthreads](size_t ) {
252253            //  Each thread gets a copy of the pointers to shuffle them
@@ -268,7 +269,7 @@ struct umfIpcTest : umf_test::test,
268269            }
269270        };
270271
271-         umf_test::parallel_exec (NTHREADS , getPutHandlesFn);
272+         umf_test::parallel_exec (numThreads , getPutHandlesFn);
272273
273274        for  (void  *ptr : ptrs) {
274275            umf_result_t  ret = umfPoolFree (pool.get (), ptr);
@@ -302,13 +303,13 @@ struct umfIpcTest : umf_test::test,
302303            ipcHandles.push_back (ipcHandle);
303304        }
304305
305-         std::array <std::vector<void  *>, NTHREADS > openedIpcHandles;
306+         std::vector <std::vector<umf_ipc_handle_t > > openedIpcHandles (numThreads) ;
306307        umf_ipc_handler_handle_t  ipcHandler = nullptr ;
307308        ret = umfPoolGetIPCHandler (pool.get (), &ipcHandler);
308309        ASSERT_EQ (ret, UMF_RESULT_SUCCESS);
309310        ASSERT_NE (ipcHandler, nullptr );
310311
311-         umf_test::syncthreads_barrier syncthreads (NTHREADS );
312+         umf_test::syncthreads_barrier syncthreads (numThreads );
312313
313314        auto  openHandlesFn = [shuffle, &ipcHandles, &openedIpcHandles,
314315                              &syncthreads, ipcHandler](size_t  tid) {
@@ -325,11 +326,11 @@ struct umfIpcTest : umf_test::test,
325326                umf_result_t  ret =
326327                    umfOpenIPCHandle (ipcHandler, ipcHandle, &ptr);
327328                ASSERT_EQ (ret, UMF_RESULT_SUCCESS);
328-                 openedIpcHandles[tid].push_back (ptr);
329+                 openedIpcHandles[tid].push_back (( umf_ipc_data_t  *) ptr);
329330            }
330331        };
331332
332-         umf_test::parallel_exec (NTHREADS , openHandlesFn);
333+         umf_test::parallel_exec (numThreads , openHandlesFn);
333334
334335        auto  closeHandlesFn = [&openedIpcHandles, &syncthreads](size_t  tid) {
335336            syncthreads ();
@@ -339,7 +340,7 @@ struct umfIpcTest : umf_test::test,
339340            }
340341        };
341342
342-         umf_test::parallel_exec (NTHREADS , closeHandlesFn);
343+         umf_test::parallel_exec (numThreads , closeHandlesFn);
343344
344345        for  (auto  ipcHandle : ipcHandles) {
345346            ret = umfPutIPCHandle (ipcHandle);
@@ -386,7 +387,7 @@ struct umfIpcTest : umf_test::test,
386387        ASSERT_EQ (ret, UMF_RESULT_SUCCESS);
387388        ASSERT_NE (ipcHandler, nullptr );
388389
389-         umf_test::syncthreads_barrier syncthreads (NTHREADS );
390+         umf_test::syncthreads_barrier syncthreads (numThreads );
390391
391392        auto  openCloseHandlesFn = [shuffle, &ipcHandles, &syncthreads,
392393                                   ipcHandler](size_t ) {
@@ -408,7 +409,7 @@ struct umfIpcTest : umf_test::test,
408409            }
409410        };
410411
411-         umf_test::parallel_exec (NTHREADS , openCloseHandlesFn);
412+         umf_test::parallel_exec (numThreads , openCloseHandlesFn);
412413
413414        for  (auto  ipcHandle : ipcHandles) {
414415            ret = umfPutIPCHandle (ipcHandle);
0 commit comments