barrier.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /* StarPU --- Runtime system for heterogeneous multicore architectures.
  2. *
  3. * Copyright (C) 2013 Inria
  4. * Copyright (C) 2010-2011,2013-2015,2017 CNRS
  5. * Copyright (C) 2011-2012,2014-2015,2017 Université de Bordeaux
  6. *
  7. * StarPU is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU Lesser General Public License as published by
  9. * the Free Software Foundation; either version 2.1 of the License, or (at
  10. * your option) any later version.
  11. *
  12. * StarPU is distributed in the hope that it will be useful, but
  13. * WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  15. *
  16. * See the GNU Lesser General Public License in COPYING.LGPL for more details.
  17. */
  18. #ifndef __COMMON_BARRIER_H__
  19. #define __COMMON_BARRIER_H__
  20. #include <starpu_thread.h>
  21. struct _starpu_barrier
  22. {
  23. unsigned count;
  24. unsigned reached_start;
  25. unsigned reached_exit;
  26. double reached_flops;
  27. starpu_pthread_mutex_t mutex;
  28. starpu_pthread_mutex_t mutex_exit;
  29. starpu_pthread_cond_t cond;
  30. };
  31. int _starpu_barrier_init(struct _starpu_barrier *barrier, int count);
  32. int _starpu_barrier_destroy(struct _starpu_barrier *barrier);
  33. int _starpu_barrier_wait(struct _starpu_barrier *barrier);
  34. #endif // __COMMON_BARRIER_H__