add average thread

This commit is contained in:
quentin.perret 2022-06-14 10:24:59 +02:00
parent 6cd7513501
commit 05a9142c7e
10 changed files with 75 additions and 12 deletions

View file

@ -1,7 +1,7 @@
CC = gcc CC = gcc
all: all:
$(CC) fileGestion.c getArray.c power.c queue.c simulateFlux.c main.c -lm -lpthread -o main $(CC) fileGestion.c getArray.c average.c power.c queue.c simulateFlux.c main.c -lm -lpthread -o main
# $(CC) queue.c simulateFlux.c main.c -lm -lpthread -o main # $(CC) queue.c simulateFlux.c main.c -lm -lpthread -o main
./main < ../02400031.TXT ./main < ../02400031.TXT

32
Code-C/average.c Normal file
View file

@ -0,0 +1,32 @@
#include "average.h"
#include "getArray.h"
#include "fileGestion.h"
#include "initialParameters.h"
#include "queue.h"
#include <assert.h>
void averageCalculation(long **p, double averageArray[] , int N, int M){
for(int i = 0; i < M-1; i++){
int j = 0;
averageArray[i] = 0;
while(j < N){
averageArray[i] += p[i][j];
j++;
}
averageArray[i] /= N;
//printf("%f\n", powerArray[i]);
}
}
bool average(char* rawDataFileName,int N , int M){
long **p = getRawDataArray(rawDataFileName,N, M);
double aver[8];
if(p !=NULL){
averageCalculation(p,aver,N,M);
writeDataInFile("averageData.csv",aver,8);
freeArray(p,N);
return true;
}
else{
return false;
}
}

4
Code-C/average.h Normal file
View file

@ -0,0 +1,4 @@
#include <math.h>
#include <stdbool.h>
bool average(char* rawDataFileName,int N , int M);

View file

@ -26,8 +26,8 @@ void clearRawData(int nRow){
* @param powerArray * @param powerArray
* @param nCol size of the power array, correspond to the number of captor used * @param nCol size of the power array, correspond to the number of captor used
*/ */
void writePowerData(double powerArray[], int nCol){ void writeDataInFile(char* fileName , double powerArray[], int nCol){
FILE *f = fopen("powerData.csv","a+"); FILE *f = fopen(fileName,"a+");
for(int i = 0 ; i < nCol ; i++){ for(int i = 0 ; i < nCol ; i++){
if( i < nCol-1){ if( i < nCol-1){
fprintf(f, "%f , ", powerArray[i]); fprintf(f, "%f , ", powerArray[i]);

View file

@ -5,4 +5,4 @@
void clearRawData(int N); void clearRawData(int N);
void writePowerData(double a[], int N); void writeDataInFile(char* fileName , double a[], int N);

Binary file not shown.

View file

@ -4,9 +4,10 @@
#include "power.h" #include "power.h"
#include "initialParameters.h" #include "initialParameters.h"
#include "queue.h" #include "queue.h"
#include "average.h"
bool rawDataWriteFlag; bool rawDataWriteFlag;
int nRow = 100000; int nRow = 500;
int nCol = 9; int nCol = 9;
double freqEch = 250; double freqEch = 250;
@ -21,7 +22,7 @@ int cptFile = 1;
double period = 0; double period = 0;
double invTimeBandWidth = 0; double invTimeBandWidth = 0;
void *threadCalcul(void *vargp){ void *threadCalculPower(void *vargp){
Pqueue rawDataQueue = firstRawDataQueue; Pqueue rawDataQueue = firstRawDataQueue;
char* fileName; char* fileName;
while(rawDataWriteFlag){ while(rawDataWriteFlag){
@ -29,6 +30,34 @@ void *threadCalcul(void *vargp){
rawDataQueue = queueGetNextE(rawDataQueue); rawDataQueue = queueGetNextE(rawDataQueue);
fileName = queueGetTabChar(rawDataQueue); fileName = queueGetTabChar(rawDataQueue);
power(fileName,nRow,nCol,period,invTimeBandWidth); power(fileName,nRow,nCol,period,invTimeBandWidth);
remove(fileName);
}
}
}
void *threadCalculAverage(void *vargp){
Pqueue rawDataQueue = firstRawDataQueue;
char* fileName;
while(rawDataWriteFlag){
while(queueGetNextE(rawDataQueue) != NULL){
rawDataQueue = queueGetNextE(rawDataQueue);
fileName = queueGetTabChar(rawDataQueue);
average(fileName,nRow,nCol);
remove(fileName);
}
}
}
void *threadCalculBoth(void *vargp){
Pqueue rawDataQueue = firstRawDataQueue;
char* fileName;
while(rawDataWriteFlag){
while(queueGetNextE(rawDataQueue) != NULL){
rawDataQueue = queueGetNextE(rawDataQueue);
fileName = queueGetTabChar(rawDataQueue);
power(fileName,nRow,nCol,period,invTimeBandWidth);
average(fileName,nRow,nCol);
remove(fileName);
} }
} }
} }
@ -45,7 +74,7 @@ int main(int argc , char** argv){
pthread_create(&rawData , NULL, simulateFlux, (void *)&rawData); pthread_create(&rawData , NULL, simulateFlux, (void *)&rawData);
pthread_t calcul; pthread_t calcul;
pthread_create(&calcul , NULL, threadCalcul, (void *)&calcul); pthread_create(&calcul , NULL, threadCalculBoth, (void *)&calcul);
pthread_exit(NULL); pthread_exit(NULL);
} }

View file

@ -24,9 +24,8 @@ bool power(char* rawDataFileName,int N , int M, double periode , double invTimeB
double pw[8]; double pw[8];
if(p !=NULL){ if(p !=NULL){
powerCalculation(p,pw,N,M,periode,invTimeBandwidth); powerCalculation(p,pw,N,M,periode,invTimeBandwidth);
writePowerData(pw,8); writeDataInFile("powerData.csv",pw,8);
freeArray(p,N); freeArray(p,N);
remove(rawDataFileName);
return true; return true;
} }
else{ else{

View file

@ -2,4 +2,3 @@
#include <stdbool.h> #include <stdbool.h>
bool power(char* rawDataFileName,int N , int M, double periode , double invTimeBandwidth); bool power(char* rawDataFileName,int N , int M, double periode , double invTimeBandwidth);
void *threadCalcul(void *vargp);

View file

@ -105,7 +105,7 @@ bool writeOneRawData(FILE *rawDataFile){
} }
} }
cptData++; cptData++;
//sleep(0.004); //simul la freq ech sleep(0.004); //simul la freq ech
return true; return true;
} }
else { else {