question simple/double précision sur cpu divers

question simple/double précision sur cpu divers - Carte mère - Hardware

Marsh Posté le 12-09-2009 à 23:05:45    

Bonjour à toute et à tous.  :)  
 
voila, j'aurai voulu savoir un truc qui me trotte dans la tete depuis un petit moment.
 
* Existe t-il un rapport de performance entre simple et double précision ou bien  
c'est du cas par cas et ca dépend de l'architecture ?
 
* Qu'en est t-il de technologie différente comme le GPU ?
 
* Et enfin, comment connaitre cette valeur sur son propre pc, tant au niveau CPU que GPU ?

 
 
merci pour vos réponse.  :hello:

Reply

Marsh Posté le 12-09-2009 à 23:05:45   

Reply

Marsh Posté le 13-09-2009 à 17:19:13    

fa975028 a écrit :

Bonjour à toute et à tous.  :)  
 
voila, j'aurai voulu savoir un truc qui me trotte dans la tete depuis un petit moment.
 
* Existe t-il un rapport de performance entre simple et double précision ou bien  
c'est du cas par cas et ca dépend de l'architecture ?
 
* Qu'en est t-il de technologie différente comme le GPU ?
 
* Et enfin, comment connaitre cette valeur sur son propre pc, tant au niveau CPU que GPU ?

 
 
merci pour vos réponse.  :hello:


Salut,
Ta question concerne-t-elle les instructions vectorielles SSE ? Simple précision=64bits et double=128bits.
Dans ce cas tout dépend de l'architecture : seuls les derniers AMD K10 et Intel Core2/Core i5/i7 calculent la double précision en un cycle avec leur unités 128bits. Les plus anciens processeurs calculent la double précision en deux cycles avec leur unités 64bits:
http://arstechnica.com/hardware/ne [...] core.ars/3
 
Pour les GPU, je ne sais pas.


Message édité par josedsf le 13-09-2009 à 17:21:14

---------------
Guide cpu / Zen4
Reply

Marsh Posté le 13-09-2009 à 21:02:19    

Je ne sais pas. Je pose cette question en regard a l'architecture
GT200 de nvidia. nottament la  285GTX.
En simple précision, cette architecture dévellope 1062.72 Gflops,
soit 1 Tflops. mais en double précision, les donnée sont inconnu.
on parle de 200Gflops mais rien n'est certain.
 
c'est pour ca que je demandais... ?
 
 
et une autre question me trotte également.
 
 
j'aimerai, en C, faire des opérations mathématique simple sur des nombres en
256, 384, 512, 768, et meme 1024 bits. j'aimerai donc utiliser l'architecture de ma carte nvidia pour pouvoir,  
via CUDA, effectuer ces opérations.
 
comment on peut effectuer des opérations sur des nombres plus grand (256 bits donc) que
ce que l'architecture te le permet ?
 
en gros, c'est quoi l'algo pour faire en C:
 
565525791540989378115994900021445889893 + 842215903550500249891021400267758987980
 
??

Reply

Marsh Posté le 10-12-2009 à 03:10:50    

Salut,  
 

Citation :

Salut,
Ta question concerne-t-elle les instructions vectorielles SSE ? Simple précision=64bits et double=128bits.
Dans ce cas tout dépend de l'architecture : seuls les derniers AMD K10 et Intel Core2/Core i5/i7 calculent la double précision en un cycle avec leur unités 128bits.


 
128 bits ?! Je ne sais pas ou tu as vu ça !
 
fa975028, pour les CPU il n'y a plus, à ma connaissance, de différences de performances entre 32 et 64 bits sur les CPU récents. Par contre, sur les carte graphiques oui et ça dépend de l'architecture. En général ça tourne autour de 1/5 (double/simple).
 
Et je comprends pas pourquoi tu parles de 256, ... , 1024 bits ?! Tu peux aller jusqu'à 10^308 avec 16 décimales en 64 bits. Si ça ne te suffit pas tu peux utiliser un long double mais c'est pas vraiment du 128 bit.

Reply

Marsh Posté le 10-12-2009 à 11:33:58    

J'avais en projet en fait de faire un petit test de factorisation de grand nombre mais sur carte graphique en utilisant Cuda. je travaillerai sur 4 chiffre différents:
 
64bits, 256bits, 768bits et 2048 bits.
 
un peu comme les défis RSA en sont temps...
 
 
mais je vois pas comment on peut traiter des chiffres de 256bits avec une architecture 64bits... je cale.  :sweat:

Reply

Marsh Posté le 10-12-2009 à 11:35:55    

Via un système de tableau ou de liste chainee ?

Reply

Marsh Posté le 10-12-2009 à 22:35:45    

j'avoue que j'avais pensé a la chaine de caractere. remplacer un chiffre par un caractere, pour ainsi beneficier d'une plus grande base... mais bon, ca ralentirai considérablement le temps de calcul
 
 

Citation :

Via un système de tableau


Je crois en effet que c'est un meilleur choix avec des array.
 
 
mais la ou je bloque vraiment, c'est ici:
 
J'ai deux variables contenant  chaqu'un admettons le nombre maximum autorisé par le type de la variable
 
ensuite, je fait quoi moi avec ces deux variable ? si je veux par exemple les additionner, comment je m'y prend etant donné que je ne peut pas traiter/stoquer ce nombre dans une variable... ?

Reply

Marsh Posté le 10-12-2009 à 22:58:42    

Ce que j'aurais pensé faire c'est mettre les valeurs une par une dans le tableau et ensuite faire le calcul sans les refaire passer en variable :
 
Je te fais un exemple simple :
 
Tu prends 2 tableaux tab1 et tab2 contenant 3 entier chacun
 
ils sont remplis comme ça :  tab[0] = 1 tab2[0] = 3
                                      tab[1] = 2 tab2[1] = 2
                                      tab[2] = 3 tab2[2] = 1
 
En gros la tu ferais une multiplication de 123 par 321
Ce que tu fais tu reprends le principe de la multiplication qu'on a appris a l'école primaire pour faire un algo qui te faire des multiplications avec retenue.
Tout ça en le mettant dans un troisième tableau tab3 a chaque fois pour le résultat et puis une variable a la con pour stocker les retenues.
 

Reply

Marsh Posté le 10-12-2009 à 23:17:34    

oui, c'est les bignums, va voir les bignums pour ça (on peut faire de la précision arbitraire avec ce principe)
 
il doit déjà yavoir des tonnes de librairies pré-existantes. on me l'avait fait implémenter à la fac, en caml : c'est fun mais la difficulté du truc c'était implémenter la division ^.
 
les histoires de simple précision, double précision, tu peux oublier : manifestement t'as besoin d'entiers et non de flottants.
les CG DX10 supportent les entiers mais ce n'est pas là-dessus qu'elles se focalisent. si je ne me trompe pas c'est entiers 24bits sur les radeon, 32bits sur les geforce actuelles, 64bits sur Fermi.
 
tu ferais probablement mieux d'utiliser du CPU 64bits (c'est dans ce genre d'application que ça sert d'avoir un CPU 64bits plutôt que 32 ^^)

Reply

Marsh Posté le 10-12-2009 à 23:58:33    

j'ai un quad Q9550, donc ca ira bien en 64bits.
 
c'est dommange pour les carte graphique, on perd une grosse puissance de calcul brut...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed