1

Salut!

Bon alors je bosse un peu sur la segmentation, et je n'arrive pas a faire descendre cette pt1 de fonction J en dessous des 10. :/
Je ne sais pas si c'est normal, P. Lambert et H. Grecu n'en parlent pas dans leur article.
Je trouve des résultats qui me semble pas trop cohérents:
tromb Fichier joint : lena.tifftromb Fichier joint : prout.tiff

Et ce que qqn à déjà bossé sur FCM?
Merci

2

Bon j ai une autre question un peu plus generale.
Je travaille souvent sur 3 plans: x, y, z.
Comment faire en sorte que le compilateur les interpretent bien pour qu ils soient optimise par altivec sous ppc et certainement l equivalent sous intel?
(j'utilise bien entendu gcc)

merci

3

pour le ./2> tu veux dire comment faire pour que ton compilateur vectorise bien ton code?
(c'est les instructions SIMD sous intel, du style SSE(2/3) pour les floats/doubles, et MMX pour les entiers...)

bon sur PPC je sais pas mais.. en tout cas avec le SSE, si tu peux faire tes operations 4 par 4, ca sera tres probablement beaucoup mieux...
c'est des instructions qui operent sur des registres qui peuvent contenir, par exemple, 4 floats a la fois, du coup un add de 2 registres xmm-qqch t'additionnera 8 floats... donc la si tu fais tes operations 3 par 3... je sais pas trop comment le compilateur va l'optimiser, mais il y a des chances que ca soit pas top...

par contre, si tu arranges tes donnees comme ca:

truc[0].x = src[0].x;
truc[0].y = src[0].y;
truc[0].z = src[0].z;
truc[0].w = src[1].x;

truc[1].x = src[1].y;
truc[1].y = src[1].z;
truc[1].z = src[2].x;
truc[1].w = src[2].y;

truc[2].x = src[2].z;
truc[2].y = src[3].x;
truc[2].z = src[3].y;
truc[2].w = src[3].z;


et qu'apres tu fais des ops entre les blocs 'truc' de 4 floats, plutot qu'entre les blocs 'src' de 3 floats, je pense que t'aura deja plus de chances que le compilateur l'organise bien...
bref, essaye de decouper les operations et de regrouper les donnees par batch de 4...
enfin perso j'ai pas vraiment fait de tests particuliers sur comment ecrire du code C ou C++ pour que le compilateur genere un code bien vectorise... generalement quand c'est critique je fais une version SSE et une version normale, avec switch a l'init en fonction des caps du CPU...

la comme ca c'est tout ce que je peux te dire, dsl :/ (mais si tu fais des tests, /me curieux de voir ce que ca donne oui (t'utilises quoi comme compilateur?))
avatar
HURRRR !

4

Ok merci pour la reponse.
Je vais voir si j'ai le temps de faire des tests (En ce moment j'ai de gros probleme de sur l'overlapping & compactness, et c'est a rendre pour lundi:/).
J'utilise gcc 4, et je travaille principalement sur un core2Duo, et un ppc G4.
Le probleme, c'est que je ne sais meme pas sur quelle machine cela va etre teste, et avec quelle version de gcc :/