Si votre GPU a calculer la capacité de 1,3 alors vous pouvez le faire en double précision. Vous devez être conscient que qui 1.3 matériel n'a qu'un seul double-precision FP part par MP, qui doit être partagée par tous les threads sur que le DÉPUTÉ, alors qu'il y a 8 simple précision les Unités de police constituées, de sorte que chaque thread possède sa propre simple précision FPU. En d'autres termes, vous pouvez ainsi voir 8x pire performance avec double précision qu'avec de simple précision.
Merci pour l'astuce Paul. Je voulais passer à double de précision surtout pour la précision. Je suis une consultation sur un projet parallèle où je suis la conversion de code Python en C++ / CUDA et le code Python utilise double précision partout. J'ai remarqué que quand je suis passé à l'aide de float j'ai eu un maximum de la valeur absolue de la différence de 1e-06 pour les résultats. Je n'étais pas trop satisfaite du résultat, mais je préfère prendre la balle avec la précision que la performance. Merci! +1. Ha - commentant les 7 ans des réponses maintenant Ray ? 😉 Plus sérieusement c'est peut être un peu en dehors de la date de maintenant - je n'ai pas joué avec CUDA, pour quelques années, et la dernière le matériel nVidia pourrait bien avoir une meilleure précision double support en maintenant, pour tout ce que je sais. Hehe je n'avais pas remarqué l'année. J'ai regardé la capacité avant que je commente :). La carte que je suis en train de travailler sur mon client a besoin de calculer la capacité 3.0 et il est encore seulement avec la moitié de celle de simple précision. Il a été soutenu depuis 6.0... Dommage. Merci néanmoins, même si ce n'était de 7 ans! Une autre chose à considérer est que si le GPU est vieux, mais le CPU est relativement nouveau (et en particulier si elle a un bon nombre de cœurs), alors vous pouvez obtenir de meilleurs résultats avec un bon FFT de la bibliothèque (par exemple, FFTW) sur le CPU, ce qui est beaucoup plus facile à mettre en œuvre et à gérer. De toute façon, bonne chance avec quel que soit le trajet que vous allez vers le bas! Ah, je vois. Non, mon premier commentaire dit à la fin "... mais j'aurais plutôt pris la balle avec précision que par la performance"... ce qui veut dire que j'ai fini à l'aide de simple précision à la place. Je n'ai pas aller avec l'aide de toute la FFT à base de solutions, car il n'était pas nécessaire pour mon cas d'utilisation spécifiques (même si j'ai fait de mettre en œuvre un produit de convolution en 2D).
Si vous souhaitez utiliser la double précision, vous devez définir l'architecture GPU de sm_13 (si votre GPU prend en charge).
Sinon il va encore convertir tous les doubles de flotteurs et ne donne qu'un avertissement (comme on le voit dans faya du post).
(Très ennuyeux si vous obtenez une erreur à cause de cela 🙂 )
À la suite de Paul R de commentaires, de Calcul de la Capacité de 2.0 (aka Fermi) ont beaucoup amélioré en double précision à l'appui, avec seulement la moitié de celle de simple précision.
Ce Fermi livre blanc a plus de détails à propos de la double performance des nouveaux dispositifs.
+1: merci pour ce complément d'info - je n'ai pas travaillé avec CUDA pour environ un an maintenant et il n'était pas au courant de Calculer la Capacité de 2,0 rien dans la technologie reste encore pour très longtemps!!! Sachez cependant que de Fermi est le double de la précision de la performance est (artificiellement) plus faible pour les cartes GeForce que pour les Teslas. Quadro devraient avoir le même niveau de performance que Tesla cartes. Malheureusement, Quadro semblent être le prix à environ 10 fois le prix de la GeForce cartes correspondantes Gpu (si Quadro venir avec plus de mémoire).
Si vous voulez plus de précision que celui de votre ancienne carte CUDA offre vous pouvez utiliser le float float solution. Sur les Gpu modernes, vous pouvez également utiliser double-double pour atteindre une précision plus grande que le double.
Si votre GPU a calculer la capacité de 1,3 alors vous pouvez le faire en double précision. Vous devez être conscient que qui 1.3 matériel n'a qu'un seul double-precision FP part par MP, qui doit être partagée par tous les threads sur que le DÉPUTÉ, alors qu'il y a 8 simple précision les Unités de police constituées, de sorte que chaque thread possède sa propre simple précision FPU. En d'autres termes, vous pouvez ainsi voir 8x pire performance avec double précision qu'avec de simple précision.
double
de précision surtout pour la précision. Je suis une consultation sur un projet parallèle où je suis la conversion de code Python en C++ / CUDA et le code Python utilisedouble
précision partout. J'ai remarqué que quand je suis passé à l'aide defloat
j'ai eu un maximum de la valeur absolue de la différence de1e-06
pour les résultats. Je n'étais pas trop satisfaite du résultat, mais je préfère prendre la balle avec la précision que la performance. Merci! +1.Ha - commentant les 7 ans des réponses maintenant Ray ? 😉 Plus sérieusement c'est peut être un peu en dehors de la date de maintenant - je n'ai pas joué avec CUDA, pour quelques années, et la dernière le matériel nVidia pourrait bien avoir une meilleure précision double support en maintenant, pour tout ce que je sais.
Hehe je n'avais pas remarqué l'année. J'ai regardé la capacité avant que je commente :). La carte que je suis en train de travailler sur mon client a besoin de calculer la capacité 3.0 et il est encore seulement avec la moitié de celle de simple précision. Il a été soutenu depuis 6.0... Dommage. Merci néanmoins, même si ce n'était de 7 ans!
Une autre chose à considérer est que si le GPU est vieux, mais le CPU est relativement nouveau (et en particulier si elle a un bon nombre de cœurs), alors vous pouvez obtenir de meilleurs résultats avec un bon FFT de la bibliothèque (par exemple, FFTW) sur le CPU, ce qui est beaucoup plus facile à mettre en œuvre et à gérer. De toute façon, bonne chance avec quel que soit le trajet que vous allez vers le bas!
Ah, je vois. Non, mon premier commentaire dit à la fin "... mais j'aurais plutôt pris la balle avec précision que par la performance"... ce qui veut dire que j'ai fini à l'aide de simple précision à la place. Je n'ai pas aller avec l'aide de toute la FFT à base de solutions, car il n'était pas nécessaire pour mon cas d'utilisation spécifiques (même si j'ai fait de mettre en œuvre un produit de convolution en 2D).
OriginalL'auteur Paul R
Comme une astuce:
Si vous souhaitez utiliser la double précision, vous devez définir l'architecture GPU de
sm_13
(si votre GPU prend en charge).Sinon il va encore convertir tous les doubles de flotteurs et ne donne qu'un avertissement (comme on le voit dans faya du post).
(Très ennuyeux si vous obtenez une erreur à cause de cela 🙂 )
Le drapeau est:
-arch=sm_13
OriginalL'auteur
À la suite de Paul R de commentaires, de Calcul de la Capacité de 2.0 (aka Fermi) ont beaucoup amélioré en double précision à l'appui, avec seulement la moitié de celle de simple précision.
Ce Fermi livre blanc a plus de détails à propos de la double performance des nouveaux dispositifs.
Sachez cependant que de Fermi est le double de la précision de la performance est (artificiellement) plus faible pour les cartes GeForce que pour les Teslas. Quadro devraient avoir le même niveau de performance que Tesla cartes.
Malheureusement, Quadro semblent être le prix à environ 10 fois le prix de la GeForce cartes correspondantes Gpu (si Quadro venir avec plus de mémoire).
OriginalL'auteur Edric
Si vous voulez plus de précision que celui de votre ancienne carte CUDA offre vous pouvez utiliser le float float solution. Sur les Gpu modernes, vous pouvez également utiliser double-double pour atteindre une précision plus grande que le double.
Plus d'informations ici
OriginalL'auteur phuclv