8 Replies Latest reply on Jun 11, 2009 1:47 AM by james works

    Multiple Machine Render question

      Alright, so I just realized that After Effects (I'm running CS3) can utilize multiple machine renderings. At first, I thought this would be great since my typical renders are anywhere from 45 minutes to 2 hours. But, after much playing around, I realized that it only works for sequences.. which isn't much help because I export the majority of my work as DV Streams or MOV files! Is there any way I can get it to do formats other than image sequences or am I SOL?

      I also considered buying a few moderate-end machines and putting together a small render farm in case I couldn't, but I wouldn't know where the best place is to start with something like that (I'd imagine determine what software works, but I can't find much info on that, really).
        • 1. Re: Multiple Machine Render question
          Mylenium Most Valuable Participant
          >Is there any way I can get it to do formats other than image
          >sequences or am I SOL?

          No. Basic principles of computer science: On the binary/ hex level, only file formats that explicitly support out-of-sequence append or multi-user access can be treated this way, if they run on operating systems supporting it. Needless to say that home OSs don't fall into that category and neither do most standard file formats (beyond basic text). Apart from that, it would be even more pointless for a heterogenous rendering environment - there will always be cases where some machines will render faster and they have been assigned out-of-sequence ordered chunks to begin with. In such a scenario, the main controller having to wait for the slowest machine to render the next required frame would cause massive delay, in turn killing all your speed gains. So in short: No dice.

          • 2. Re: Multiple Machine Render question
            Jonas Hummelstrand Level 2
            I'd like to answer "Yes" to that question.

            1. Use all your machines by installing "After Effects Render Engine" on them. Make sure you also install (and register) all plugins you will be using, plus add the fonts you are using in your project.

            2. Add comps to the Render Queue and make sure "Skip existing files" is checked in "Render Settings." Add an extra Output module (highlight it and hit Ctrl-D) for the sound to an AIFF or WAV file.

            3. Set up each RE so that they are watching a common folder that every computer can see.

            4. Do a "File -> Collect Files..." to that folder.

            5. Once the render is done, use either AE or QuickTime Player Pro to import that sequence and audio file and render it out to a MOV or DV Stream.

            - Jonas Hummelstrand
            • 3. Re: Multiple Machine Render question
              bogiesan-gyyClL Level 3
              Thanks, Jonas, but this is why the answer is usually, "No."
              The overhead required to set it up (which may require purchasing extra copies of third party plugs) and then to copy all of the source media around makes multi-machine rendering silly.
              If you need expended network rendering, I think your only viable option is the Nitro series of products or whatever it's called.

              On a more cheerful note. several Final Cut Studio users have reported succes in using Compressor's Qmaster to boost rendering of After Effects projects by forcing the OS to employ all CPUs at max availability. I do not have a link to the forum entries, sorry. If you run FCP, you could check the creativecow,net and Apple.com forums for Compressor.

              • 4. Re: Multiple Machine Render question
                I don't know what kind of work you do, but I always find on complex projects it's best to render out as image sequences anyway, once it gets to the "tweaks" stage. If you need to alter something you only have to re-render those specific frames, and when it comes to final output it's usually pretty quick to render out a quicktime or whatever from an image sequence rather than having to recalculate all the motion blur, effects etc. So do the numbercrunching on multi machine, then when you've got your flickbook sequence just assemble that using one machine.
                • 5. Re: Multiple Machine Render question
                  Jonas Hummelstrand Level 2

                  The "overhead" will be there even if you buy a 3rd party render handler.

                  1. Setting up AE Render Engine on several machines is pretty easy and quick.

                  2. Plugins is a bit tricker, but all the plugins I have purchased support unlimited render engine renderings, so that wasn't too bad, except entering all the serial numbers.

                  3. Copying the source media is handled by Collect Files onto a shared folder. I agree that the pain comes when you want to update that folder with a couple of modified files, since you either have to copy those files manually or do an entire "Collect Files" again.

                  4. If you're on a Mac render farm, you can have all render machines read a shared Font folder, so that is pretty easy.

                  Now, personally I've always network-rendered by just starting several machine over-night, so that's always an alternative...

                  - Jonas Hummelstrand
                  • 6. Re: Multiple Machine Render question
                    for PC's only =====
                    i wrote my own dos scripts to setup network rendering (remotely start after effects engines, copy projects to a watchfolder, and setup RenderControlFiles, copy and install fonts, etc ... took me a while to write and set up and is really the property of the company I work for), but the basics are below and from my in-house help file. Works better for us than collecting footage, basically, just substitute local drive volume names with UNC names, save the project, submit to the watchfolder, in its own directory, and add an RCF text file (try collecting footage, an RCF file will be generated so you can see whats in it). The thing that took me longest to debug was to install required fonts remotely ... any way read the basics


                    The basic requirements for any software that can network render, are that

                    all participating computers are able to access the original source footage,

                    any required fonts are loaded and active on the participating renderers,

                    any plugins and codecs used are also installed and available, and

                    all rendered frames, ie, output are send to a common storage area; single frames sequences are the best output format, a single streamed format, like an AVI, MPEG, or Quicktime Movie cannot be created by more than one computer at one time. However if your render queue has multiple single file streams queued, multiple render slaves can render the multiple queued streams, with one slave rendering one of the streams at a time two or more render slaves cannot render the same stream at the same time.


                    Source Footage Paths

                    The first problem in the below example is that all the source footage is referenced using local paths. The default network rendering method Adobe use is really best suited to archiving, wherein the footage is collected from the source computer and copied to a common server in a hierarchial tree structure. In this example the source footage is comparatively short, but still over 900mb long, so there is a time issue involved, a network traffic issue, a storage issue at the server end, a server management issue, and if the network render fails, or needs to be redone, this step will need to be repeated or the process hacked by an appropriately skilled person.

                    To network render, all source imagery should use a file path that can be seen by other computers on a network. The best method is to use UNC (universal naming convention) paths, ie \\computername\sharedvolume\foldername\foldername\imagename.

                    In the above example a badly pathed file N:\TV1 Promos\sas\sas1.aif could be made legal by re-pathing to \\regan\zone2\TV1 Promos\sas\sas1.aif assuming that zone2 is an explicitly shared volume.

                    TIP: you can create as many share points as you want. You could, for example create an additional share point N:regan\one2\TV1 Promos\sas and call it SAS so it appears as the share \\regan\SAS. Just right-hand click on the folder you want to share, select SHARING from the menu, create the new share and give it a meaningful name; on XP systems, you also need to specify read/write access permissions.

                    You can create a shortcut to this or any other share, leave it on your desktop, and that will save you time navigating to that point or typing out \ \ r e g a n \ s a s

                    Alternatively, you can highlight a network path in explorer, copy that text, and keep pasting it when subsequently specifying paths.

                    There are not limitations on how many share points you can create.

                    An further alternative method would be to use the administrative share path, \\regan\N$\TV1 Promos\sas\sas1.aif. Here the drive letter N: is replaced by \\regan\N$. This method is particularly useful where the volumes are not explicitly shared.

                    One other method is to map shared volumes or folders to a drive letter, but for this to work, the drive mapping must be consistant across all participating renderers, so you would have to run around these computers mapping network shares to drives on a per job basis as required, so it is not at really very practical.

                    After Effects 6.5 introduced a smarter way if the project is opened on another computer on the network, it will attempt to replace the locally specified footage paths, with network paths. Mostly it works okay, sometimes it doesnt. Footage that is sourced from mapped network drives, for example where W: drive refers to \\Gfxserver2\graphics2, will have problems.

                    The best way is to use the UNC paths from the begining of the projects construction, then there is never an issue, and the project will always be portable, but if you forget or cant be bothered, or think that using network rather than local paths is slowing you down, ...

                    1) save your project,
                    2) open your project on another machine
                    3) reload one of the missing footage files ... the rest should fill themselves in, if they dont they are probably on another drive
                    4) check the output is network pathed
                    5) save the project, and submit that version to the render farm

                    Ultimately, for this project to network render successfully, the source footage needs to be completely specified in a manner where it is accessable by any machine on the network, so use must be made of

                    \\computername\VolumeLetterDollarSign\foldername\foldername\imagename, or
                    \\computername\sharedvolume\foldername\foldername\imagename, or
                    \\computername\sharedfolder\imagename methods.

                    Output Footage Paths and Render Settings

                    Once the source files have been amended to include a full network pathname, the parameters for the render can be set.

                    STEP ONE
                    In the Render Queue window, firstly choose a single frame Output Module, such as TARGA or JPEG; a single file streamed format, like an AVI, MPEG, or Quicktime Movie CAN NOT be created by more than one computer at one time. However if your render queue has multiple single file streams queued, multiple render slaves can render the multiple queued streams, with one slave rendering one of the streams at a time two or more render slaves cannot render the same stream at the same time.

                    STEP TWO
                    In the Render Settings, make sure you turn off storage overflow and turn on skip existing frames so that once any frames that have been network rendered, those frames will not be rendered again by another machine.

                    STEP THREE
                    The destination for the outputted animation should include the full network pathname, so that all the outputted files end a up in the same place.

                    Warning: If local paths are inadvertently used here the rendered files could be scattered over any local hard drive of the machines that will be rendering the animation, and each rendering machine would not be able to determine which frames had been rendered by other machines, so each machine could end up rendering the entire sequence itself, it the drive letter exists on that rendering machine.

                    Again it doesnt really matter which of the network naming methods is employed; either

                    \\computername\VolumeLetterDollarSign\foldername\foldername\imagename, or
                    \\computername\sharedvolume\foldername\foldername\imagename, or
                    \\computername\sharedfolder\imagename will work.

                    STEP FOUR
                    The project with its network pathed source and output files specified, and render queue setup would then be saved.
                    • 7. Re: Multiple Machine Render question
                      Todd_Kopriva Level 8

                      This is a terrific post.

                      It would be great if you would add this information in a comment on this page and/or the relevant child pages:

                      "Automated rendering and network rendering"

                      That way, people reading the Help document will see your instructions.
                      • 8. Re: Multiple Machine Render question
                        james works Level 1

                        Didn't read all of Anthony's post, but in short we use a pretty simple and effective method of multi machine rendering (plus running Nucleo on all machines at the same time - so we've got 4 machines going full throttle at the same project - 20 processors at present)


                        We all work off a shared server RAID that has all the projects, assets, footage, etc.


                        We save off a version of the project in question with render queue setup and 'skip existing frames' on, then open this project on each machine with Nucleo enabled and they all render a TGA sequence into the same shared folder.


                        The only thing that can slow things down or crash machines is if all machines are reading a particularly heavy bit of uncompressed video at once and the network isn't fast enough - then the bottleneck chokes things, but you tend to get to know how far you can push it or when to maybe just use 2 macs, etc.


                        Another way to keep the data flow fluid can be to write to a separate drive, or onto each mac's desktop and just one machine to only render 0-1000, the next to only render 1001-2000, etc.