Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include <omp.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <Windows.h>
  5. #include <atomic>
  6.  
  7. void gpu() {
  8.     Sleep(100);
  9. }
  10. void cpu() {
  11.     Sleep(1000);
  12. }
  13.  
  14. int main(int argc, char* argv[]) {
  15.     int i, n, id, chunk_size_cpu, chunk_size_gpu;
  16.  
  17.     n = 20;
  18.     chunk_size_cpu = 1;
  19.     chunk_size_gpu = 5;
  20.     int counter = 0;
  21.  
  22. #pragma omp parallel default(none) private(i, id) shared(n, chunk_size_cpu, chunk_size_gpu, counter)
  23.     {
  24. #pragma omp single
  25.         {
  26.             printf("Program jest wykonywany na %d watkach.\n", omp_get_num_threads());
  27.         }
  28.  
  29. #pragma omp for schedule(dynamic, chunk_size_cpu)
  30.         for (i = 0; i < n; i++) {
  31.             if (i < counter) {
  32.                 continue;
  33.             }
  34.             else {
  35.                 id = omp_get_thread_num();
  36.                 if (id == 0) {
  37.                     counter += chunk_size_gpu;
  38.                     gpu();
  39.                     printf("Iteracja %d - %d wykonana przez watek nr. %d.\n", i, i + chunk_size_gpu, id);
  40.                 }
  41.                 else {
  42.                     counter += chunk_size_cpu;
  43.                     cpu();
  44.                     printf("Iteracja %d wykonana przez watek nr. %d.\n", i, id);
  45.                 }
  46.             }
  47.         }
  48.     }
  49.  
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement