Advertisement
Guest User

Не работает при 3, 6, 7 и т.д. потоках (segfault)

a guest
Mar 27th, 2023
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.76 KB | None | 0 0
  1. #include <omp.h>
  2. #include <malloc.h>
  3. #include <stdio.h>
  4. #include <xmmintrin.h>
  5.  
  6. #define N 1000
  7.  
  8. int main() {
  9.     double* vector1 = malloc(sizeof(double) * N);
  10.     double* vector2 = malloc(sizeof(double) * N);
  11.    
  12.     for (unsigned int i = 0; i < N; i++) {
  13.         vector1[i] = i;
  14.         vector2[i] = 1 / (double) i;
  15.     }
  16.  
  17.     #pragma omp parallel
  18.     {
  19.         const int thread_num = omp_get_thread_num();
  20.         const int num_threads = omp_get_num_threads();
  21.  
  22.         const int k1 = thread_num * N / num_threads;
  23.         const int k2 = (thread_num + 1) * N / num_threads;
  24.  
  25.         __m128d* x = (__m128d*) (vector1 + k1);
  26.         __m128d* y = (__m128d*) (vector2 + k1);
  27.        
  28.         __m128d tmp1 = x[0];
  29.         __m128d tmp2 = y[0];
  30.     }
  31.  
  32.     free(vector1);
  33.     free(vector2);
  34.    
  35.     return 0;
  36. }
  37.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement