Problem mit Altes-hauptgebaeude.pgm

Thomas Huxhorn
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 6. Okt 2011 15:25

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von Thomas Huxhorn »

@Ronny Ok.

@mw1039
Naja der braucht für die Berechnung nur ein paar Sekunden. Es ist aber tatsächlich das %d mit printf. Der Compiler gibt sogar ein Warning.

mw1039
Computerversteher
Computerversteher
Beiträge: 346
Registriert: 12. Apr 2011 12:18

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von mw1039 »

Ein paar Sekunden reichen u.U. schon aus, um 2 Mrd. Ticks zu ueberschreiten. 2GHz waeren genau diese 2 Mrd. Ticks. Aber wie gesagt, die Laufzeit des C-Teils ist nicht so wichtig, sondern hoechstens fuer den Vergleich zu SSE interessant.

Locke
Neuling
Neuling
Beiträge: 8
Registriert: 26. Mai 2010 16:00
Wohnort: Rodgau

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von Locke »

Hallo,

wir hatten das Probem, dass anch Änderungen in unserem C-Teil es beim speichern er Bilder ebenfalls zu einem Segfault kam; jedoch nur beim altem Hauptgebäuse, die anderen beiden Bilder liefen ohne Probleme.

Die Ausgabe sah so aus:

Code: Alles auswählen

./Praktikum2 ../../img/Altes-hauptgebaeude.pgm
Ticks needed for the unoptimized C-Implementation 832852628
Ticks needed for the optimized SSE-Implementation 11243051
Segmentation fault
Es hat sich rausgestellt, dass wir eine Schleife quasi zu oft durchlaufen haben. Jetzt laufen wieder alle Bilder normal.

Zu dem anderen Thema: Mir ist auf dem clientssh* auch aufgefallen, dass manchmal die Zeiten negativ werden. Ebenfalls bekomme ich bei 'make' folgende Warnings:

Code: Alles auswählen

