parallel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Distributing work to local and remote computers


From: Eric Geoffroy
Subject: Distributing work to local and remote computers
Date: Mon, 17 Apr 2017 14:09:59 -0700

I had a working command until I ran into files whose paths exceeded the maximum for the shell (or socket).

This works unless the paths exceed the max- 

cat '/Volumes/Cinera/SBO- Video/Python Videos/videofile_paths.txt' | parallel -q -S :,8/eric@serverA,8/eric@ServerB/eric@ServerC ffmpeg -i {} -vcodec libvpx -qmin 4 -qmax 10 -crf 6 -acodec libvorbis '/Volumes/Cinera/SBO- Video/Python Videos/Informit/9780134745954/media/video/pyfs_'{/.}.webm

Notes:
The files are on a shared drive mounted on local and remote computers. 
The files and directories have spaces in them. I use -q 
I send jobs to the remote computers in order of power
FFMPEG converts files into webm
I should be able to get— 8 cores * 4 computers = 32 simultaneous encodes. If I’m understanding correctly, the first 8 files go to the fastest host (local), the next 8 to serverA, and so on. 

And all was going well until the long file paths. I scoured the man page and examples and found two possibilities:

Plan B
this gem --workingdir.  I figured I would replace the "cat file" with sending the workingdir. 

To test this outside of ffmpeg I tried:
parallel -q --workdir '/Volumes/Cinera/SBO- Video/Python Videos 9780134745916/Safari/9780134745923/' -S 8/eric@10.105.241.211 file {} ::: '.mp4
output: 
*.mp4: cannot open `*.mp4' (No such file or directory)

But it worked when point to a file by name. 
parallel -q --workdir '/Volumes/Cinera/SBO- Video/Python Videos/videos/' -S 8/eric@ServerA file {} ::: 00_00_00.mp4
output: 
00_00_00.mp4: ISO Media, MP4 v2 [ISO 14496-14]

So then I tried just every imaginable variation to get a video list out of that directory. ls -1, find ., etc.

Plan C
In the Example-
Convert *.mp3 to *.ogg running one process per CPU core on local computer and server2:

parallel --trc {.}.ogg -S :,server2 'mpg321 -w - {} | oggenc -q0 - -o {.}.ogg' ::: *.mp3

The output file seems to come first. then the hosts. then the mpg321 command I don't grok. then that is piped to the ogg encoder with a duplicate output file. Why two outputs?


And now I'm stuck. Plan B or Plan C. Which is better? Where have I gone wrong?

thx
- Eric


GNU parallel 20170322

reply via email to

[Prev in Thread] Current Thread [Next in Thread]