Kann jemand einen einfachen Bildbetrachter empfehlen?

  • Mein Chef hat mich gebeten, einen billigen Mediaplayer für ein paar Sachen bei der Arbeit zu suchen. Das hat mich dazu inspiriert, mit einem Raspberry Pi selbst etwas zu bauen.

    Mein Plan ist die Verwendung von udev-rules, um die USB- / SD-Karte zu erkennen, und dann einen Bildbetrachter zu starten, um die Bilder auf dem Medium im Vollbildmodus anzuzeigen. Ich überlege mir, ein Python-Skript zu verwenden, um den eigentlichen Bildbetrachter zu starten und die Dinge aufgeräumt zu halten.

    Nun suche ich nach einem Bildbetrachter, der kompakt ist und läuft ARM / RPi und kann so eingestellt werden, dass das Bild mit einem Mausklick im Vollbildmodus geändert wird.

    Ein Plus wäre, die Maustasten so zu verwenden, dass Linksklick = nächstes Bild, Rechtsklick = vorheriges Bild.

    02 August 2012
    svrist
8 answers
  • Das zentrale Problem ist die Länge des kritischen Pfads $ C $ relativ zum Gesamtbetrag der Berechnung $ T $. Wenn $ C $ proportional zu $ ​​T $ ist, bietet die Parallelität bestenfalls eine konstante Beschleunigung. Wenn $ C $ asymptotisch kleiner als $ T $ ist, gibt es Raum für mehr Parallelität, wenn die Problemgröße zunimmt. Für Algorithmen, bei denen $ T $ ein Polynom in der Eingangsgröße $ N $ ist, ist der beste Fall $ C \ sim \ log T $, da nur sehr wenige nützliche Mengen in weniger als der logarithmischen Zeit berechnet werden können.

    Beispiele

    • $ C = T $ für ein tridiagonales Lösen mit dem Standardalgorithmus. Jede Operation ist vom Abschluss der vorherigen Operation abhängig, sodass keine Möglichkeit für Parallelität besteht. Tridiagonal-Probleme können in logarithmischer Zeit auf einem Parallelcomputer unter Verwendung einer geschachtelten Disseection-Direktauflösung, einer mehrstufigen Domänenzerlegung oder von Mehrfachraster mit Basisfunktionen gelöst werden, die unter Verwendung der Oberwellenerweiterung konstruiert wurden (diese drei Algorithmen unterscheiden sich in mehreren Dimensionen, können aber in 1D genau übereinstimmen).
    • Eine dichte untere dreieckige Lösung mit einer $ m \ times m $ -Matrix hat $ T = N = \ mathcal O (m ^ 2) $, aber der kritische Pfad ist nur $ C = m = \ sqrt T $, daher kann ein gewisser Parallelismus von Vorteil sein.
    • Sowohl Multigrid als auch FMM haben $ T = N $ mit einem kritischen Pfad der Länge $ C = \ log T $. < / li>
    • Explizite Wellenausbreitung für eine Zeit $ \ tau $ auf einem regulären Mesh der Domäne $ (0,1) ^ d $ erfordert $ k = \ tau / \ Delta t \ sim \ tau N ^ {1 / d} $ Zeitschritte (für Stabilität), daher ist der kritische Pfad mindestens $ C = k $. Die Gesamtarbeit beträgt $ T = k N = \ tau N ^ {(d + 1) / d} $. Die maximal nutzbare Anzahl von Prozessoren ist $ P = T / C = N $, der verbleibende Faktor $ N ^ {1 / d} $ kann nicht durch erhöhte Parallelität wiederhergestellt werden.

    Formale Komplexität

    Die NC-Komplexitätsklasse kennzeichnet die Probleme, die effizient parallel (dh in polylogarithmischer Zeit) gelöst werden können. Es ist nicht bekannt, ob $ NC = P $ ist, aber es ist

    03 March 2013
    Jesse Ezell
  • Es gibt einen sehr einfachen Bildbetrachter namens feh.

    Es kann in Debian installiert werden:

     apt-get install feh
     

    Oder Bogen:

     pacman -S feh
     

    Es ist eine vollständige cli-Anwendung und akzeptiert eine Vielzahl von Argumenten, die Sie durch Eingabe von

     feh --help
     

    sehen können Sie können beispielsweise schnell Bilder in einem bestimmten Verzeichnis wie dem folgenden durchsuchen:

     feh -g 640x480 -d -S filename /path/to/directory
     
    • Das Flag -g bewirkt, dass die Bilder nicht größer als 640x480 angezeigt werden.
    • Das -S-Dateinamenflag sortiert die Bilder nach Dateinamen

    Linke und rechte Pfeiltasten oder Mausklicks navigieren durch die Bilder.

    01 August 2012
    Kevin
  • Um dem einen theoretischen Aspekt zu verleihen, wird $ NC $ als Komplexität definiert Klasse, die in $ O (log ^ cn) $ time auf einem System mit $ O (n ^ k) $ Parallelprozessoren lösbar ist. Es ist immer noch nicht bekannt, ob $ P = NC $ ist (obwohl die meisten Leute vermuten, dass dies nicht der Fall ist), wobei $ P $ die Menge von Problemen ist, die in der Polynomialzeit lösbar sind. Die "schwierigsten" Probleme, die man parallelisieren kann, werden als $ P $ -komplette Probleme bezeichnet, in dem Sinn, dass jedes Problem in $ P $ durch $ NC $ -Reduktionen auf ein $ P $ -komplette Problem reduziert werden kann. Wenn Sie zeigen, dass ein einzelnes $ P $ - abgeschlossenes Problem in $ NC $ liegt, beweisen Sie, dass $ P = NC $ ist (obwohl dies wahrscheinlich, wie oben erwähnt, falsch ist).

    Also Jedes Problem, das $ P $ -komplett ist, ist intuitiv schwer zu parallelisieren (obwohl große Beschleunigungen immer noch möglich sind). Ein $ P $ - komplettes Problem, für das wir nicht einmal sehr gute Beschleunigungen mit konstantem Faktor haben, ist die lineare Programmierung (siehe dieser Kommentar zum ODER-Austausch).

    25 February 2012
    Andrew Russell
  • Beginnen Sie, indem Sie Amdahls Gesetz grocking. Grundsätzlich wird alles mit einer großen Anzahl von Serienschritten von der Parallelität unbedeutend profitieren. Einige Beispiele sind das Analysieren, der Regex und die Komprimierung mit dem höchsten Verhältnis.

    Abgesehen davon ist das Hauptproblem oft ein Engpass in der Speicherbandbreite. Insbesondere bei den meisten GPUs übertreffen Ihre theoretischen Flops die Anzahl der Fließkommazahlen, die Sie für Ihre ALUs erreichen können, bei weitem, da Algorithmen mit niedriger arithmetischer Intensität (Flops / Cache-Miss) die meiste Zeit auf den Arbeitsspeicher warten.

    Schließlich ist es unwahrscheinlich, dass ein Teil des Codes eine Verzweigung erfordert, und es ist unwahrscheinlich, dass eine gute Leistung erzielt wird, da die ALU-Logik normalerweise überlegen ist.

    Zusammenfassend lässt sich sagen, dass ein wirklich einfaches Beispiel, bei dem ein Geschwindigkeitszuwachs von einer GPU schwer zu erreichen wäre, die Anzahl der Nullen in einem Array von Ganzzahlen zählt, wie Sie möchten müssen häufig verzweigen, höchstens eine Operation (inkrementieren um eins) für den Fall, dass Sie eine Null finden, und mindestens einen Speicherabruf pro Operation durchführen.

    Ein Beispiel ist frei des Verzweigungsproblems besteht darin, einen Vektor zu berechnen, der die kumulative Summe eines anderen Vektors ist. ([1,2,1] - & gt; [1,3,4])

    Ich weiß nicht, ob diese als "berühmt" gelten, aber es gibt sicherlich eine große Zahl Anzahl der Probleme, bei denen Parallel-Computing Ihnen nicht weiterhilft.

    25 February 2012
    Dima
  • Die (berühmte) Methode des schnellen Marschierens zur Lösung der Eikonal-Gleichung kann durch Parallelisierung nicht beschleunigt werden. Es gibt andere Methoden (z. B. schnelle Sweeping-Methoden) zum Lösen der Eikonal-Gleichung, die für die Parallelisierung besser geeignet sind, aber selbst hier ist das Potenzial für eine (parallele) Beschleunigung begrenzt.

    Problem mit der Eikonal-Gleichung ist, dass der Informationsfluss von der Lösung selbst abhängt. Die Informationen fließen locker entlang der Eigenschaften (d. H. Lichtstrahlen in der Optik), aber die Eigenschaften hängen von der Lösung selbst ab. Der Informationsfluss für die diskretisierte Eikonal-Gleichung ist sogar noch schlimmer, da zusätzliche Annäherungen erforderlich sind (z. B. implizit bei schnellen Sweep-Verfahren), wenn eine parallele Beschleunigung erwünscht ist Stellen Sie sich zur Parallelisierung ein schönes Labyrinth vor, wie in einigen der Beispiele auf der Sethian-Webseite . Die Anzahl der Zellen auf dem kürzesten Weg durch das Labyrinth (wahrscheinlich) ist eine Untergrenze für die minimale Anzahl von Schritten / Iterationen eines (parallelen) Algorithmus, der das entsprechende Problem löst.

    (Ich schreibe "(wahrscheinlich) ist", weil untere Grenzen notorisch schwer zu beweisen sind und oft vernünftige Annahmen über die von einem Algorithmus verwendeten Operationen erfordern.)

    26 February 2012
    Stephen Cox
  • Ich glaube nicht, dass Sie etwas einfacher als xloadimage bekommen können : Dies ist ein Werkzeug, das viele Desktop-Manager verwenden, um das Hintergrundbild anzuzeigen, und es kann Bilder in einem neuen Fenster, im Vollbildmodus anzeigen oder sogar ein Bild in ein vorhandenes Fenster laden. Zum Ausführen des X-Servers ist jedoch Folgendes erforderlich: feh.

    Wenn Sie einen Viewer benötigen, der ohne X funktioniert, schlage ich vor, zgv Hier werden Bilder direkt auf einem Framebuffer-Gerät angezeigt. Leider hat Raspbian es nicht verpackt, deshalb müssen Sie es aus Quellen erstellen. Beachten Sie, dass es eine X-Version von zgv mit dem Namen xzgv gibt, die Sie mit apt-get installieren können.

    16 January 2017
    Dmitry Grigoryev
  • Eine andere Klasse von Problemen, die in der Praxis schwer zu parallelisieren sind, sind Rundungsfehler, bei denen numerische Stabilität durch Serialisierung erreicht wird.

    Betrachten Sie beispielsweise < a href = "https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process#Numerical_stability" rel = "nofollow noreferrer"> Gram-Schmidt-Prozess und seine Serienänderung. Der Algorithmus arbeitet mit Vektoren, daher können Sie parallele Vektoroperationen verwenden, dies ist jedoch nicht gut skalierbar. Wenn die Anzahl der Vektoren groß und die Vektorgröße klein ist, ist die Verwendung der parallelen klassischen Gram-Schmidt-Methode und der Reorthogonalisierung möglicherweise stabiler und schneller als bei einem einfach modifizierten Gram-Schmidt-Verfahren, obwohl mehrere Male mehr Arbeit erforderlich ist.

    27 May 2017
    Nishad TR
  • Möglicherweise interessieren Sie sich auch für Mirage .

    sudo apt-get install mirage

    Es bietet mehr Funktionen als feh und xloadimage in den anderen Antworten, aber es ist auch leicht (leichter als sagen Sie eog). . Dies hängt jedoch von GTK ab und ist daher nicht sicher, ob es für Ihren Anwendungsfall gilt.

    So laden Sie ein Bild im Vollbildmodus:

    mirage -f yourimage.jpg

    Um alle Bilder in einem bestimmten Verzeichnis im Vollbildmodus zu öffnen:

    mirage -fs path/to/yourimages/

    Siehe die Dokumentation und diese blog post für mehr.

    12 December 2017
    calocedrus