PDA

Visualizza la versione completa : Bitonic Sort & C


peppej89
03-06-2013, 18:37
Salve a tutti
sto sviluppando un algoritmo parallelo (utilizzando MPI) di ordinamento, il bitonic sort. Ho trovato un codice scritto in c su internet e sto cercando di capirlo. Ho trovato questa istruzione e non riesco a capire il significato. Potreste illuminarmi voi? :D



if (((id & i) == 0 && id > partner)) mi interessa sapere il significato dell'operatore bit a bit "&". Cioe' so come funziona ma non riesco a capire il senso in questo if...

Grazie a tutti

Cordiali saluti

oregon
03-06-2013, 18:43
Esegue l'and bit a bit tra id e i e se 0 ...

Cosa non capisci?

peppej89
03-06-2013, 18:45
si capito.. ma a livello logico che significato ha?
Dice tipo se il risultato pari o dispari o cosa?

oregon
03-06-2013, 18:47
Non dice nulla se non si sa il valore di i ...

In generale testa il valore di uno o pi bit e se questi sono tutti a zero ...

Se i vale 1, allora controlla se id pari o dispari (in questo caso controlla se pari)

peppej89
03-06-2013, 18:49
i si trova in un for...

oregon
03-06-2013, 18:50
Originariamente inviato da peppej89
i si trova in un for...

Che vuol dire?

E id quanto vale?

peppej89
03-06-2013, 18:53
l'id sarebbe l'id dei processi.. xke sto utilizzando MPI per calcolo parallelo.. Tutto il codice che sto cercando di capire qst:

passiLog=0;

for (i = 2; i <= num_processori; i *= 2) {
passiLog++;
distanzaProcessi = i/2;

for (j = 0; j < passiLog; j++)
{
partner = id ^ distanzaProcessi; // OR ESCLUSIVO BIT A BIT

MPI_Sendrecv(myVettore, porzione, MPI_INT, partner, 100,
vettorePartner, porzione, MPI_INT, partner, 100, MPI_COMM_WORLD, &status);
if (((id & i) == 0 && id > partner) || ((id & i) != 0 && id < partner)) // AND BIT A BIT
co_ex=1; // CO-EX-HI
else
co_ex=0; // CO-EX-LO


merge(porzione,myVettore,vettorePartner,co_ex);

distanzaProcessi = distanzaProcessi/2;

}
}

oregon
03-06-2013, 18:55
Cosa rappresenta co_ex ?

peppej89
03-06-2013, 18:57
quella una variabile diciamo "booleana" che mi serve avanti per l'algoritmo bitonic

oregon
03-06-2013, 18:58
S, una variabile che ti serve, ma non ti avevo chiesto se ti serve ...

Loading