前提・実現したいこと
与えられたヘッダファイルjikken.hとmain.cを使って、2次元配列を2つ動的に取得して積とその計算時間を求める。
発生している問題・エラーメッセージ
エラーが出てコンパイルすることができない
main.c : `omp_get_threads`に対する定義されていない参照です main.c : `make_matrix`に対する定義されていない参照です main.c : `omp_get_wtime`に対する定義されていない参照です main.c : `omp_get_wtime`に対する定義されていない参照です main.c : `check_matrix`に対する定義されていない参照です
該当のソースコード
c
1//main.c 2#include <stdio.h> 3#include <stdlib.h> 4#include <omp.h> 5 6#include "jikken.h" 7 8int main(int argc, char *argv[]) 9{ 10/* ここに変数を定義 */ 11 unsigned int size; //配列大きさ 12 int i, j, k; 13 double t1=0, t2=0; //時間 14 15 16 17 if ((argc != 2) || (size=atoi(argv[1]))<=0) { //ここは与えられていた 18 fprintf(stderr,"Invalid Argument\n"); 19 exit(1); 20 } 21 22/* ここまで実行すると、size に行列サイズが代入される。*/ 23 24 printf("matrix : %d * %d\n", size, size); 25 printf("thread : %d\n", omp_get_max_threads()); 26 27 double **a, **b, **c; 28 29 a = (double **)malloc(sizeof(double *) * size); //行列a 30 if(a == NULL) 31 return -1; 32 for(i = 0; i < size; i++){ 33 a[i] = (double *)malloc(sizeof(double) * size); 34 if(a[i] == NULL) 35 return -1; 36 } 37 38 b = (double **)malloc(sizeof(double *) * size); //行列b 39 if(b == NULL) 40 return -1; 41 for(i = 0; i < size; i++){ 42 b[i] = (double *)malloc(sizeof(double) * size); 43 if(b[i] == NULL) 44 return -1; 45 } 46 47 c = (double **)malloc(sizeof(double *) * size); //行列c 48 if(c == NULL) 49 return -1; 50 for(i = 0; i < size; i++){ 51 c[i] = (double *)malloc(sizeof(double) * size); 52 if(c[i] == NULL) 53 return -1; 54 } 55 56 make_matrix(size, 1, a, b, 206122); 57 58 t1 = omp_get_wtime(); 59 60 #pragma omp parallel for private(j,k) 61 for(i=0; i<size; i++){ //行列の計算 62 for(j=0; j<size; j++){ 63 for(k=0; k<size; k++) 64 c[i][j] += a[i][k] * b[k][j]; 65 } 66 } 67 68 t2 = omp_get_wtime(); 69 70 check_matrix(size, c, 206122); 71 72 printf("処理時間 : %lf\n", t2-t1); 73 74 for(i=0; i<size; i++){ //メモリ開放a 75 free(a[i]); 76 } 77 free(a); 78 79 for(i=0; i<size; i++){ //メモリ開放b 80 free(b[i]); 81 } 82 free(b); 83 84 for(i=0; i<size; i++){ //メモリ開放c 85 free(c[i]); 86 } 87 free(c); 88 89 90 return 0; 91} 92------------------------------------------------------------------------------- 93//jikken.h 94extern void make_matrix(unsigned int size, double **c, unsigned int number); 95extern void check_matrix(unsigned int size, double **c, unsigned int number);
補足情報(FW/ツールのバージョンなど)
gccでコンパイルします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。