for(i=0;i<VAL; i++){
//traitements en boucles des tableaux
}
for(i=0;i<VAL; i++){
//traitements en boucles des tableaux
}
for(i=0;i<VAL; i++){
//traitements en boucles des tableaux
}
j'execute : op un problem de segfault, qui est aléatoire, après
chaque compilation il me sort un nouveau, mais qui touchent toute le
temps l'initialisation des tableaux par exemple, lorsque je vois avec
ddd, je trouve qu'il essaye d'initisaliser avec d'allouer!!!, j'elimine
pas la possiblité de faire des betises dans mon code, mais j'ai une
grande confiance en se que j'ai écris.
s'étais ça, j'ai corriger des problèmes de conversion de type et
d'autres #remark que icc me présente, et voila ça marche
l'éxécution mais je suis trés loin des perf souhaités: je tourne à
60 MFLOPS.
désolé pour ce long message explicatif, mais je veux bien voir si
qlqn à une exlication sur ces perf, merci.
j'execute : op un problem de segfault, qui est aléatoire, après
chaque compilation il me sort un nouveau, mais qui touchent toute le
temps l'initialisation des tableaux par exemple, lorsque je vois avec
ddd, je trouve qu'il essaye d'initisaliser avec d'allouer!!!, j'elimine
pas la possiblité de faire des betises dans mon code, mais j'ai une
grande confiance en se que j'ai écris.
s'étais ça, j'ai corriger des problèmes de conversion de type et
d'autres #remark que icc me présente, et voila ça marche
l'éxécution mais je suis trés loin des perf souhaités: je tourne à
60 MFLOPS.
désolé pour ce long message explicatif, mais je veux bien voir si
qlqn à une exlication sur ces perf, merci.
j'execute : op un problem de segfault, qui est aléatoire, après
chaque compilation il me sort un nouveau, mais qui touchent toute le
temps l'initialisation des tableaux par exemple, lorsque je vois avec
ddd, je trouve qu'il essaye d'initisaliser avec d'allouer!!!, j'elimine
pas la possiblité de faire des betises dans mon code, mais j'ai une
grande confiance en se que j'ai écris.
s'étais ça, j'ai corriger des problèmes de conversion de type et
d'autres #remark que icc me présente, et voila ça marche
l'éxécution mais je suis trés loin des perf souhaités: je tourne à
60 MFLOPS.
désolé pour ce long message explicatif, mais je veux bien voir si
qlqn à une exlication sur ces perf, merci.
ne pariez sur rien, le code publier est à titre indicatif,
ne pariez sur rien, le code publier est à titre indicatif,
ne pariez sur rien, le code publier est à titre indicatif,
Merci à vous tous,
alors j'ai suis les remarques que icc m'affiche, j'ai placer la
variable MALLOC_CHECK_ à 1, tout ce passe bien pas de problème, pas
de seg fault non plus
le problème qui me reste à résoudre est celui des
performances sur la version C, et si vous avez des remarques sur les
options utilisés dans ce makefile n'hésitez pas, merci.
Merci à vous tous,
alors j'ai suis les remarques que icc m'affiche, j'ai placer la
variable MALLOC_CHECK_ à 1, tout ce passe bien pas de problème, pas
de seg fault non plus
le problème qui me reste à résoudre est celui des
performances sur la version C, et si vous avez des remarques sur les
options utilisés dans ce makefile n'hésitez pas, merci.
Merci à vous tous,
alors j'ai suis les remarques que icc m'affiche, j'ai placer la
variable MALLOC_CHECK_ à 1, tout ce passe bien pas de problème, pas
de seg fault non plus
le problème qui me reste à résoudre est celui des
performances sur la version C, et si vous avez des remarques sur les
options utilisés dans ce makefile n'hésitez pas, merci.
ne pariez sur rien, le code publier est à titre indicatif,
Alors je vais te dire. Ton code publié fuit.
S'il n'est qu'indicatif, il n'indique rien d'autre qu'il fuit et qu'il
est mal écrit.
Maintenant si tu demandes de l'aide sans donner d'infos fiables ou
complètes et que d'un autre côté tu es sûr de ton code, je vois m al ce
qu'on pourrait faire pour t'aider et il vaut mieux que tu cherches seul.
Pour la dernière fois, ce que tu as décrit comme problème est
*typiquement* le symptôme d'un bug (ou plusieurs) dans ton code, et non
dans icc.
Je te suggère de suivre le conseil de Marc et tu verras que c'est ton
code qui est en cause et pas icc.
--
Alain
ne pariez sur rien, le code publier est à titre indicatif,
Alors je vais te dire. Ton code publié fuit.
S'il n'est qu'indicatif, il n'indique rien d'autre qu'il fuit et qu'il
est mal écrit.
Maintenant si tu demandes de l'aide sans donner d'infos fiables ou
complètes et que d'un autre côté tu es sûr de ton code, je vois m al ce
qu'on pourrait faire pour t'aider et il vaut mieux que tu cherches seul.
Pour la dernière fois, ce que tu as décrit comme problème est
*typiquement* le symptôme d'un bug (ou plusieurs) dans ton code, et non
dans icc.
Je te suggère de suivre le conseil de Marc et tu verras que c'est ton
code qui est en cause et pas icc.
--
Alain
ne pariez sur rien, le code publier est à titre indicatif,
Alors je vais te dire. Ton code publié fuit.
S'il n'est qu'indicatif, il n'indique rien d'autre qu'il fuit et qu'il
est mal écrit.
Maintenant si tu demandes de l'aide sans donner d'infos fiables ou
complètes et que d'un autre côté tu es sûr de ton code, je vois m al ce
qu'on pourrait faire pour t'aider et il vaut mieux que tu cherches seul.
Pour la dernière fois, ce que tu as décrit comme problème est
*typiquement* le symptôme d'un bug (ou plusieurs) dans ton code, et non
dans icc.
Je te suggère de suivre le conseil de Marc et tu verras que c'est ton
code qui est en cause et pas icc.
--
Alain
je fait, sinon je suis totalement open, je l'ai fait pour caché mon
Je veux dire : je l'ai pas fait pour cacher mon code pouri :)
code pouri, le problème qui me reste à résoudre est celui des
je fait, sinon je suis totalement open, je l'ai fait pour caché mon
Je veux dire : je l'ai pas fait pour cacher mon code pouri :)
code pouri, le problème qui me reste à résoudre est celui des
je fait, sinon je suis totalement open, je l'ai fait pour caché mon
Je veux dire : je l'ai pas fait pour cacher mon code pouri :)
code pouri, le problème qui me reste à résoudre est celui des
Merci à vous tous,
alors j'ai suis les remarques que icc m'affiche, j'ai placer la
variable MALLOC_CHECK_ à 1, tout ce passe bien pas de problème, pas
de seg fault non plus
Le fait que le passae de MALLOC_CHECK_ à 1 supprime le seg fault
m'incite encore plus à penser que le code est faux, mais fonctionne
par [mal]chance. C'est du code qui "tombe en marche".
valgrind est un outil plus tatillon que la simple mise à 1 du
MALLOC_CHECK_.le problème qui me reste à résoudre est celui des
performances sur la version C, et si vous avez des remarques sur les
options utilisés dans ce makefile n'hésitez pas, merci.
Je t'ai déjà répondu: il faudrait déjà être *sur* que c'es t le
même algo (cf mes remarques sur les accès mémoires et le cache).
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
Merci à vous tous,
alors j'ai suis les remarques que icc m'affiche, j'ai placer la
variable MALLOC_CHECK_ à 1, tout ce passe bien pas de problème, pas
de seg fault non plus
Le fait que le passae de MALLOC_CHECK_ à 1 supprime le seg fault
m'incite encore plus à penser que le code est faux, mais fonctionne
par [mal]chance. C'est du code qui "tombe en marche".
valgrind est un outil plus tatillon que la simple mise à 1 du
MALLOC_CHECK_.
le problème qui me reste à résoudre est celui des
performances sur la version C, et si vous avez des remarques sur les
options utilisés dans ce makefile n'hésitez pas, merci.
Je t'ai déjà répondu: il faudrait déjà être *sur* que c'es t le
même algo (cf mes remarques sur les accès mémoires et le cache).
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
Merci à vous tous,
alors j'ai suis les remarques que icc m'affiche, j'ai placer la
variable MALLOC_CHECK_ à 1, tout ce passe bien pas de problème, pas
de seg fault non plus
Le fait que le passae de MALLOC_CHECK_ à 1 supprime le seg fault
m'incite encore plus à penser que le code est faux, mais fonctionne
par [mal]chance. C'est du code qui "tombe en marche".
valgrind est un outil plus tatillon que la simple mise à 1 du
MALLOC_CHECK_.le problème qui me reste à résoudre est celui des
performances sur la version C, et si vous avez des remarques sur les
options utilisés dans ce makefile n'hésitez pas, merci.
Je t'ai déjà répondu: il faudrait déjà être *sur* que c'es t le
même algo (cf mes remarques sur les accès mémoires et le cache).
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
t'a tout à fait raison, car j'ai tombé sur un autre piège, en faite
je dispose de deux version de icc, la 9.0 et la 9.1, sur la 9.1 il
marche sans seg fault et sur la 9.0 il marche pas!!!
On fait ce qui m'etonne c'est que lorsque de compile avec -g il a pas
de prob sinon il s'arrete sur cette erreur :
onde2: src/tools.c:31: initArrayf2D: Assertion `(c != 0L)' failed.
Abort
alors voici le code qui mene à cela:
c = allocArrayf2D(x,y);
initArrayf2D(c,x,y ,2.);
float ** allocArrayf2D(int x, int y){
float **a;
int i,j;
if( (a = (float **)malloc(sizeof(float*)*x)) == NULL){
fprintf(stderr,"Error:allocation Failed n");
return NULL;
}
for( i = 0; i<x; i++){
if( (a[i] = (float*)malloc(sizeof(float)*y)) ==NULL){
fprintf(stderr,"Error:allocation Failedn");
for( j=i-1; j>-1; j--){
free(a[j]);
}
free(a);
return NULL;
}
int
initArrayf2D(float** c,int xi, int xj,float value){
assert((c != NULL)); //------->> il s'arrete ici
int i,j;
for(i=0; i<xi; i++)
for(j=0; j<xj; j++){
c[i][j]=value;
}
return a;
}
t'a tout à fait raison, car j'ai tombé sur un autre piège, en faite
je dispose de deux version de icc, la 9.0 et la 9.1, sur la 9.1 il
marche sans seg fault et sur la 9.0 il marche pas!!!
On fait ce qui m'etonne c'est que lorsque de compile avec -g il a pas
de prob sinon il s'arrete sur cette erreur :
onde2: src/tools.c:31: initArrayf2D: Assertion `(c != 0L)' failed.
Abort
alors voici le code qui mene à cela:
c = allocArrayf2D(x,y);
initArrayf2D(c,x,y ,2.);
float ** allocArrayf2D(int x, int y){
float **a;
int i,j;
if( (a = (float **)malloc(sizeof(float*)*x)) == NULL){
fprintf(stderr,"Error:allocation Failed n");
return NULL;
}
for( i = 0; i<x; i++){
if( (a[i] = (float*)malloc(sizeof(float)*y)) ==NULL){
fprintf(stderr,"Error:allocation Failedn");
for( j=i-1; j>-1; j--){
free(a[j]);
}
free(a);
return NULL;
}
int
initArrayf2D(float** c,int xi, int xj,float value){
assert((c != NULL)); //------->> il s'arrete ici
int i,j;
for(i=0; i<xi; i++)
for(j=0; j<xj; j++){
c[i][j]=value;
}
return a;
}
t'a tout à fait raison, car j'ai tombé sur un autre piège, en faite
je dispose de deux version de icc, la 9.0 et la 9.1, sur la 9.1 il
marche sans seg fault et sur la 9.0 il marche pas!!!
On fait ce qui m'etonne c'est que lorsque de compile avec -g il a pas
de prob sinon il s'arrete sur cette erreur :
onde2: src/tools.c:31: initArrayf2D: Assertion `(c != 0L)' failed.
Abort
alors voici le code qui mene à cela:
c = allocArrayf2D(x,y);
initArrayf2D(c,x,y ,2.);
float ** allocArrayf2D(int x, int y){
float **a;
int i,j;
if( (a = (float **)malloc(sizeof(float*)*x)) == NULL){
fprintf(stderr,"Error:allocation Failed n");
return NULL;
}
for( i = 0; i<x; i++){
if( (a[i] = (float*)malloc(sizeof(float)*y)) ==NULL){
fprintf(stderr,"Error:allocation Failedn");
for( j=i-1; j>-1; j--){
free(a[j]);
}
free(a);
return NULL;
}
int
initArrayf2D(float** c,int xi, int xj,float value){
assert((c != NULL)); //------->> il s'arrete ici
int i,j;
for(i=0; i<xi; i++)
for(j=0; j<xj; j++){
c[i][j]=value;
}
return a;
}
t'a tout à fait raison, car j'ai tombé sur un autre piège, en fa ite
je dispose de deux version de icc, la 9.0 et la 9.1, sur la 9.1 il
marche sans seg fault et sur la 9.0 il marche pas!!!
On fait ce qui m'etonne c'est que lorsque de compile avec -g il a pas
de prob sinon il s'arrete sur cette erreur :
onde2: src/tools.c:31: initArrayf2D: Assertion `(c != 0L)' failed.
Abort
Comme déjà dit au moins 3 fois, c'est caractéristique d'un code
faux mais qui marche par [mal]chance.alors voici le code qui mene à cela:
c = allocArrayf2D(x,y);
initArrayf2D(c,x,y ,2.);
float ** allocArrayf2D(int x, int y){
float **a;
int i,j;
if( (a = (float **)malloc(sizeof(float*)*x)) == NULL){
fprintf(stderr,"Error:allocation Failed n");
return NULL;
}
for( i = 0; i<x; i++){
if( (a[i] = (float*)malloc(sizeof(float)*y)) ==NULL){
fprintf(stderr,"Error:allocation Failedn");
for( j=i-1; j>-1; j--){
free(a[j]);
}
free(a);
return NULL;
}
Il manque pas un
--------------------------
}
return a;
}
--------------------------
au code que tu postes ?
int
initArrayf2D(float** c,int xi, int xj,float value){
assert((c != NULL)); //------->> il s'arrete ici
int i,j;
for(i=0; i<xi; i++)
for(j=0; j<xj; j++){
c[i][j]=value;
}
return a;
C'est quoi 'a' ?}
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
t'a tout à fait raison, car j'ai tombé sur un autre piège, en fa ite
je dispose de deux version de icc, la 9.0 et la 9.1, sur la 9.1 il
marche sans seg fault et sur la 9.0 il marche pas!!!
On fait ce qui m'etonne c'est que lorsque de compile avec -g il a pas
de prob sinon il s'arrete sur cette erreur :
onde2: src/tools.c:31: initArrayf2D: Assertion `(c != 0L)' failed.
Abort
Comme déjà dit au moins 3 fois, c'est caractéristique d'un code
faux mais qui marche par [mal]chance.
alors voici le code qui mene à cela:
c = allocArrayf2D(x,y);
initArrayf2D(c,x,y ,2.);
float ** allocArrayf2D(int x, int y){
float **a;
int i,j;
if( (a = (float **)malloc(sizeof(float*)*x)) == NULL){
fprintf(stderr,"Error:allocation Failed n");
return NULL;
}
for( i = 0; i<x; i++){
if( (a[i] = (float*)malloc(sizeof(float)*y)) ==NULL){
fprintf(stderr,"Error:allocation Failedn");
for( j=i-1; j>-1; j--){
free(a[j]);
}
free(a);
return NULL;
}
Il manque pas un
--------------------------
}
return a;
}
--------------------------
au code que tu postes ?
int
initArrayf2D(float** c,int xi, int xj,float value){
assert((c != NULL)); //------->> il s'arrete ici
int i,j;
for(i=0; i<xi; i++)
for(j=0; j<xj; j++){
c[i][j]=value;
}
return a;
C'est quoi 'a' ?
}
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
t'a tout à fait raison, car j'ai tombé sur un autre piège, en fa ite
je dispose de deux version de icc, la 9.0 et la 9.1, sur la 9.1 il
marche sans seg fault et sur la 9.0 il marche pas!!!
On fait ce qui m'etonne c'est que lorsque de compile avec -g il a pas
de prob sinon il s'arrete sur cette erreur :
onde2: src/tools.c:31: initArrayf2D: Assertion `(c != 0L)' failed.
Abort
Comme déjà dit au moins 3 fois, c'est caractéristique d'un code
faux mais qui marche par [mal]chance.alors voici le code qui mene à cela:
c = allocArrayf2D(x,y);
initArrayf2D(c,x,y ,2.);
float ** allocArrayf2D(int x, int y){
float **a;
int i,j;
if( (a = (float **)malloc(sizeof(float*)*x)) == NULL){
fprintf(stderr,"Error:allocation Failed n");
return NULL;
}
for( i = 0; i<x; i++){
if( (a[i] = (float*)malloc(sizeof(float)*y)) ==NULL){
fprintf(stderr,"Error:allocation Failedn");
for( j=i-1; j>-1; j--){
free(a[j]);
}
free(a);
return NULL;
}
Il manque pas un
--------------------------
}
return a;
}
--------------------------
au code que tu postes ?
int
initArrayf2D(float** c,int xi, int xj,float value){
assert((c != NULL)); //------->> il s'arrete ici
int i,j;
for(i=0; i<xi; i++)
for(j=0; j<xj; j++){
c[i][j]=value;
}
return a;
C'est quoi 'a' ?}
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
erreur de frappe,
float ** allocArrayf2D(int x, int y){
float **a;
int i,j;
if( (a = (float **)malloc(sizeof(float*)*x)) == NULL){
fprintf(stderr,"Error:allocation Failed n");
return NULL;
}
for( i = 0; i<x; i++){
if( (a[i] = (float*)malloc(sizeof(float)*y)) ==NULL){
fprintf(stderr,"Error:allocation Failedn");
for( j=i-1; j>-1; j--){
free(a[j]);
}
free(a);
return NULL;
}
return a; // c'est ici le 'return a;'
}
et le initArrayf2D c'est ça :
int
initArrayf2D(float** c,int xi, int xj,float value){
assert((c != NULL));
int i,j;
for(i=0; i<xi; i++)
for(j=0; j<xj; j++){
c[i][j]=value;
// printf(" c[%d][%d]=> %f n",i,j,c[i][j]);
}
return EXIT_SUCCESS;
}
onde2: src/tools.c:31: initArrayf2D: Assertion `(c != 0L)' failed.
Abort
Comme déjà dit au moins 3 fois, c'est caractéristique d'un code
faux mais qui marche par [mal]chance.alors voici le code qui mene à cela:
c = allocArrayf2D(x,y);
initArrayf2D(c,x,y ,2.);
erreur de frappe,
float ** allocArrayf2D(int x, int y){
float **a;
int i,j;
if( (a = (float **)malloc(sizeof(float*)*x)) == NULL){
fprintf(stderr,"Error:allocation Failed n");
return NULL;
}
for( i = 0; i<x; i++){
if( (a[i] = (float*)malloc(sizeof(float)*y)) ==NULL){
fprintf(stderr,"Error:allocation Failedn");
for( j=i-1; j>-1; j--){
free(a[j]);
}
free(a);
return NULL;
}
return a; // c'est ici le 'return a;'
}
et le initArrayf2D c'est ça :
int
initArrayf2D(float** c,int xi, int xj,float value){
assert((c != NULL));
int i,j;
for(i=0; i<xi; i++)
for(j=0; j<xj; j++){
c[i][j]=value;
// printf(" c[%d][%d]=> %f n",i,j,c[i][j]);
}
return EXIT_SUCCESS;
}
onde2: src/tools.c:31: initArrayf2D: Assertion `(c != 0L)' failed.
Abort
Comme déjà dit au moins 3 fois, c'est caractéristique d'un code
faux mais qui marche par [mal]chance.
alors voici le code qui mene à cela:
c = allocArrayf2D(x,y);
initArrayf2D(c,x,y ,2.);
erreur de frappe,
float ** allocArrayf2D(int x, int y){
float **a;
int i,j;
if( (a = (float **)malloc(sizeof(float*)*x)) == NULL){
fprintf(stderr,"Error:allocation Failed n");
return NULL;
}
for( i = 0; i<x; i++){
if( (a[i] = (float*)malloc(sizeof(float)*y)) ==NULL){
fprintf(stderr,"Error:allocation Failedn");
for( j=i-1; j>-1; j--){
free(a[j]);
}
free(a);
return NULL;
}
return a; // c'est ici le 'return a;'
}
et le initArrayf2D c'est ça :
int
initArrayf2D(float** c,int xi, int xj,float value){
assert((c != NULL));
int i,j;
for(i=0; i<xi; i++)
for(j=0; j<xj; j++){
c[i][j]=value;
// printf(" c[%d][%d]=> %f n",i,j,c[i][j]);
}
return EXIT_SUCCESS;
}
onde2: src/tools.c:31: initArrayf2D: Assertion `(c != 0L)' failed.
Abort
Comme déjà dit au moins 3 fois, c'est caractéristique d'un code
faux mais qui marche par [mal]chance.alors voici le code qui mene à cela:
c = allocArrayf2D(x,y);
initArrayf2D(c,x,y ,2.);