Forum: PC Hard- und Software Empfehlung Mini-PC gesucht.


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Frank E. (Firma: Q3) (qualidat)


Bewertung
-1 lesenswert
nicht lesenswert
Für eine Ausstellung soll eine in Processing geschriebene App, welche 
ein Video und ein USB-Kamerabild mischt, per Beamer in HD als 
Endlos-Loop gezeigt werden.

Entwickelt habe ich das ganze auf einem I7-Macbook mit 8GB RAM und da 
läuft es noch etwas zu ruckelig. Ich schätze mal mit 8 Frames/s, 
wünschenswert wären so mindestens 16 Frames/s.

Am meisten Rechenzeit frisst ein Blur-Filter (Filter-Library), der die 
Bilddaten für die Kamera "glättet", bevor diese in reines SW gewandelt 
und mit dem Video gemischt werden. Also geht es mehr um die reine 
Prozessor-Power als um die Fähigkeiten der Grafikkarte. Ohne Blur läuft 
es auf dem Macbook zufriedenstellend.

Nun soll in der Ausstellung aber nicht mein Macbook stehen, sondern 
irgend ein bezahlbarer Mini-PC, so vom Kaliber Nuc oder Gigabyte Brick.

Processing fühlt sich zwar wie C++ (ähnl. Arduino) an, "Hinten" kommt 
aber Java raus - welche Prozessoren in gängigen Mini-PC wie Nuc oder 
Gigabyte können denn besonders gut mit Java? Nehme ich Windows oder 
besser Linux und welches?

Danke für Tips.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Frank E. schrieb:
> welche Prozessoren in gängigen Mini-PC wie Nuc oder Gigabyte können denn
> besonders gut mit Java?

Nichts davon. Wenn bereits Dein i7 "ruckelt", dann tut es alles, was in 
irgendwelchen langsameren(!) Mini-PCs steckt, erst recht.

von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Wenn selbst ein i7 nicht reicht, und es primär Prozessorlast ist, dann 
könnte man darüber nachdenken, die Job nicht dem dafür nur beschränkt 
geeigneten Prozessor aufzuhalsen, sondern dem von der Hardware her 
vielleicht wesentlich besser geeigneten Grafiksystem.

Man kann die Leistungsfähigkeit von Grafiksystemen längst auch für 
Aufgaben nutzen, die davon nicht direkt in Videos umgesetzt werden.

Verteilt sich die Software auf alle Threads des Prozessors, oder ist das 
ein Achter mit Rudermann, d.h. ein Core rudert und die andere sieben 
kommentieren die Leistung.

: Bearbeitet durch User
von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Frank E. schrieb:
> Nun soll in der Ausstellung aber nicht mein Macbook stehen, sondern
> irgend ein bezahlbarer Mini-PC, so vom Kaliber Nuc oder Gigabyte Brick.

Kannste knicken. Die sind nicht viel besser als Dein MAC, falls der 
nicht schon etliche Jahre alt ist. Hier wäre die genaue Bezeichnung der 
CPU interessant gewesen.

Signifikante CPU (Mehr-)Leistung gäbe es beim 9900K nur mit WaKü, denn 
der saugt bei Vollast ohne Drosselung >150W aus den 12V. Das geht aus 
thermischen Gründen nicht wirklich in kleinen Gehäusen.

Frank E. schrieb:
> Am meisten Rechenzeit frisst ein Blur-Filter (Filter-Library)

Den sollte besser die Grafik Hardware rechnen. Dann wäre eins der NUC 
mit Kaby Lake-G interessant, weil da eine halbwegs rechenstarke Vega GPU 
mit drin ist.

von Frank E. (Firma: Q3) (qualidat)


Bewertung
-2 lesenswert
nicht lesenswert
Das Problem wird sein, dass ich bei Processing nicht bestimmen kann, 
welcher Thread auf welcher CPU/GPU läuft.

von (prx) A. K. (prx)


Bewertung
1 lesenswert
nicht lesenswert
Frank E. schrieb:
> Das Problem wird sein, dass ich bei Processing nicht bestimmen kann,
> welcher Thread auf welcher CPU/GPU läuft.

Die GPU kann nur Aufgaben übernehmen, die speziell für sie geschrieben 
wurden. Ebenso muss die Aufteilung parallelisierbarer Aufgaben in 
parallele Thread vom Programm selbst vorgenommen werden.

Wenn die eingesetzte Software keine Aufteilung der Leistung auf viele 
Threads vorsieht, oder eine GPU einsetzen kann, dann solltest du warten, 
bis die Single Thread Performance entsprechend hoch ist. Was in 
absehbarer Zeit nicht der Fall sein wird, da sind keine grossen Sprünge 
mehr zu erwarten. Das wäre dann eine Aufgabe, die mit dem falschen 
Werkzeug angegangen wurde und mit diesem nicht adäquat lösbar ist.

: Bearbeitet durch User
von DPA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich würde das anders lösen:
 1) Video von UV4L per DMABUF exportieren: 
https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/vidioc-expbuf.html#vidioc-expbuf
 2) In einer OpenGL oder Vulkan Anwendung Importieren (geht nicht mit 
proprietären nvidia treibern). siehe EGL_EXT_image_dma_buf_import 
OES_EGL_image_external, etc.
 3) Mit GLSL fragment und compute shadern den Stream bearbeiten.

Das wäre aber linux spezifisch, recht komplex, wenig dazu online zu 
finden, und wie das mit dem Kernelsupport aussieht weiss ich nicht, ich 
habs noch nie ausprobiert. Dank zero copy sollte es aber schneller sein.

von Daniel A. (daniel-a)


Bewertung
0 lesenswert
nicht lesenswert
DPA schrieb:
> Video von UV4L per DMABUF exportieren

Ich hab da jetzt mal noch ein Minimalbeispiel gemacht, für all jene, die 
daran interessiert sind, wie sowas geht:
https://gitlab.com/DanielAbrecht/egl-gles2-linux-dmabuf-camera-texture-example
https://github.com/Daniel-Abrecht/egl-gles2-linux-dmabuf-camera-texture-example

Das ganze Initialisierungszeug kann schon aufwendig sein...

von Nano (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Frank E. schrieb:
> Am meisten Rechenzeit frisst ein Blur-Filter (Filter-Library), der die
> Bilddaten für die Kamera "glättet", bevor diese in reines SW gewandelt
> und mit dem Video gemischt werden. Also geht es mehr um die reine
> Prozessor-Power als um die Fähigkeiten der Grafikkarte. Ohne Blur läuft
> es auf dem Macbook zufriedenstellend.

Bezüglich dem Vorschlag die GPU zu verwenden schließe ich mich an.

Aber vielleicht kann man noch weiter optimieren:
Wenn die Bilddaten in Schwarz Weiß bzw. Graustufen vorliegen müssen 
(SW), was spräche dann dagegen eine Kamera zu verwenden, die direkt SW 
liefert?

Damit wäre die Datenmenge für einen nachfolgenden Blur-Effekt deutlich 
kleiner.

Oder anders gesagt, warum muss der Blur Effekt auf ein Video in Farbe 
angewendet werden, ehe das Video nach SW umgewandelt wird?

Bevor man da jetzt mit schierer Brute Force Leistung das Problem zu 
lösen versucht, wäre es doch erst einmal sinnvoll, zu überlegen, ob man 
die Datenmenge reduzieren kann.

Hierzu könnt man auch einen Blick auf das chrominance subsampling bzw. 
Farbunterabtastung werfen, bei dem im YUV Farbraum die Auflösung für die 
beiden Farbkanäle U und V reduziert wird, während die Helligkeit, die in 
der Y Komonente steckt, bei der vollen Auflösung bleibt.
Siehe dazu auch:
http://www.virtual-horst.de/Uni/Bildformate/Ausarbeitung.html#farbtiefe
https://de.wikipedia.org/wiki/Farbunterabtastung

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.