x264/AviSynth - Multithreading

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • x264/AviSynth - Multithreading

    Anzeige
    Huhu!

    Ich hab mir nun nochmal extra die Tutorials von De-M-oN angesehen in der Hoffnung, dass er Multirheading erklärt, jedoch fand ich da nur die empfohlenen Einstellungen vor.

    Mein Spinnensinn sagt mir, dass mehr Threads ganz schön aufregend sein können.
    De-M-oN deutete an, dass mehr Threads vor allem bei mehreren Videoquellen von Hilfe sein können, da sich dann die maximale Speichergröße von 4 GB auf die Prozesse aufteilt.

    Ich kann allerdings mit den einzelnen Werten (Source/Trim, Mode/Dasandere) nichts verbinden.
    Gehe ich recht der Annahme, dass eine Verteilung auf mehrere Threads auch gut oder schlecht auf die Performance/Encodierzeit sein kann?

    Also beisielsweise mehr Threads = weniger Zeit.

    Wenn dem so ist, dann ist natürlich die Frage, in wiefern sich das dann aufteilt. Ich habe beispielsweise einen i7-4970K (4 logische Kernchen, 8 Threads).
    Sollten dann auch 8 Threads zum Encoding hergenommen werden oder soll man sich an die logischen Kerne richten?

    Hätte hierzu gerne eine Erklärung oder empfohlene Einstellung, FALLS es für CPUs auch unterschiedliche Richtwerte gibt. :)

    Ich suche noch Leute, die gerne Text- oder Videoreviews anfertigen und ambitionierte Let's Player für diese Seite.
    Interesse? Melde dich per PN! :)
  • Du meinst das Multithreading im SSM, oder?

    Die Spalte Position sagt dir an ab wann Multithreading im Skript aktiviert ist.
    Die Sourcen werden als erstes geladen, gefolgt von Trim, Tweak, Motion Blur und Blockbuster.

    Ist unter der letzten aktiverten Position (Haken bei Mode um es zu aktivieren) nix weiter aktiv, so fungiert die letzte aktive Position für alle Nachfolgenden.

    Der Mode beschreibt in wie fern das Multithreading anwendbar ist.
    So als Richtwert kannste nehmen:
    1 - Sehr schnell
    2 - Schnell
    3 - Mittelschnell
    ...

    Hier sollteste beachten das nicht alle Filter auf 1 oder 2 laufen.
    So funktioniert der Overlay Filter nicht sonderlich gern mit Mode 1 oder 2. Auch die Sourcen wollen nicht mit 1 oder 2 geladen werden, da der Filter so einen Modus gar nicht unterstützt. Resultat bei einer falschen Angabe würde z.B. sein: Flackern von Bildmaterial, Abstürze beim Encoden oder nicht laden der Videoquellen.

    Die Threadangabe kannst du nur einmal vergeben. Und zwars immer auf der ersten Position die du vergeben hast. Ich hab da mit 32 recht stark übertrieben, da kein Rechner soviele Threads hat. Hier kannste zwischen 2 - 6 wählen am besten.

    MemoryMax soll den Speicherverbrauch etwas regeln, da AVISynth ja nur eine 32Bit Anwendung ist und bei mehreren Quellen der Speicher doch recht schnell ansteigen kann.
    Wird nur eine Quelle immer im SSM verwendet oder generell im AVISynthscript, so musst du dies nicht zwangsläufig angeben.
    Bei mehr als 3 Quellen würde ich MemoryMax mal auf 512 stellen und aktivieren.

    Alle Angaben findeste dann auch im Skript.
    Hier mal ein Beispiel an allen Positionen:
    1. Videoquellen (Source) mit Threadangabe
    2. Schnitt (Trim)
    3. Aufpolieren (Tweak)
    4. Bewegungsunschärfe (Motion Blur)
    5. Blockbuster

    Und ganz oben kommt die MemoryMax Angabe. Also vor der ersten SetMTMode Aufruf.

    Quellcode

    1. ### Lade Plugins und setze die globalen Variablen ###
    2. LoadPlugin("D:\VB-Projekte\Batch VB\VB6\Plugins\blockbuster.dll")
    3. LoadPlugin("D:\VB-Projekte\Batch VB\VB6\Plugins\mvtools2.dll")
    4. Global breite = 1920
    5. Global hoehe = 720
    6. Global AR = 1
    7. ### Lade Videoquellen ###
    8. SetMemoryMax(512)
    9. SetMTMode(3,2)
    10. ### Filter Verarbeitungszone ###
    11. SetMTMode(2)
    12. last.Trim(354, 3535)
    13. SetMTMode(2)
    14. Tweak(0.0, 1.0, -24.2, 1.0, True)
    15. SetMTMode(2)
    16. sum = MSuper(pel = 2)
    17. MFlowBlur(sum, MAnalyse(sum, isb = true), MAnalyse(sum, isb = false), blur = 15.0)
    18. SetMTMode(2)
    19. Blockbuster("Blur", Block_size=4, Detail_min=75, Detail_max=100, Luma_offset=0, Luma_threshold=25, Strength=100)
    Alles anzeigen
  • MultiThreading in AviSynth ist nie wirklich stabil oder fertig Programmiert worden, ist ein Flickenteppich das ganze... AviSynth teilt je nach Modus die Frames auf (Frame1 = CPU1, Frame2 = CPU2, Frame3 = CPU1, Frame4 = CPU2...) oder teilt die Frames in Abschnitte (oben/unten, links/rechts) um jeden Abschnitt dann auf einer eigenen CPU zu kodieren, hinten kommt dann wieder ein komplettes Bild raus.

    Musst du ausprobieren indem du erst ohne Multithreading ein Testvideo encodest und dann mit Multithreading, ist letzteres schneller (und stürzt nicht ab) so würd' ich das nutzen.

    Meine AviSynth-Scripte laufen leider alle nicht im MT-Modus (egal welcher), die schmieren alle nach 50-5000 Frames ab (unberechenbar wann es passiert), liegt wohl an irgendeinem Filter den ich benutze der definitiv nichts mit Multicore anfangen kann.

    Trollwut schrieb:

    dass mehr Threads vor allem bei mehreren Videoquellen von Hilfe sein können, da sich dann die maximale Speichergröße von 4 GB auf die Prozesse aufteilt.

    Wenn das (32bit) Programm welches Avisynth aufruft "Large Address Aware" ist, kann AviSynth maximal 4GB RAM (auf 64bit Systemen, auf 32bit System nur 3GB) nutzen, mehrere Threads können sich dabei das RAM teilen. Ist das aufrufende Programm (da Avisynth nur eine DLL ist) nicht "LAA" so nutzt Avisynth maximal die möglichen 2GB RAM die ein 32bit-Programm per Default maximal nutzen darf.
    ——YouTube————————————————————————————————————————————
    — Endlos-Projekte: Minecraft (SinglePlayer), Craft The World, Banished, Besiege, Sims4
    — ..Abgeschlossen: Leisure Suit Larry 6+7, Dishonored, Surface 2+3, Mirrors Edge, uvm
    — . Kurz- Projekte: The Tower, Fighting Is Magic, Euro Truck Simulator 2, uvm
    — ......Retro-Ecke: Day Of The Tentacle, Flight Of The Amazon Queen, NFS: HP2, uvm
    ————————————————————————————————————————————TbMzockt.de—

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von TbMzockt ()

  • TbMzockt schrieb:

    MultiThreading in AviSynth ist nie wirklich stabil

    doch, problem ist halt das avisynth 32bit ist und man daher auf den RAM Verbrauch achten muss - 1920x1080 stellt da aber eig. kein Problem dar.. Bei 3200x1800 schon eher. Und man muss halt drauf achten das man die Modis passend zu den Filtern wählt.
    _
    was hier anscheinend nicht passiert ist:
    Meine AviSynth-Scripte laufen leider alle nicht im MT-Modus (egal welcher), die schmieren alle nach 50-5000 Frames ab (unberechenbar wann es passiert), liegt wohl an irgendeinem Filter den ich benutze der definitiv nichts mit Multicore anfangen kann.


    Falsche Modes, und evtl zu viel Threads drauf bei hoher Auflösung.

    Die Sourcen zb sollten als 3 eingelesen werden. 2 oder 1 wird garantiert crashen, sobald filter laufen.

    Zeitintensive Filter wie zb Motion Blur kann man auch so machen: Sourcen Mode 6, Threads 4, und der Filter dann Mode 2. Wäre schneller als sourcen mode 3, threads 2, da ja hier der filter die zeit frisst und nicht die sourcen. Kleineres als 3200x1800 verträgt gerne auch mehr threads.

    Aber wichtig ist wirklich das die mode kette stimmt zu den filtern. Sonst crasht es eben gerne mal. oder das MT arbeitet fehlerhaft.
    __
    max 4 GB RAM.
    Aktuelle Projekte/Videos


  • Anzeige
    Okay, ich beginne immer mehr durchzublicken. :D

    Durch Sagaras blicke ich nun durch wie ich es umsetze, durch De-M-oN versteh ich die Ränge der Prioritäten.

    Allerdings weiß ich nun immer noch nicht, was nun besser oder schlechter für mich ist.

    Also was genau nützt es mir denn, wenn ich MT nutze? Bekomme ich denn wirklich einen Geschwindigkeitsschub oder ist das lediglich Optimierung der Verarbeitung?

    Und so wie ich das lese kann man das dann weniger von der CPU her ableiten, sondern eigentlich nur von den Quellen. Seh ich das richtig?

    Ich suche noch Leute, die gerne Text- oder Videoreviews anfertigen und ambitionierte Let's Player für diese Seite.
    Interesse? Melde dich per PN! :)
  • Ah ok. :)
    Hab beispielsweise gestern 125 GB Aufnahme von Counter-Strike: Global Offensive (2560x1080p, 30 FPS, UTVideo-Codec) mit den MT-Empfehlungen aus deinem Tutorial genommen und in 3 Stunden war das durch. Fand ich schon fett. :D

    Aber dann nehme ich an gibt es nun für bestimmte Prozessoren/Kerne/Threads keine direkte Richtlinie, sondern man muss seine Präferenz selbst rausfinden?

    Ich suche noch Leute, die gerne Text- oder Videoreviews anfertigen und ambitionierte Let's Player für diese Seite.
    Interesse? Melde dich per PN! :)