#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
#include <sys/time.h>
#define N 10000
int A[N][N];
int B[N][N];
int C[N][N];
int main(){
int i,j,k;
struct timeval tv1, tv2;
struct timezone tz;
double elapsed;
for (i= 0; i< N; i++){
for (j= 0; j< N; j++)
{
A[i][j] = 3;
B[i][j] = 3;
}
}
gettimeofday(&tv1, &tz);
omp_set_num_threads(4);
#pragma omp parallel default (private) shared (A,B,C,N) num_threads(4)
#pragma omp parallel for schedule(static)
for (i = 0; i < N; ++i){
for (j = 0; j < N; ++j){
C[i][j]=0;
for (k = 0; k < N; ++k){
C[i][j] += A[i][k] * B[k][j];
}
}
}
gettimeofday(&tv2, &tz);
elapsed = (double) (tv2.tv_sec-tv1.tv_sec) + (double) (tv2.tv_usec-tv1.tv_usec) * 1.e-6;
printf("elapsed time = %f seconds.\n", elapsed);
for (i= 0; i< N; i++){
for (j= 0; j< N; j++) {
printf("%d \t",C[i][j]);
}
printf("\n");
}
}
этот код не работает, хотя я удостоверяюсь, что каждый "{" установлен правильно! что не так с этим кодом? Это умножение матриц с использованием библиотеки OpenMp, и я использую eclipse c ++. Есть идеи, что не так с кодом? Я получаю «ожидаемое объявление или оператор в конце ввода}», и он светится под printf («\ n»); Я попытался удалить все, что печатает матрицу, но это не сработало