OVH Cloud OVH Cloud

recherche code multi thread java pour test de primalite

16 réponses
Avatar
remy
bonjour

vous ne connaitriez pas un bout de code multi thread
java qui ferait un test de primalit=E9
histoire de me servir de tous les coeurs de la machine
c'est pour booster un peu le code

http://cjoint.com/data/mwlRFNicX7.htm

vu que la m=EAme impl=E9mentation en c
http://cjoint.com/data/mwlL3wfBsX.htm

c'est av=E9r=E9e moins rapide
=E0 titre perso je ne m'attendais pas =E0 un =E9cart aussi grand



merci remy
--=20
http://remyaumeunier.chez-alice.fr/

6 réponses

1 2
Avatar
JKB
Le 22-12-2009, ? propos de
Re: recherche code multi thread java pour test de primalite,
Yliur ?crivait dans fr.comp.lang.java :

>> Et pour le test, comment le fais-tu ? Ça ne devrait pas être
>> difficile à distribuer.
>>
>
> disons que j'ai actuellement la flemme de coder mon propre test de
> primalité donc j'utilise celui qui est fourni de base
> dans gmp et biginteger ce qui si j'en crois mes lectures ils
> utilisent tous les 2 un test de primalité Miller-Rabin
>
> http://fr.wikipedia.org/wiki/Test_de_primalit%C3%A9_de_Miller-Rabin

Je t'ai déjà dit aussi qu'avec le même algorithme de base, on
peut coder des choses qui ont des performances parfaitement
divergentes.

JKB




La deuxième partie de son message ne concernait pas les performances,
il cherchait comment paralléliser son calcul pour utiliser tous les
coeurs de sa machine.



Un test de primalité de Miller-Rabin, c'est une façon de faire, un
algorithme. Après, tu peux l'implanter intelligemment ou de façon
particulièrement bête (sans toucher l'algorithme de base, juste en
réordonnançant les instructions ou en utilisant des variables
temporaires ou toutes autres choses) et les performances réelles en
seront affectées, et souvent assez sensiblement. Dire qu'on utilise
un tel test dans un programme écrit en C et dans un truc écrit en
Java ne présuppose absolument rien de l'optimalité des deux
routines. Tu peux avoir un code C optimisé aux petits oignons et un
code Java écrit par un programmeur aux pieds tendres. Tu peux aussi
avoir le contraire. C'est même tellement sensible que les
implantations efficaces d'une truc comme Lapack sont _différentes_
d'un processeur cible à l'autre !

Cordialement,

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Yliur
Le Tue, 22 Dec 2009 19:33:54 +0000 (UTC)
JKB a écrit :

Le 22-12-2009, ? propos de
Re: recherche code multi thread java pour test de primalite,
Yliur ?crivait dans fr.comp.lang.java :
>
>> >> Et pour le test, comment le fais-tu ? Ça ne devrait pas être
>> >> difficile à distribuer.
>> >>
>> >
>> > disons que j'ai actuellement la flemme de coder mon propre test
>> > de primalité donc j'utilise celui qui est fourni de base
>> > dans gmp et biginteger ce qui si j'en crois mes lectures ils
>> > utilisent tous les 2 un test de primalité Miller-Rabin
>> >
>> > http://fr.wikipedia.org/wiki/Test_de_primalit%C3%A9_de_Miller-Rabin
>>
>> Je t'ai déjà dit aussi qu'avec le même algorithme de base,
>> on peut coder des choses qui ont des performances parfaitement
>> divergentes.
>>
>> JKB
>>
>
> La deuxième partie de son message ne concernait pas les
> performances, il cherchait comment paralléliser son calcul pour
> utiliser tous les coeurs de sa machine.

Un test de primalité de Miller-Rabin, c'est une façon de
faire, un algorithme. Après, tu peux l'implanter intelligemment ou
de façon particulièrement bête (sans toucher l'algorithme de base,
juste en réordonnançant les instructions ou en utilisant des variables
temporaires ou toutes autres choses) et les performances
réelles en seront affectées, et souvent assez sensiblement. Dire
qu'on utilise un tel test dans un programme écrit en C et dans un
truc écrit en Java ne présuppose absolument rien de l'optimalité des
deux routines. Tu peux avoir un code C optimisé aux petits oignons et
un code Java écrit par un programmeur aux pieds tendres. Tu peux aussi
avoir le contraire. C'est même tellement sensible que les
implantations efficaces d'une truc comme Lapack sont
_différentes_ d'un processeur cible à l'autre !

Cordialement,

JKB




Ben ok, mais je ne vois toujours pas le lien avec cette partie de la
choucroute.
Avatar
batyann811
JKB a écrit :

Le gros du calcul étant fait dans la libgmp, il faudrait aussi
regarder de près les options de compilation de ladite bibliothèque.




