#define lexSize 64 //rozmiar słownika musi być potęgą liczby 2!!!!
#define lexSize 64 //rozmiar słownika musi być potęgą liczby 2!!!!
#define maxStrSize 10 //maskymalny rozmiar szukanego hasła, nie moze być wiekszy niz 10!!
#define maxStrSize 10 //maskymalny rozmiar szukanego hasła, nie moze być wiekszy niz 10!!
#define minStrSize 3//minimalny rozmiar szukanego hasła od 1 do maxStrSize
#define minStrSize 2//minimalny rozmiar szukanego hasła od 1 do maxStrSize
#define offset 6 //ile bitów potrzeba do zapisania liczby lexSize-1 np lexSize=4 to wtedy offset = 2;
#define offset 6 //ile bitów potrzeba do zapisania liczby lexSize-1 np lexSize=4 to wtedy offset = 2;
#define mask 0x3f //np dla maxKomb zapisanego na 64bitach to jest 58 zer i 6 (czyli offset) jedynek: 0000000 0000000 0000000 0000000 0000000 0000000 0000000 00111111
#define mask 0x3f //np dla maxKomb zapisanego na 64bitach to jest 58 zer i 6 (czyli offset) jedynek: 0000000 0000000 0000000 0000000 0000000 0000000 0000000 00111111
MPI_Abort(MPI_COMM_WORLD,-1);//kończe wszystkie watki; działa ale to mało elegancka metoda
}
}
MPI_Allreduce(&success,&sumSuccess,1,MPI::SHORT,MPI::BAND,MPI_COMM_WORLD);//robię bitowe AND na zmiennej 'success'. wyjdzie 0 gdy 'success' z któregokolwiek procesu jest równy 0
if(!sumSuccess)gotostop;//sumSuccess = 0 wiec ten proces się kończy.
i+=size;
i+=size;
}
}
}
}
stop:
if(!rank){
longtime=czasomierzacz.End();
cout<<" Czas = "<<time<<" ms"<<endl<<endl;
}
delete[]result;//gdy bedzie wywołane MPI_Abort to i tak to nie zdziała, no ale jest...