Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. class Summer extends Thread {
  2. int begin;
  3. int end;
  4. int[] sharedBuffer;
  5. int sum = 0;
  6.  
  7. Summer(int begin, int end, int[] sharedBuffer) {
  8. this.begin = begin;
  9. this.end = end;
  10. this.sharedBuffer = sharedBuffer;
  11. }
  12.  
  13. @Override
  14. public void run() {
  15. for (int i = begin; i < end; i++) {
  16. sum += sharedBuffer[i];
  17. }
  18. }
  19.  
  20. int getSum() {
  21. return sum;
  22. }
  23. }
  24.  
  25. public class Main {
  26.  
  27. public static void main(String[] args) {
  28.  
  29. System.out.println("Hello World!");
  30. int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  31.  
  32. Summer thread1 = new Summer(0, 5, numbers);
  33. Summer thread2 = new Summer(5, 10, numbers);
  34.  
  35. thread1.start();
  36. thread2.start();
  37.  
  38. try {
  39. thread1.join();
  40. thread2.join();
  41. } catch (InterruptedException e) {
  42. e.printStackTrace();
  43. }
  44. int sum = thread1.getSum() + thread2.getSum();
  45. System.out.println(sum);
  46.  
  47. }
  48. }
  49.  
  50. #include <iostream>
  51. #include <iomanip>
  52. #include <fstream>
  53. #include <string>
  54. #include <omp.h>
  55. #include "pch.h"
  56. #include <stdio.h>
  57. #include <stdlib.h>
  58.  
  59. using namespace std;
  60.  
  61. int main()
  62. {
  63. const int n = 100;
  64. int sum = 0;
  65. int array[n];
  66.  
  67. for (int i = 0; i < n; i++)
  68. {
  69. array[i] = i+1;
  70. }
  71.  
  72. #pragma omp parallel num_threads(4) //reduction (+:sum)
  73. for (int i = 0; i < n; i++)
  74. {
  75. sum = sum + array[i];
  76. }
  77.  
  78. printf("%d\n", sum);
  79.  
  80. int filteredArray[33];
  81. int tempCounter = 0;
  82. #pragma omp prallalel num_threads(4)
  83. for (int i = 0; i < n; i++)
  84. {
  85. if (array[i] % 3 == 0)
  86. {
  87. filteredArray[tempCounter] = array[i];
  88. tempCounter++;
  89. }
  90. }
  91. int sum2 = 0;
  92. #pragma omp parallel num_threads(4)
  93. for (int i = 0; i < 33; i++)
  94. {
  95. filteredArray[i] = filteredArray[i] * filteredArray[i] * filteredArray[i];
  96. sum2 += filteredArray[i];
  97. }
  98.  
  99. printf("%d\n", sum2);
  100.  
  101. return 0;
  102. }
  103.  
  104.  
  105. #include "cuda_runtime.h"
  106. #include "device_launch_parameters.h"
  107. #include "thrust/host_vector.h"
  108. #include "thrust/device_vector.h"
  109. #include "thrust/sequence.h"
  110. #include "thrust/copy.h"
  111.  
  112. #include <stdio.h>
  113.  
  114. struct is_cube
  115. {
  116. __device__ bool operator () (int item)
  117. {
  118. return item % 3 == 0;
  119. }
  120. };
  121.  
  122. struct cube
  123. {
  124. __device__ int operator () (int item)
  125. {
  126. return item * item * item;
  127. }
  128. };
  129.  
  130. int main()
  131. {
  132.  
  133.  
  134. thrust::host_vector<int> data(100);
  135. thrust::device_vector<int> results(100);
  136.  
  137. thrust::sequence(data.begin(), data.end(), 1);
  138.  
  139. results = data;
  140.  
  141. int sum = thrust::reduce(results.begin(), results.end());
  142.  
  143. std::cout << std::endl;
  144.  
  145. std::cout << sum << std::endl;
  146.  
  147.  
  148.  
  149. thrust::device_vector<int> filtered_vector(33);
  150.  
  151. thrust::copy_if(results.begin(), results.end(), filtered_vector.begin(), is_cube());
  152.  
  153. thrust::device_vector<int> cubed_vector(33);
  154.  
  155. thrust::transform(filtered_vector.begin(), filtered_vector.end(), cubed_vector.begin(), cube());
  156.  
  157. int sum2 = thrust::reduce(cubed_vector.begin(), cubed_vector.end());
  158.  
  159. std::cout << std::endl;
  160.  
  161. std::cout << sum2 << std::endl;
  162.  
  163. return 0;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement