Mandelbrot
Verfasst: Mo 24. Jul 2017, 07:07
Hallo Chefprogrammierer,
ich versuche, das Apfelmännchen von yeti und drohne235 (siehe https://hive-project.de/board/viewtopic.php?f=10&t=1072) zu parallelisieren. Das Programm liegt im Anhang, bitte mal ausprobieren.
Ich scheitere an der Stelle, wo die Cogs abwechselnd auf den Bus zugreifen sollen. Entweder klappt der Sperrmechanismus mit lkBus nicht oder die Cogs hinterlassen doch noch irgendwelche Pegel auf dem Bus. Das "dira := 0" in drawPixel sollte eigentlich den Cog vom Bus nehmen. Man kann das Elend sehen, wenn man die Zeile "ifnot is_slave" in drawPixel auskommentiert.
Mit der Konstante MAX_PARALLEL steuert man die Anzahl gestarteter Cogs. Bei 1 oder 0 wird kein "Slave-"Cog gestartet, und das Programm läuft fehlerfrei durch.
Notfalls könnte ich den Haupt-Cog zum Busmaster erklären. Alle Worker würden dann ihre drawPixel-Anforderungen über Shared Memory übergeben, und nur der Busmaster benutzt die ios.g0*-Funktionen. Aber dann käme ich nur auf eine Parallelität von 7 und wüsste immer noch nicht, wie sich mehrere Cogs den Bus teilen.
Irgendwelche konstruktiven Vorschläge?
Grüße
ich versuche, das Apfelmännchen von yeti und drohne235 (siehe https://hive-project.de/board/viewtopic.php?f=10&t=1072) zu parallelisieren. Das Programm liegt im Anhang, bitte mal ausprobieren.
Ich scheitere an der Stelle, wo die Cogs abwechselnd auf den Bus zugreifen sollen. Entweder klappt der Sperrmechanismus mit lkBus nicht oder die Cogs hinterlassen doch noch irgendwelche Pegel auf dem Bus. Das "dira := 0" in drawPixel sollte eigentlich den Cog vom Bus nehmen. Man kann das Elend sehen, wenn man die Zeile "ifnot is_slave" in drawPixel auskommentiert.
Mit der Konstante MAX_PARALLEL steuert man die Anzahl gestarteter Cogs. Bei 1 oder 0 wird kein "Slave-"Cog gestartet, und das Programm läuft fehlerfrei durch.
Notfalls könnte ich den Haupt-Cog zum Busmaster erklären. Alle Worker würden dann ihre drawPixel-Anforderungen über Shared Memory übergeben, und nur der Busmaster benutzt die ios.g0*-Funktionen. Aber dann käme ich nur auf eine Parallelität von 7 und wüsste immer noch nicht, wie sich mehrere Cogs den Bus teilen.
Irgendwelche konstruktiven Vorschläge?
Grüße