Voor een project op school ben ik bezig een programma te schrijven dat een gecodeerde duitse tekst kan decoderen. Omdat dit nogal veel rekenkracht vergt mogen wij dit ons programma draaien op de Unite van het SARA in Amsterdam, maar de Unite is een multi-processor systeem (128 processoren) dus moeten wij ons programma multithreaded maken. Zo gezegd, zo gedaan, ik heb een hoofdprogramma gemaakt, wat 56 andere processen opstart en daarna wacht totdat alle opgestarte processen klaar zijn. Het stukje code wat ik gebruik om de threads op te starten:
Nu mijn probleem: Als ik mijn programma draai op een linuxbak en ik kijk daarna met ps hoeveel processen mijn programma heeft opgestart, dan zie ik er 58 ipv 57. Er zijn 2 processen ipv 1 die aan wachten zijn (status S in ps) en er zijn er 56 die aan het rekenen zijn (status S in ps). Helaas kan ik nu de output van ps niet posten omdat de linuxbak waarvan ik gebruik maak momenteel niet aanstaat. Weet iemand hoe dit kan?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| for (n=0; n<8; n++)
{
for (j=0; j<8; j++)
{
if (j==n)
continue;
results[hulp].rotor1num = n;
results[hulp].rotor2num = j;
results[hulp].MaxIC = 0;
pthread_create(&threadID[hulp],NULL,parallel,&results[hulp]);
hulp++;
}
} |
Nu mijn probleem: Als ik mijn programma draai op een linuxbak en ik kijk daarna met ps hoeveel processen mijn programma heeft opgestart, dan zie ik er 58 ipv 57. Er zijn 2 processen ipv 1 die aan wachten zijn (status S in ps) en er zijn er 56 die aan het rekenen zijn (status S in ps). Helaas kan ik nu de output van ps niet posten omdat de linuxbak waarvan ik gebruik maak momenteel niet aanstaat. Weet iemand hoe dit kan?