Gut, da ich ebenfalls Sephis Raetsel geloest hab (ich durfte nicht ins Forum sehen weil er schon die loesung gepostet hatte), ich einen Beweis durch vollstaendige Induktion dazu gelegt habe (wenn interesse besteht, poste ich ihn gerne) und es eine Freirunde ist, bin ich so frei, ein Raetsel zu stellen ...
Frage: Warum laeuft der folgende C Code bei echter Parallelisierung auf einem Zwei-Prozessor-System mit Shared Memory unterschiedlich schnell, je nachdem, wie die Schleife (z.B. vom Programmierer) auf die Prozessoren aufgeteilt wird ?
Tipp: Wenn Prozessor1 alle geraden Indizes und Prozessor2 die ungeraden Indizes bearbeitet anstatt Prozessor1 die Indizes von 0 bis SomeBigNum/2-1 und Prozessor2 von SomeBigNum/2 bis SomeBigNum-1 ist der Code um teilweise mehr als Faktor 10 langsamer.
Tipp 2: Das selbe Problem aus einer aehnlichen Ursache kann auch bei seriellem Single-Prozessor-Code auftreten, wenn man mit zweidimensionalen Arrays arbeitet und die beiden Schleifen-Indizes vertauscht.