Langage C;warning

Fermé
Anne - 14 juil. 2004 à 17:01
 Anne - 14 juil. 2004 à 18:03
Salut

J'ai un warning qui s'affiche pour quelques unes de mais variables, mais je ne comprends pas pourquoi. Je le declare en local, mais voila ce que j'ai a la compilation
Warning:referenced scalar variable A is shared by default.
cela me le fait aussi pour Aprime, S, I,Sprime ,Iprime et bdot
Voila un petit morceau du programme:

void *compute_slow_curr( Currargs *ca, float dt )
/*
* update j, d, f, x and [Ca] by biggest time step
* update m and h by either a medium or small time step
* update voltage by small time step
*/
{
double i_Na, i_K1, i_to, i_Kur, i_Kr, i_Ks, i_CaL, i_pCa, i_NaCa, i_rel, i_tr;
double S,A,I,Sprime,Aprime,Iprime,Bdot;//nouveau

/* ad in Jim's variables */
double iclca,del,Ecl,caflux,inf_qca,E_Na;
double ctnacl,ibcl,v_josh,ca_josh,ik_ach;
double caflux_tmp;
float v_j,ca_j;
int index_josh;
double exp_d_tau_qca;
/* end of Jim's variables */

double ls,la,lo,ks,ka,ko;//nouveau

double F_n, *vrow, *carow, *fnrow, di_ups;
int i, BigStep, MedStep;
int cl_index;
Gatetype **y = ca->y;

E_Na = R*T/F*log( conNa_o/ConNa_i0 );

if( cnt==UberStep) {
BigStep = 1;
MedStep = 1;
} else {
BigStep = 0;
if( !(cnt%Step) )
MedStep = 1;
else
MedStep = 0;
}

/* calculate exponential used within parallel loop */
exp_d_tau_qca=exp(-dt/tau_qca);
/* end calculation of exponential */

/* fscanf(in_Ca,"%d %f",&index_josh,&ca_j);
ca_josh=(double) ca_j; */
#pragma omp parallel
#pragma omp for schedule(static) private(i, ik_ach,i_Na,i_K1,i_to,vrow,carow,fnrow,i_Kur,i_Kr,i_Ks,i_CaL,i_pCa,i_NaCa,i_rel,di_ups,i_tr,ibcl,ctnacl,inf_qca,caflux,del,Ecl,iclca, caflux_tmp, cl_index)

/*#pragma MP taskloop schedtype(static)
#pragma MP taskloop private(caflux_tmp,cl_index,ik_ach,i_Na,i_K1,i_to,vrow,carow,fnrow,di_ups,i_Kur,i_Kr,i_Ks,i_CaL,i_pCa,i_NaCa,i_rel,i_tr,di_ups,i_tr,ibcl,ctnacl,inf_qca,caflux,del,Ecl,iclca)*/

for ( i=ca->start; i<ca->end; i++ ) {

/* y[0][i]=v_josh;
y[1][i]=ca_josh;*/

vrow = vtab[(int)(y[0][i]*StepVm)];
carow = catab[(int)(y[1][i]*StepCa)];

//channel states nouveau
A=y[4][i]*y[4][i]*y[4][i]*y[5][i]*y[6][i];
Aprime=y[4][i]*y[4][i]*y[4][i]*y[19][i]*y[20][i];
//S=y[5][i]*y[6][i]-A;
S=y[5][i]*y[6][i]-(y[4][i]*y[4][i]*y[4][i]*y[5][i]*y[6][i]);
I=1.0-y[21][i]-y[5][i]*y[6][i];
//Sprime= y[19][i]*y[20][i]-Aprime;
Sprime= y[19][i]*y[20][i]-(y[4][i]*y[4][i]*y[4][i]*y[19][i]*y[20][i]);
Iprime=y[21][i]-y[19][i]*y[20][i];
Bdot=(ks*S+ka*A+ko*I)*Dg-(ls*Sprime+la*Aprime+lo*Iprime);

Merci pour l'aide
A voir également:

2 réponses

Ravachol Messages postés 566 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120
14 juil. 2004 à 17:45
Salut,
c'est du multi-thread j'imagine?

A++

La pensée ne commence qu'avec le doute.
ROGER MARTIN DU GARD
0
merci pour la reponse. Mais je me suis apercu que c'etait un probleme de parallelisation qu'apres avoir envoye le message.(c'est toujours un peu dur de reprendre un prog, non ecrit par soi meme)

Merci quand meme

Anne
0