@@ -225,18 +225,15 @@ int main()
225
225
k_queue_init (&inferenceQueue);
226
226
227
227
/* inferenceSender tasks to create and queue the jobs */
228
+ const size_t inferenceSenderStackSize = 2048 ;
229
+ static K_THREAD_STACK_ARRAY_DEFINE (inferenceSenderStacks, NUM_JOB_TASKS,
230
+ inferenceSenderStackSize);
228
231
for (int n = 0 ; n < NUM_JOB_TASKS; n++) {
229
- const size_t stackSize = 2048 ;
230
- k_thread_stack_t *stack = static_cast <k_thread_stack_t *>(k_malloc (stackSize));
231
- if (stack == nullptr ) {
232
- printf (" Failed to allocate stack to 'inferenceSenderTask%i'\n " , n);
233
- exit (1 );
234
- }
235
-
236
232
auto &thread = threads[nthreads];
237
233
string *name = new string (" sender " + to_string (n));
238
234
239
- thread.id = k_thread_create (&thread.thread , stack, stackSize, inferenceSenderTask,
235
+ thread.id = k_thread_create (&thread.thread , inferenceSenderStacks[n],
236
+ inferenceSenderStackSize, inferenceSenderTask,
240
237
name, heapPtr, &inferenceQueue, 3 , 0 , K_FOREVER);
241
238
if (thread.id == 0 ) {
242
239
printf (" Failed to create 'inferenceSenderTask%i'\n " , n);
@@ -248,21 +245,18 @@ int main()
248
245
249
246
/* Create inferenceProcess tasks to process the queued jobs */
250
247
InferenceProcessParams taskParams[NUM_INFERENCE_TASKS];
248
+ const size_t inferenceProcessStackSize = 8192 ;
249
+ static K_THREAD_STACK_ARRAY_DEFINE (inferenceProcessStacks, NUM_INFERENCE_TASKS,
250
+ inferenceProcessStackSize);
251
251
for (int n = 0 ; n < NUM_INFERENCE_TASKS; n++) {
252
- const size_t stackSize = 8192 ;
253
- k_thread_stack_t *stack = static_cast <k_thread_stack_t *>(k_malloc (stackSize));
254
- if (stack == nullptr ) {
255
- printf (" Failed to allocate stack to 'inferenceSenderTask%i'\n " , n);
256
- exit (1 );
257
- }
258
-
259
252
auto &thread = threads[nthreads];
260
253
auto &taskParam = taskParams[n];
261
254
taskParam = InferenceProcessParams (&inferenceQueue, inferenceProcessTensorArena[n],
262
255
arenaSize);
263
256
string *name = new string (" runner " + to_string (n));
264
257
265
- thread.id = k_thread_create (&thread.thread , stack, stackSize, inferenceProcessTask,
258
+ thread.id = k_thread_create (&thread.thread , inferenceProcessStacks[n],
259
+ inferenceProcessStackSize, inferenceProcessTask,
266
260
name, heapPtr, &taskParam, 2 , 0 , K_FOREVER);
267
261
if (thread.id == 0 ) {
268
262
printf (" Failed to create 'inferenceProcessTask%i'\n " , n);
0 commit comments