
ca serait bien d'avoir des nombres à virgule fixe dans integre... fixed_u32, fixed_s16, ... -- js@lrde.epita.fr mais qu'est-ce que je fous là moi?!

Yann Régis-Gianas wrote:
serial <js@lrde.epita.fr> writes:
ca serait bien d'avoir des nombres à virgule fixe dans integre...
fixed_u32, fixed_s16, ... Tu bosses sur de l'embarqué ?
Vu la taille des binaires, ça ne me semble pas très pertinant. La question était ironique? -- Niels

serial wrote:
ca serait bien d'avoir des nombres à virgule fixe dans integre... fixed_u32, fixed_s16, ...
Je pensais que sur les PC actuels, le coût d'utilisation des virgules flottantes par rapport aux virgules fixes étaient négligeable. Après, tout dépend de ce que l'on veut faire d'Olena; mais si on s'attache à la vitesse d'execution, je ne pense pas que les virgules fixes soient une priorité. J'ajoute que peu d'algorithmes dans Olena fonctionnent avec des flottants. (Tous les algos utilisant un tri des pixels ne fonctionnent pas avec les types dont le cardinal est grand (comme les int_u32 ou les float)). -- Niels

[ désolé si vous recevez ce message en triple, ca fait qlq jours que je m'acharne sur olena@lrde.epita.fr qui n'a pas l'air de forwarder sur le newsgroup. ] Niels van Vliet <van-vl_n@lrde.epita.fr> writes:
serial wrote:
ca serait bien d'avoir des nombres à virgule fixe dans integre... fixed_u32, fixed_s16, ...
Je pensais que sur les PC actuels, le coût d'utilisation des virgules flottantes par rapport aux virgules fixes étaient négligeable.
pas faux, mais l'avantage est que l'utilisation des deux se parallélise bien. bon ma remarque est naze car on va pas entremêler les traitements de deux images différentes. je pense quand meme qu'il peut y avoir un gain non-négligeable. faut que je fasse des benchs...
Après, tout dépend de ce que l'on veut faire d'Olena; mais si on s'attache à la vitesse d'execution, je ne pense pas que les virgules fixes soient une priorité.
comme le faisait remarquer yann, c'est intéressant pour des plateformes sans coprocesseur. des téléphones portables pour mon cas. de plus, ca me semblait une feature sympa pour integre qui serait alors plus complet, et un bon exercice pour que les nouveaux mettent les mains dans le cambouis :)
J'ajoute que peu d'algorithmes dans Olena fonctionnent avec des flottants. (Tous les algos utilisant un tri des pixels ne fonctionnent pas avec les types dont le cardinal est grand (comme les int_u32 ou les float)).
ca va dans mon sens, on pourra faire tourner plus d'algos avec ces pseudo-floats. bon, j'insiste pas plus que ca, je proposais ca en passant :) -- js@lrde.epita.fr "creating the future" (c) framfab

serial <js@lrde.epita.fr> writes:
ca va dans mon sens, on pourra faire tourner plus d'algos avec ces pseudo-floats.
Le problème, c'est que certains algorithmes qui utilisent les vrais flottants IEEE sont sûrement sensibles aux erreurs (je pense à la Fast Gaussian Derivatives par exemple). Je crois qu'une bibliothèque de flottants à virgules fixes c'est censé jeter une partie des contraintes d'IEEE pour tirer parti de la rapidité des calculs sur les entiers. Bref, je ne suis pas sûr que le rapport erreurs/gain en perfs soit pertinent aujourd'hui (sauf sur de l'embarqué). Et hop : What Every Computer Scientist Should Know About Floating-Point Arithmetic by David Goldberg http://docs.sun.com/source/806-3568/ncg_goldberg.html

Yann Régis-Gianas wrote:
serial <js@lrde.epita.fr> writes:
ca va dans mon sens, on pourra faire tourner plus d'algos avec ces pseudo-floats.
Le problème, c'est que certains algorithmes qui utilisent les vrais flottants IEEE sont sûrement sensibles aux erreurs (je pense à la Fast Gaussian Derivatives par exemple). Je crois qu'une bibliothèque de flottants à virgules fixes c'est censé jeter une partie des contraintes d'IEEE pour tirer parti de la rapidité des calculs sur les entiers.
Il y a aussi des flags dans g++ (-ffast-math). La gaussienne d'Olena a beaucoup de problèmes. D'une part si le sigma est trop petit ça plante. Ceci est 'normal' et un test à la louche a été ajouté en début de l'algo. D'autre part il y a un bug dans les gaussiennes sur certaines images. Certains points de l'image de sortie sont alors égaux à -1. Je pense que c'est un bug. Enfin, il y a des erreurs, peut-être de calcul. La gaussienne utilisant une convolution simple ne donne pas les mêmes résultats sur les cotés que la convolution rapide (avec des grands bords identiques). En ce qui concerne les standards, avec le même compilo, nous n'avons pas les mêmes résultats sur des archi différentes (sun/mac/pc), avec le même compilo. Dès que j'ai le temps, je lis ton article! -- Niels
participants (3)
-
Niels van Vliet
-
serial
-
yann@lrde.epita.fr