#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <err.h>
#include <unistd.h>
#include <sys/wait.h>
#include "benchmark.h"
Classes | |
struct | scanargs |
Sert à stocker les arguments passés aux threads. More... | |
struct | result |
Sert à stocker les valeurs de retour des threads. More... | |
Macros | |
#define | NTHREAD 32 |
Nombre max de threads/processus à utiliser. More... | |
#define | NLENGTH 64000 |
Taille du tableau à tester. More... | |
Typedefs | |
typedef struct scanargs | scanargs |
Sert à stocker les arguments passés aux threads. More... | |
typedef struct result | result |
Sert à stocker les valeurs de retour des threads. More... | |
Functions | |
int | primeFactors (int n) |
Calcul les facteurs premiers de n More... | |
void * | scan (void *param) |
Calcul les facteurs premiers dans une portion de tableau de Integer. More... | |
int | main (int argc, char *argv[]) |
Enregistre les temps de calcul nécessaire à le nombre avec le plus de facteurs premiers. More... | |
#define NLENGTH 64000 |
Taille du tableau à tester.
#define NTHREAD 32 |
Nombre max de threads/processus à utiliser.
Sert à stocker les valeurs de retour des threads.
result
est la structure utilisé pour stocker les valeurs renvoyés par les avec pthread_exit()
. count
est le nombre max de facteurs premiers qu'un thread a trouvé pour une valeur du tableau et index
est l'index de cette valeur dans array
.
Sert à stocker les arguments passés aux threads.
scanargs
est la structure utilisé pour faire passer les arguments aux threads. start
est l'index du premier élement du tableau array
que dois scaner le thread, et stop
en est le dernier.
int main | ( | int | argc, |
char * | argv[] | ||
) |
Enregistre les temps de calcul nécessaire à le nombre avec le plus de facteurs premiers.
On va tester la loi d'Amdahl et donc vérifier l'avantage au niveau de la vitesse gagner grâce à la parallelisation d'un code CPU intensif tel que la recherche du nombre ayant la plus de facteurs premiers dans un tableau de valeurs aléatoires. La recherche est faite avec 1 puis 2 puis 3 etc... threads/processus, avec à chaque fois le temps nécessaire enregistrer dans un fichier .csv puis afficher à la fin sous forme de graphe.
int primeFactors | ( | int | n | ) |
Calcul les facteurs premiers de n
n | Le nombre duquel on veut trouver les facteurs premiers |
Calcul les facteurs premiers de n
par la methode de brute force
void* scan | ( | void * | param | ) |
Calcul les facteurs premiers dans une portion de tableau de Integer.
param | Structure scanargs contenant le tableau a scanner et les index de la portion à scanner |
result
contenant l'index du nombre avec le plus de facteurs premiers et le nombre de ces facteursFonction à faire passer à un thread. Scan une portion d'un tableau à la du nombre avec le plus de facteurs premiers, et renvois cette valeur ainsi que l'index où se trouve ce nombre.