【发布时间】:2020-08-20 13:04:58
【问题描述】:
#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"); 下发光 我试图删除打印矩阵的整个东西,但它没有用
【问题讨论】:
-
您遇到的错误是什么,代码在哪里? Edit 包含这些详细信息的问题。
-
我在 input 的末尾得到了预期的声明或声明,它在 printf("\n"); 旁边发光,虽然我删除了整个打印的东西它不起作用