multithreaded_init.c 991 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <stdio.h>
  2. #include <pthread.h>
  3. #include <starpu.h>
  4. #define NUM_THREADS 5
  5. void *launch_starpu(void *id)
  6. {
  7. starpu_init(NULL);
  8. return NULL;
  9. }
  10. int main(int argc, char **argv)
  11. {
  12. unsigned i;
  13. double timing;
  14. struct timeval start;
  15. struct timeval end;
  16. pthread_t threads[NUM_THREADS];
  17. gettimeofday(&start, NULL);
  18. for (i = 0; i < NUM_THREADS; ++i)
  19. {
  20. int ret = pthread_create(&threads[i], NULL, launch_starpu, NULL);
  21. STARPU_ASSERT(ret == 0);
  22. }
  23. for (i = 0; i < NUM_THREADS; ++i)
  24. {
  25. int ret = pthread_join(threads[i], NULL);
  26. STARPU_ASSERT(ret == 0);
  27. }
  28. gettimeofday(&end, NULL);
  29. timing = (double)((end.tv_sec - start.tv_sec)*1000000 + (end.tv_usec - start.tv_usec));
  30. fprintf(stderr, "Success : %d threads launching simultaneously starpu_init\n", NUM_THREADS);
  31. fprintf(stderr, "Total: %lf secs\n", timing/1000000);
  32. fprintf(stderr, "Per task: %lf usecs\n", timing/NUM_THREADS);
  33. starpu_shutdown();
  34. return 0;
  35. }