前提・実現したいこと
入力した素数の個数をカウントするプログラムを作成しています。
発生している問題・エラーメッセージ
error: conflicting types for 'search' void search(int a, int b, int array[N/2]) note: previous declaration of 'search' was here int search(int, int, int[]);
環境はLinuxです。
mpicc tsuyoi.c(プログラム名) -o tsuyoi -lm
でコンパイルしようとしたところ、このエラーがでした。
該当のソースコード
C
1#include <mpi.h> 2#include <math.h> 3#include <stdio.h> 4#include <string.h> 5#define N 50000 6 7int main(int argv, char* argc[]) 8{ 9 int n, base_n, source; 10 int low1, low2, high1, high2; 11 int i, a; 12 int size, rank, length; 13 int low_array[n]; 14 int high_array[n]; 15 int num; 16 17 int search(int, int, int[]); 18 19 double starttime, endtime; 20 21 MPI_Status status; 22 23 n = N; 24 25 MPI_Init(&argv, &argc); 26 27 starttime = MPI_Wtime(); 28 29 MPI_Comm_size(MPI_COMM_WORLD, &size); 30 MPI_Comm_rank(MPI_COMM_WORLD, &rank); 31 32 for(i = 0; i < n; i++) 33 { 34 low_array[i] = 0; 35 high_array[i] = 0; 36 } 37 38 a = 0; 39 num = 0; 40 41 if(rank != 0) 42 { 43 base_n = n / ((size - 1)* 2); 44 low1 = base_n*(rank - 1)+ 1; 45 low2 = base_n * rank; 46 high1 = n - base_n * rank + 1; 47 high2 = n - base_n * (rank -1); 48 49 search(low1, low2, low_array); 50 51 search(high1, high2, high_array); 52 53 MPI_Send(&low_array, n, MPI_INT, 0, 0, MPI_COMM_WORLD); 54 MPI_Send(&high_array, n, MPI_INT, 0, 0, MPI_COMM_WORLD); 55 56 } 57 else 58 { 59 for(source = 1; source < size; source++) 60 { 61 MPI_Recv(&low_array, n, MPI_INT, source, MPI_ANY_TAG, MPI_COMM_WORLD, &status); 62 63 while(low_array[i] != 0) 64 { 65 num = num + 1; 66 i++; 67 } 68 69 i = 0; 70 71 MPI_Recv(&high_array, n, MPI_INT, source, MPI_ANY_TAG, MPI_COMM_WORLD, &status); 72 73 while(high_array[i] != 0) 74 { 75 num++; 76 i++; 77 } 78 79 i = 0; 80 } 81 82 endtime = MPI_Wtime(); 83 84 printf("%dまでの素数の数は%dです。\n", n, num-1); 85 printf("%lf\n", (endtime - starttime)); 86 87 } 88 89 MPI_Finalize(); 90 91} 92 93void search(int a, int b, int array[N/2]) 94{ 95 int i, j, frag, now; 96 frag = 0; 97 now = 0; 98 99 for(i = a; i <= b; i++) 100 { 101 for(j = 2; j <= i/2; j++) 102 { 103 if(i % j == 0) 104 105 frag = 1; 106 } 107 108 if(frag == 0) 109 { 110 array[now] = i; 111 now++; 112 } 113 114 frag = 0; 115 } 116 117}
試したこと
エラー名をそのまま検索したりしました.
補足情報(FW/ツールのバージョンなど)
こちらのpdfに乗っているプログラムを使用しました。
http://www.oyama-ct.ac.jp/tosyo/kiyou/kiyou40/014nansaikiyomi.pdf
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/19 09:10