make[2]: Warning: File `CMakeFiles/Praktikum2.dir/depend.make' has modification time 54 s in the future
Ich denke, dass das einfach an der Auslastung des Servers liegt, und/oder an der Art wie die Festplaten ins fs eingebunden werden.

Thomas Huxhorn
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 6. Okt 2011 15:25

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von Thomas Huxhorn »

Weder noch?!

Die Uhrzeit deines lokalen Rechners geht einfach vor, so dass der Zeitstempel der Datei auf clientssh* dann in der Zukunft liegt.

Wie lange läuft denn dein Programm, wenn die gemessenen Zeiten negativ werden?

mw1039
Computerversteher
Computerversteher
Beiträge: 346
Registriert: 12. Apr 2011 12:18

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von mw1039 »

Das mit der Warning von make ist ein guter Punkt: Das ist tatsaechlich ein Issue des Filesystems. Generell koennt ihr diese Warnung ignorieren, aber noch sicherer ist es, wenn ihr vor jedem make einmal make clean ausfuehrt. Also immer

Code: Alles auswählen

make clean && make && ./Praktikum2 Bild.pgm
Es kann passieren, dass make, wenn man das make clean weglaesst, nicht merkt, dass ihr gewisse Files veraendert habt und sie nicht nochmal neu kompiliert.
mw1039 hat geschrieben:Ich denke, dass das einfach an der Auslastung des Servers liegt,...
Ich weiss nicht, ob ich die Aussage richtig verstehe, aber zumindest die Zahl der Ticks sollte nicht von der Auslastung abhaengen. Ich glaube die Tickzahl wird rein nur aus der Zahl der Takte, die dein Programm tatsaechlich auf der CPU bekommen hat, berechnet.
Das negative-Tick-Problem sollte sich wie gesagt durch %llu in der Tickausgabe mit printf beheben lassen.

elgubbo
Erstie
Erstie
Beiträge: 21
Registriert: 28. Okt 2011 19:40

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von elgubbo »

mw1039 hat geschrieben:Ich glaube die Tickzahl wird rein nur aus der Zahl der Takte, die dein Programm tatsaechlich auf der CPU bekommen hat, berechnet.
Dazu habe ich direkt eine Frage: wie kommt es, dass der selbe Code mit dem selbem *.pgm mal mehr, mal weniger "Ticks" benötigt?
Das ist mir irgendwie nicht ganz klar, da ich dachte gleiche Ausgangsdatei -> gleiche Berechnungen -> gleiche Anzahl Takte.

mw1039
Computerversteher
Computerversteher
Beiträge: 346
Registriert: 12. Apr 2011 12:18

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von mw1039 »

Naja, die Zahl der Takte, die benoetigt werden, haengt von sehr vielen Faktoren ab. Heute in der Vorlesung kamen ja z.B.Caches dran. Wenn das Programm ein zweites Mal ausgefuehrt wird, kann es sein, dass andere Daten aus anderen Programmen im Cache liegen und Daten deines Programms deswegen aus einer anderen Cacheebene oder gar aus dem RAM geholt werden muessen. All das verbraucht zusaetzliche Zyklen.

Thomas Huxhorn
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 6. Okt 2011 15:25

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von Thomas Huxhorn »

Zur Zeitmessung wird der ASM Befehl RDTSC benutzt. "RDTSC liest den aktuellen Wert des time-stamp counters". Also eine Zeit, und nicht wie oft die Clock Leitung die Flanke wechselt.

Wegen Cache. Du kannst ja einfach mal den Cache mit Müll füllen und dann das Programm ausführen. Und dann mal ohne Müll die Zeit messen. Cache füllen ist ganz einfach. Einfach ein paar MB Speicher holen und mit arbeiten. Einfach addieren oder so. Dann sollten keine früheren Daten mehr im Cache liegen die das Ergebnis verfälschen..

elgubbo
Erstie
Erstie
Beiträge: 21
Registriert: 28. Okt 2011 19:40

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von elgubbo »

Thomas Huxhorn hat geschrieben:Zur Zeitmessung wird der ASM Befehl RDTSC benutzt. "RDTSC liest den aktuellen Wert des time-stamp counters". Also eine Zeit, und nicht wie oft die Clock Leitung die Flanke wechselt.

Wegen Cache. Du kannst ja einfach mal den Cache mit Müll füllen und dann das Programm ausführen. Und dann mal ohne Müll die Zeit messen. Cache füllen ist ganz einfach. Einfach ein paar MB Speicher holen und mit arbeiten. Einfach addieren oder so. Dann sollten keine früheren Daten mehr im Cache liegen die das Ergebnis verfälschen..
danke dafür, erklärt auch warum sich der Wert nach ein paar Durchläufen einpendelt.
mw1039 hat geschrieben:Naja, die Zahl der Takte, die benoetigt werden, haengt von sehr vielen Faktoren ab. Heute in der Vorlesung kamen ja z.B.Caches dran. Wenn das Programm ein zweites Mal ausgefuehrt wird, kann es sein, dass andere Daten aus anderen Programmen im Cache liegen und Daten deines Programms deswegen aus einer anderen Cacheebene oder gar aus dem RAM geholt werden muessen. All das verbraucht zusaetzliche Zyklen.
So weit hatte ich vorhin garnicht gedacht! Macht natürlich sinn. Danke für die Antworten!

ThorbenKo
Windoof-User
Windoof-User
Beiträge: 25
Registriert: 7. Nov 2011 19:16

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von ThorbenKo »

Ich hab auch ein probleme mit dem Bild.

Ich habe die Methode mit transponieren implementiert. Ich kann aber kein Array anlegen, mit der Größe Breite*Höhe.

Habs genau verfolgt daran liegt es. Wenn man direkt programiert (also ohne Transponieren) kann man ohne hilfsarrays auskommen, dass ist mir bewusst, aber wenn man transponiert braucht man ein array :(

Also

src * filter1 => dst

dst *filter2 => IX

src * filter2 => dst

dst * filter1 => src

dst = euklidische Norm (IX, src)

Ich weiß leider nicht wiei ch dieses hilfsarray IX weg bekommen soll.

Und das wäre nun echt sehr ärgerlich wenn ich nun noch mal ohne transponieren alles neu machen müsste :(

Ich hoffe jemand sieht eine Lösung :)

PS: sich speicher mit new zu holen geht auch nicht (diesen "Triick" nutze ich im C Teil, aber im SSE teil schmiert er dann ab)

LG

ThorbenKo
Windoof-User
Windoof-User
Beiträge: 25
Registriert: 7. Nov 2011 19:16

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von ThorbenKo »

gelöst. Speicher per new gehollt, hilfsarray mit 4 floats, da von asm erg eintragen lassen und dann auf IX schaufeln.

Wirklich nicht schön, aber ich hab gerade keine bessere idee :)

downsampling
Mausschubser
Mausschubser
Beiträge: 95
Registriert: 28. Mär 2011 22:58

Re: Problem mit Altes-hauptgebaeude.pgm

Beitrag von downsampling »

radix89 hat geschrieben:Hab den Fehler gefunden...

@studypad:
Bei mir lag es daran, dass in asm die Schleife für jeden Filter zu oft lief. Keine ahnung, warum es dann bei apples und hachiko funktioniert hatte...

War bei mir auch der Fehler, dass ich nicht beachten habe in der Höhe 2 abzuziehen. Bei einem so großen Bild wie Altes Hauptgebäude macht es es von den Schleifendurchläufen daher schon einen großen Unterschied.

Antworten

Zurück zu „Archiv“