Et surtout lire la doc avant de s'en servir...
Avatar
remy
JKB a écrit :
Le 22-12-2009, ? propos de
Re: recherche code multi thread java pour test de primalite,
remy ?crivait dans fr.comp.lang.java :
JKB a écrit :
Le 22-12-2009, ? propos de
Re: recherche code multi thread java pour test de primalite,
remy ?crivait dans fr.comp.lang.java :
Yliur a écrit :
Le Tue, 22 Dec 2009 11:52:21 +0100
remy a écrit :

bonjour

vous ne connaitriez pas un bout de code multi thread
java qui ferait un test de primalité
histoire de me servir de tous les coeurs de la machine
c'est pour booster un peu le code

http://cjoint.com/data/mwlRFNicX7.htm

vu que la même implémentation en c
http://cjoint.com/data/mwlL3wfBsX.htm

c'est avérée moins rapide
à titre perso je ne m'attendais pas à un écart auss i grand



merci remy


La version C est *moins* rapide ?
Quel est l'écart ?


il te faut la libgmp voir avec synaptic et gcc


Je t'ai déjà dit de commencer par coller in -O3 sur la com pilation
de la libgmp et la même chose sur ton code (encore qu'en
l'occurrence, ça ne devrait pas changer grand'chose pour ton co de).
Avoir une telle différence tend à montrer qu'il y a un lou p.

gcc -o jumeaux jumeaux.c -lgmp
time ./jumeaux

real 0m34.833s
user 0m34.230s
sys 0m0.000s
:~/Bureau/cJumeaux$

javac jumeaux.java
time java jumeaux

real 0m12.011s
user 0m12.429s
sys 0m0.416s
:~/Bureau/cJumeaux$


Et pour le test, comment le fais-tu ? Ça ne devrait pas ê tre difficile
à distribuer.



disons que j'ai actuellement la flemme de coder mon propre test de
primalité donc j'utilise celui qui est fourni de base
dans gmp et biginteger ce qui si j'en crois mes lectures ils utilise nt
tous les 2 un test de primalité Miller-Rabin

http://fr.wikipedia.org/wiki/Test_de_primalit%C3%A9_de_Miller-Rabin


Je t'ai déjà dit aussi qu'avec le même algorithme de base, on peut
coder des choses qui ont des performances parfaitement divergentes.

JKB



arrêt de prendre le gens pour des con



Le problème, vois-tu, c'est que tu viens de déplacer une dis cussion
d'un forum à un autre parce que ce qui t'était dit sur fsm n e te
convenait pas.



l'on va pas s'engueuler un 23 décembre mais vois tu j'ai un contex te 2
langages avec 2 routines de tests je cherche à utiliser
la plus rapide avec une doc des plus évasives sur l'utilisation des
dites routines et toi tu me parles d'implémentation ,des différ ents
temps d'utilisation des threads de la jmv ou de coder ma propre routine
sur le fond tu as raison mais cela ne me permet pas d'utiliser la plus
rapide ,histoire de faire tourner le bouzin avant se soir 18h

défoncer les portes ouvertes c'est sur fcold

mon dernier test

qt nb premier consecutif 155

real 134m34.637s
user 132m52.426s
sys 0m30.410s
:~/Bureau/cJumeaux$

qt nb premier consecutif 155

real 47m57.615s
user 47m25.126s
sys 0m0.760s
:~/Bureau/cJumeaux$


avec 10 comme paramètre par contre
si j'augmente le paramètre la tendance s'inverse ,java est plus rapi de
ben ça je ne l'avais pas vu ,un 10 semble aussi efficace qu'un 500 j ava
avec des résultats identiques

pour le reste si j'ai rien dans une semaine je brancherai le cerveau
histoire de gagner quelques cycles si cela ne donne rien

mais pas pour l'instant
tien d'ailleur

avec
http://cjoint.com/confirm.php?cjoint=mxkWUhVUO4
et
gcc -o jumeaux -O2 -lgmp jumeaux.c
#!/bin/bash
screen
./jumeaux

comment je fais pour rerentrer dedans


remy






Tu n'as pas l'impression de prendre les gens qui
prennent la peine de te répondre pour eds imbéciles, parfois ?
Est-ce que je ne t'avais pas dit de vérifier ce que faisaient des
routines dans les _deux_ langages, voire de les coder _toi-même_ ?

Quant à la dernière assertion, je persiste et signe.

JKB





--
http://remyaumeunier.chez-alice.fr/
Avatar
remy
remy a écrit :


comment je fais pour rerentrer dedans




screen -S test
./jumeaux
Ctrl-a Ctrl-d
screen -r test




--
http://remyaumeunier.chez-alice.fr/
Avatar
remy
remy a écrit :
remy a écrit :

>
> comment je fais pour rerentrer dedans
>

screen -S test
./jumeaux
Ctrl-a Ctrl-d
screen -r test



et ne pas oublier le plus important bonne fête

remy

--
http://remyaumeunier.chez-alice.fr/
1 2