• Re: [rech] script : Sous shell ?

    From Marc Chantreux@21:1/5 to philippe L on Thu Oct 31 09:50:02 2024
    salut,

    On Thu, Oct 31, 2024 at 08:42:21AM +0100, philippe L wrote:
    Et donc je me demande si c'est pas possible de faire des sous shell pour des commandes for if ?

    for et if ne sont des structures de controle et non des commandes.
    c'est devant le nom de commande que tu dois mettre nice.

    https://abs.traduc.org/abs-fr/ch21.html
    Y a t'il des exemples de scripts en production ?

    tu ne vas rien gagner à faire un nice sur un subshell qui fait juste un
    wait de la commande qui, elle, doit être reschedulée.

    sans voir le script c'est dur de donner des pistes d'amélioration mais
    j'aurais tendance à:

    * m'assurer que ffmpeg utilise ton gpu (gros gains possibles ici)
    * paralléliser ce qui est paralélisable et laisser le scheduler faire
    sans nice (et s'assurer avec une commande comme top ou btop que tous
    tes cpus sont à fond).
    * paralléliser efficacement nécessite souvent de transformer des
    for en xargs ou d'utiliser make plutôt que sh.

    bref: si tu nous montres ta prose on pourra te donner des idées.

    --
    Marc Chantreux
    Pôle CESAR (Calcul et services avancés à la recherche)
    Université de Strasbourg
    14 rue René Descartes,
    BP 80010, 67084 STRASBOURG CEDEX
    03.68.85.60.79

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From NoSpam@21:1/5 to All on Thu Oct 31 11:30:01 2024
    Le 31/10/2024 à 09:48, Marc Chantreux a écrit :
    salut,

    On Thu, Oct 31, 2024 at 08:42:21AM +0100, philippe L wrote:
    Et donc je me demande si c'est pas possible de faire des sous shell pour des >> commandes for if ?
    for et if ne sont des structures de controle et non des commandes.
    c'est devant le nom de commande que tu dois mettre nice.

    https://abs.traduc.org/abs-fr/ch21.html
    Y a t'il des exemples de scripts en production ?
    tu ne vas rien gagner à faire un nice sur un subshell qui fait juste un
    wait de la commande qui, elle, doit être reschedulée.

    sans voir le script c'est dur de donner des pistes d'amélioration mais j'aurais tendance à:

    * m'assurer que ffmpeg utilise ton gpu (gros gains possibles ici)
    +1 Afin d'arriver à cette fin, le dongle USB Coral Edge est parfait
    [....]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marc Chantreux@21:1/5 to philippe L on Thu Oct 31 21:40:01 2024
    salut,

    On Thu, Oct 31, 2024 at 07:55:38PM +0100, philippe L wrote:

    for f in *.MP4
    do ./ffmpeg -i "$f" -r 25 "$f"-%0d.png
    done

    tu peux paralleliser en faisant

    ls | grep '\?MP4$' | xargs -d'\n' -IX -P4 ./ffmpeg -i X -r 25 X-%0d.png

    -P4 veut dire "4 videos à la fois"

    Pense qu'il y a 250 fichiers MP4 et que chacun a une moyenne de 30 000 images !

    si tu n'as pas plus de fichiers, cette version fait l'affaire:

    ls *.MP4 | xargs -d'\n' -IX -P4 ./ffmpeg -i X -r 25 X-%0d.png

    l'université de Strasbourg a acheté un centre de "minage" ?

    quoi ? non … on a une ferme de calcul avec de gros GPUs en effet mais
    même le GPU qu'on trouve sur les PCs standards sont bien plus capables
    pour ce genre de boulots que tes CPUs.

    --
    Marc Chantreux
    Pôle CESAR (Calcul et services avancés à la recherche)
    Université de Strasbourg
    14 rue René Descartes,
    BP 80010, 67084 STRASBOURG CEDEX
    03.68.85.60.79

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marc Chantreux@21:1/5 to All on Thu Oct 31 21:40:01 2024
    ls | grep '\?MP4$' | xargs -d'\n' -IX -P4 ./ffmpeg -i X -r 25 X-%0d.png

    pardon pour la typo. grep '\.MP4$'



    --
    Marc Chantreux
    Pôle CESAR (Calcul et services avancés à la recherche)
    Université de Strasbourg
    14 rue René Descartes,
    BP 80010, 67084 STRASBOURG CEDEX
    03.68.85.60.79

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marc Chantreux@21:1/5 to philippe L on Fri Nov 1 13:20:01 2024
    On Fri, Nov 01, 2024 at 11:59:49AM +0100, philippe L wrote:
    find (of love ?) à la place de liste (ls) ?

    peu importe. l'important par contre c'est de ne pas laisser
    le shell expand le pattern *.MP4: c'est fragile.

    find . -maxdepth 1 -name '*.MP4' -print0 | xargs -0P4 -IX echo X X

    ls et find envoyent la liste des fichiers dans le stream sans
    avoir a collecter la liste complete donc ta liste de fichiers
    est a la fois streamée plus rapidement et ne risque pas d'attendre la
    limite de taille des arguments.

    --
    Marc Chantreux
    Pôle CESAR (Calcul et services avancés à la recherche)
    Université de Strasbourg
    14 rue René Descartes,
    BP 80010, 67084 STRASBOURG CEDEX
    03.68.85.60.79

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)