Eine Compute Farm ist ein Datenparalleles Programmiermodell das wie folgt funktioniert:

  • Master - Wartet in Endlosschleife auf requests und erzeugt dynamisch Threads zu deren Verarbeitung
  • Worker - Verarbeitet Task durch Abarbeitung des vom Master spezifizierten Code(s)

Prinzip: Abhängigkeiten innerhalb der Worker minimieren

Beispiel

int main(int argc, char **argv) {
	for (;;) {
		get(&request); // blocking
		switch (request) {
			case X: pthread_create(... taskX); break;
			case Y: pthread_create(... taskY); break;
		}
	}
}
 
void *taskX(void *data) {
	// ...
}