DilyaraL

2курсОСИ3занятие

Mar 4th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "omp.h"
  3. #include <iostream>
  4. #include <windows.h>
  5. #include <stdio.h>
  6. using namespace std;
  7.  
  8.  
  9. int main()
  10. {
  11. setlocale(LC_ALL, "Russia");
  12. /*int count, num;
  13. #pragma omp parallel
  14. {
  15. count = omp_get_num_threads();
  16. num = omp_get_thread_num();
  17. if (num == 0) printf("Total threads : %d\n", count);
  18. else printf("Number of thread %d\n", num);
  19. }*/
  20.  
  21. //////////////////////////////////////////////////////
  22.  
  23. /*int A[10], B[10], C[10], i, n;
  24. //Заполним исходные массивы
  25. for (i = 0; i<10; i++) { A[i] = i; B[i] = 2 * i; C[i] = 0; }
  26. #pragma omp parallel shared(A, B, C) private(i, n)
  27. {
  28. // Получим номер текущей нити
  29. n = omp_get_thread_num();
  30. #pragma omp for
  31. for (i = 0; i<10; i++)
  32. {
  33. C[i] = A[i] + B[i];
  34. printf("Thread %d add elements with the number %d\n", n, i);
  35. }
  36. }*/
  37.  
  38. ///////////////////////////////////////////////////////
  39.  
  40. /*int i;
  41. #pragma omp parallel private(i)
  42. {
  43. //#pragma omp for schedule (static)//всегда по разному 0003232111
  44. //#pragma omp for schedule (static, 1)//всегда по разному 0332211100
  45. //#pragma omp for schedule (static, 2)//всегда по разному 0101003322
  46. //#pragma omp for schedule (dynamic)//всегда по разному 0001010123
  47. //#pragma omp for schedule (dynamic, 2)//всегда по разному 0101020233
  48. //#pragma omp for schedule (guided)//всегда по разному
  49. #pragma omp for schedule (guided, 2)//всегда по разному
  50. for (i = 0; i<10; i++)
  51. {
  52. printf("Thread %d did iteration %d\n", omp_get_thread_num(), i);
  53. //sleep(1);
  54. }}*/
  55.  
  56. /////////////////////////////////////////////////////////
  57.  
  58. /*int i;
  59. #pragma omp parallel private(i)
  60. {
  61. //#pragma omp for schedule (static, 6)//
  62. //#pragma omp for schedule (dynamic, 6)
  63. #pragma omp for schedule (guided, 6)
  64. for (i = 0; i<13; i++)
  65. {
  66. printf("Thread %d did iteration %d\n", omp_get_thread_num(), i);
  67. //sleep(1);
  68. }
  69. }*/
  70.  
  71. //////////////////////////////////////////////////////////
  72.  
  73. /*typedef enum omp_sched_t {
  74. omp_sched_static = 1,
  75. omp_sched_dynamic = 2,
  76. omp_sched_guided = 3,
  77. omp_sched_auto = 4
  78. } omp_sched_t;*/
  79.  
  80. /////////////////////////////////////////////////////////
  81.  
  82. /*int n;
  83. #pragma omp parallel private(n)
  84. {
  85. n = omp_get_thread_num();
  86. #pragma omp sections
  87. {
  88. #pragma omp section
  89. { printf("First section, process %d\n", n); }
  90. #pragma omp section
  91. { printf("Second section, process %d\n", n); }
  92. #pragma omp section
  93. { printf("Third section, process %d\n", n); }
  94. }
  95. printf("Parallel area, process %d\n", n);
  96. }*/
  97.  
  98.  
  99. ////////////////////////////////////////////////
  100.  
  101.  
  102. int n = 0;
  103. #pragma omp parallel
  104. {
  105. #pragma omp sections// lastprivate(n)
  106. {
  107. #pragma omp section
  108. { n=1;}
  109. #pragma omp section
  110. { n=2; }
  111. #pragma omp section
  112. { n=3;}
  113. }
  114. printf("Value n on thread %d: %d\n", omp_get_thread_num(), n);
  115. }
  116. printf("Value n in sq area: %d\n", n);
  117.  
  118. system("pause");
  119. }
Advertisement
Add Comment
Please, Sign In to add comment