aboutsummaryrefslogtreecommitdiffstats
path: root/createbarriergroup.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2024-08-28 16:42:05 +0200
committerMattias Andrée <maandree@kth.se>2024-08-28 16:42:05 +0200
commita24071ae913b223487df78859c8d830f9e69f580 (patch)
treee2ec712cc29461c82cfdd477e8b1ba961b50018d /createbarriergroup.c
parentFirst commit (diff)
downloadanysum-a24071ae913b223487df78859c8d830f9e69f580.tar.gz
anysum-a24071ae913b223487df78859c8d830f9e69f580.tar.bz2
anysum-a24071ae913b223487df78859c8d830f9e69f580.tar.xz
Second commit
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'createbarriergroup.c')
-rw-r--r--createbarriergroup.c59
1 files changed, 0 insertions, 59 deletions
diff --git a/createbarriergroup.c b/createbarriergroup.c
deleted file mode 100644
index 694032b..0000000
--- a/createbarriergroup.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* See LICENSE file for copyright and license details. */
-#include "common.h"
-
-
-#ifndef SINGLE_THREADED
-static void *
-slaveloop(void *thread_param)
-{
- struct thread_data *data = thread_param;
- void (*action)(struct algorithm *, struct global_data *);
- size_t index;
-
- for (;;) {
- barrierwait(&data->group->barrier);
- action = data->global->action;
- if (!action)
- break;
- for (index = data->index; index < data->global->nalgorithms; index += data->group->nthreads + 1U)
- (*action)(&data->global->algorithms[index], data->global);
- barrierwait(&data->group->barrier);
- }
-
- return NULL;
-}
-#endif
-
-
-void
-createbarriergroup(struct barrier_group *group_out, size_t count, struct global_data *global)
-{
-#ifndef SINGLE_THREADED
- size_t i;
-
- count = MAX(count, 64);
-
- group_out->nthreads = count - 1U;
- group_out->threads = NULL;
- if (!group_out->nthreads)
- return;
- group_out->threads = ecalloc(group_out->nthreads, sizeof(*group_out->threads));
-
- if ((errno = pthread_barrier_init(&group_out->barrier, NULL, (unsigned)count)))
- eprintf("pthread_barrier_init NULL %u:", (unsigned)count);
-
- for (i = 0; i < group_out->nthreads; i++) {
- group_out->threads[i].group = group_out;
- group_out->threads[i].global = global;
- group_out->threads[i].index = i + 1U;
- errno = pthread_create(&group_out->threads[i].thread, NULL, &slaveloop, &group_out->threads[i]);
- if (errno)
- eprintf("pthread_create NULL:");
- }
-#else
- group_out->nthreads = 0U;
- group_out->threads = NULL;
- (void) global;
- (void) count;
-#endif
-}