Accueil > > > UN PROGRAMME QUI UTILISE OPEN_MP POUR TROUVER DES NOMBRE PREMIER.
UN PROGRAMME QUI UTILISE OPEN_MP POUR TROUVER DES NOMBRE PREMIER.
Information sur la source
Description
Ce programme utilise une technologie particuliere pour integrer le support des threads.
OPEN_MP est base sur un macro language a base de #pragma et aussi sur le compilateur qui doit etre OPEN_MP compatible
le compilateur C/C++ de MS DEV-STUDIO PRO 2005 est 100% compatible.
Pour plus d'info : http://www.openmp.org/drupal/
Source
- // OPEN_MP_01.cpp : Defines the entry point for the console application.
- //
-
- #include "stdafx.h"
- #include "windows.h"
-
- #include "stdio.h"
- #include "math.h"
- #include "stdlib.h"
- #include "omp.h"
-
- int main(int argc, char *argv[])
- {
- int i, j, limit;
- int start, end; /* range of numbers to search */
- int number_of_primes=0; /* number of primes found */
- int number_of_41primes=0;/* number of 4n+1 primes found */
- int number_of_43primes=0;/* number of 4n-1 primes found */
- int prime; /* is the number prime? */
- int print_primes=0; /* should each prime be printed? */
- DWORD dwStart, dwStop;
- float fElapsed;
-
- start = atoi(argv[1]);
- end = atoi(argv[2]);
- if (!(start % 2)) start++;
-
- if (argc == 4 && atoi(argv[3]) != 0) print_primes = 1;
- printf("Range to check for Primes: %d - %d\n\n",start, end);
-
- dwStart = GetTickCount();
-
- #pragma omp parallel
- {
- int numPrimes=0; /* local number of primes found */
- int num41Primes=0; /* local number of 4n+1 primes found */
- int num43Primes=0; /* local number of 4n-1 primes found */
-
- #pragma omp for schedule(dynamic,1000)
- for(i = start; i <= end; i += 2) {
- int limit, j, prime;
- limit = (int) sqrt((float)i) + 1;
- prime = 1; /* assume number is prime */
- j = 3;
- while (prime && (j <= limit)) {
- if (i%j == 0) prime = 0;
- j += 2;
- }
-
- if (prime) {
- if (print_primes) printf("%5d is prime\n",i);
- #pragma omp atomic
- number_of_primes++;
-
- if (i%4 == 1) {
- #pragma omp atomic
- number_of_41primes++;
- }
-
- if (i%4 == 3) {
- #pragma omp atomic
- number_of_43primes++;
- }
-
- }
- } // end for
- } // end parallel region
-
- dwStop = GetTickCount();
- fElapsed = (float) (((float)dwStop-(float)dwStart) / (float) 1000.0);
- printf("Total Elapsed time :%f Seconds\n",fElapsed);
- printf("\nProgram Done.\n %d primes found\n",number_of_primes);
- printf("\nNumber of 4n+1 primes found: %d\n",number_of_41primes);
- printf("\nNumber of 4n-1 primes found: %d\n",number_of_43primes);
- }
// OPEN_MP_01.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "omp.h"
int main(int argc, char *argv[])
{
int i, j, limit;
int start, end; /* range of numbers to search */
int number_of_primes=0; /* number of primes found */
int number_of_41primes=0;/* number of 4n+1 primes found */
int number_of_43primes=0;/* number of 4n-1 primes found */
int prime; /* is the number prime? */
int print_primes=0; /* should each prime be printed? */
DWORD dwStart, dwStop;
float fElapsed;
start = atoi(argv[1]);
end = atoi(argv[2]);
if (!(start % 2)) start++;
if (argc == 4 && atoi(argv[3]) != 0) print_primes = 1;
printf("Range to check for Primes: %d - %d\n\n",start, end);
dwStart = GetTickCount();
#pragma omp parallel
{
int numPrimes=0; /* local number of primes found */
int num41Primes=0; /* local number of 4n+1 primes found */
int num43Primes=0; /* local number of 4n-1 primes found */
#pragma omp for schedule(dynamic,1000)
for(i = start; i <= end; i += 2) {
int limit, j, prime;
limit = (int) sqrt((float)i) + 1;
prime = 1; /* assume number is prime */
j = 3;
while (prime && (j <= limit)) {
if (i%j == 0) prime = 0;
j += 2;
}
if (prime) {
if (print_primes) printf("%5d is prime\n",i);
#pragma omp atomic
number_of_primes++;
if (i%4 == 1) {
#pragma omp atomic
number_of_41primes++;
}
if (i%4 == 3) {
#pragma omp atomic
number_of_43primes++;
}
}
} // end for
} // end parallel region
dwStop = GetTickCount();
fElapsed = (float) (((float)dwStop-(float)dwStart) / (float) 1000.0);
printf("Total Elapsed time :%f Seconds\n",fElapsed);
printf("\nProgram Done.\n %d primes found\n",number_of_primes);
printf("\nNumber of 4n+1 primes found: %d\n",number_of_41primes);
printf("\nNumber of 4n-1 primes found: %d\n",number_of_43primes);
}
Conclusion
Pour utiliser le code : OpenMP.exe 1 100000
Le programme recherche les nombres premier... OPEN_MP permet a certaine partie du code d'etre automatiquement parallelise...
Donc si vous avez un ordi avec deux processeurs ou mieux un DUAL-CORE alors le programme va creer automatiquement
deux ou plus threads qui executerons par exemple la boucle :
********************************************* **************************************************
#pragma omp parallel
{
int numPrimes=0; /* local number of primes found */
int num41Primes=0; /* local number of 4n+1 primes found */
int num43Primes=0; /* local number of 4n-1 primes found */
#pragma omp for schedule(dynamic,1000)
for(i = start; i <= end; i += 2) {
int limit, j, prime;
limit = (int) sqrt((float)i) + 1;
prime = 1; /* assume number is prime */
j = 3;
while (prime && (j <= limit)) {
if (i%j == 0) prime = 0;
j += 2;
}
if (prime) {
if (print_primes) printf("%5d is prime\n",i);
#pragma omp atomic
number_of_primes++;
if (i%4 == 1) {
#pragma omp atomic
number_of_41primes++;
}
i f (i%4 == 3) {
#pragma omp atomic
number_of_43primes++;
}
}
} // end for
} // end parallel region
**************************************** *********************************************
Don c je vous laisse deviner comment un programme qui utilise cette techno peut etre utilise pour accelerer une application.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Thread dans une dll [ par angel ]
Est-il possible de créer un thread dans une dll ?
Controler une ListBox avec un thread [ par header ]
Apres avoir creer et appeler ma fct thread j'aimerai controler une listbox.(ou un autre controle)Comment je dois faire ???Comment attacher une variabl
Pointeur sur methodes avec parametre [ par Kinamstrong ]
Salut a toi,Je cherche à savoir comment marche les pointeurs sur les methodes avec parametres.Qu'est ce qui va differencier deux meme methodes en cour
Lancer une thread intraclasse [ par rudyg ]
Salut tout le monde,depuis une methode de classe, je souhaite lancer une thread faisant appel a une AUTRE methode de la meme classe.Ex:void kernel::La
Thread [ par Vince007 ]
Bonjour, je vous laisse se message pour savoir si qqu'un qui connait bien les thread et les sémaphores sous Linux pourrait m'indiquer la méthode de co
thread et librairies [ par galamor ]
salut, je débute sur visual C++j'aimerai savoir si quelqu'un pourrait me dire où trouver des informations précises et/ou des exemples sur l'utilisatio
terminer un thread [ par galamor ]
salut,j'aimerai savoir quels sont les moyens les plus utilisés (traduire : les plus performants et les plus simples) pour dire à une thread de s'arrét
J'veux dire qqch amon programme...HELP !!! [ par lutin ]
Oui en fait, j'aimerais savoir si qqun peux m'aider dans l'utilisation des messages windows.J'explique : je crée une fenetre qui lance un threaddans m
Thread?!? [ par couriousous ]
Hello!Ma question est bête mais je la pose:Quesque c'est un Thread (une sorte processus pour avoir + de temp processeur) et comment en créer un en C++
multitache [ par nigloudouille ]
Je souhaite faire du multitaches sous MFC afin que mon programme ne reste pas bloqué pendant un calcul. j'ai bien réussi à créer une nouvelle thread d
|
Derniers Blogs
CONF'SHAREPOINT : 10 BONNES RAISONS POUR NE PAS LA RATERCONF'SHAREPOINT : 10 BONNES RAISONS POUR NE PAS LA RATER par pierre
Si vous hésitez encore à venir à la conférence, ci-après 10 bonnes raisons pour ne pas rater cet évènement unique : La Conf'SharePoint, c'est la 1ère conférence en France et en Français dédié à SharePoint : pas de barrière de la langue La Conf...
Cliquez pour lire la suite de l'article par pierre [EVENT] SOIRéE DE LANCEMENT AGILE .NET FRANCE à LYON[EVENT] SOIRéE DE LANCEMENT AGILE .NET FRANCE à LYON par thavo
Agile.Net France débarque à Lyon fin juin !! Je viens d'arriver à Lyon, et l'Agile .Net France aussi. Pour ceux/celles qui habitent en Rhône-Alpes, seriez-vous disponible pour une soirée « Agile .Net France » ?? (je sais que certains vi...
Cliquez pour lire la suite de l'article par thavo SHAREPOINT : INCOMPATIBILITé AVEC INTERNET EXPLORER 10 (IE10)SHAREPOINT : INCOMPATIBILITé AVEC INTERNET EXPLORER 10 (IE10) par ROMELARD Fabrice
Depuis plusieurs mois, Microsoft a publié un patch (comme très régulièrement) qui est passé relativement inaperçu à l'époque. L'arrivée de plus en plus de postes sous Windows 8 et surtout le déploiement par Windows Update de ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice AUTOSPINSTALLER POUR SHAREPOINT 2013 MAINTENANT DISPONIBLE EN "RTM"AUTOSPINSTALLER POUR SHAREPOINT 2013 MAINTENANT DISPONIBLE EN "RTM" par neodante
Alors qu'il n'était qu'en Beta et que quelques dysfonctionnements persistaient, la nouvelle version du fabuleux script AutoSPInstaller permettant d'installer SharePoint 2010/2013 en full script (idéal pour répliquer des fermes de dev/qual/prod) est mainte...
Cliquez pour lire la suite de l'article par neodante
Logiciels
Devis-Factures PHMSD (2.1.0.1)DEVIS-FACTURES PHMSD (2.1.0.1)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD Ludoprêt (3.2)LUDOPRêT (3.2)Logiciel gratuit de gestion de ludothèque.
Gestion des jeux et des adhérents.
Gestion des for... Cliquez pour télécharger Ludoprêt Revealer Keylogger Free (2.05)REVEALER KEYLOGGER FREE (2.05)Keylogger invisible et gratuit pour Windows 8, 7, Vista ou XP. Revealer Keylogger Free vous perme... Cliquez pour télécharger Revealer Keylogger Free 974 Application Server (13.2.1.3)974 APPLICATION SERVER (13.2.1.3)Ecommerce, Blogueur, Vitrine, Newsletter, Java IDE, ..., in the cloud et sous haute dispo. Facile... Cliquez pour télécharger 974 Application Server WDmemoCode (1.0.0)WDMEMOCODE (1.0.0)WDmemoCode a été créé pour aider les développeurs Windev à créer/compléter et conserver une base ... Cliquez pour télécharger WDmemoCode
|