Submitting with Subway

Slides:



Advertisements
Similar presentations
How to create leaders to indicate details or callouts in AutoCAD.
Advertisements

EGEE is a project funded by the European Union under contract IST EGEE Tutorial Turin, January Hands on Job Services.
Connect Team Connect Team Outside Contrib Outside Contrib Unscheduled Backlog Bugs Feature Requests BA Review Requirement Docs Epic Large Tasks or Features.
Drupal Online Tutorial A Product of an ENGL 421 class at Purdue University Page 1.
David Adams ATLAS DIAL Distributed Interactive Analysis of Large datasets David Adams BNL March 25, 2003 CHEP 2003 Data Analysis Environment and Visualization.
AJAX & By – Anupama Sharma. Defining Ajax Ajax isn’t a technology. It’s really several technologies, each flourishing in its own right, coming together.
MCTS Guide to Microsoft Windows Server 2008 Network Infrastructure Configuration Chapter 8 Introduction to Printers in a Windows Server 2008 Network.
Unity 3D game IDE 1.  Unity is a multi-platform, integrated IDE for scripting games, and working with 3D virtual worlds  Including:  Game engine ▪
1 Chapter Overview Introduction to Windows XP Professional Printing Setting Up Network Printers Connecting to Network Printers Configuring Network Printers.
DIRAC API DIRAC Project. Overview  DIRAC API  Why APIs are important?  Why advanced users prefer APIs?  How it is done?  What is local mode what.
CONDOR DAGMan and Pegasus Selim Kalayci Florida International University 07/28/2009 Note: Slides are compiled from various TeraGrid Documentations.
An Introduction to Designing and Executing Workflows with Taverna Aleksandra Pawlik University of Manchester materials by Dr Katy Wolstencroft and Dr Aleksandra.
© Cheltenham Computer Training Using Freelance Graphics - Slide No. 1 A First Look at Freelance Graphics Using Freelance for Windows.
DEVSView: A DEVS Visualization Tool Wilson Venhola.
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
Introducing Dynamic Data DemosRoadmap Feedback and Q&A.
03/27/2003CHEP20031 Remote Operation of a Monte Carlo Production Farm Using Globus Dirk Hufnagel, Teela Pulliam, Thomas Allmendinger, Klaus Honscheid (Ohio.
The gLite API – PART I Giuseppe LA ROCCA INFN Catania ACGRID-II School 2-14 November 2009 Kuala Lumpur - Malaysia.
By BuilderMT BMT Cloud Models and Options Manager by BuilderMT Using Cloud MoM to build and manage a Builder’s Model & Option database BuilderMT Cloud.
Scalable Systems Software Center Resource Management and Accounting Working Group Face-to-Face Meeting October 10-11, 2002.
Murach’s ASP.NET 4.0/VB, C1© 2006, Mike Murach & Associates, Inc.Slide 1.
Chapter 3.5 Memory and I/O Systems. 2 Memory Management Memory problems are one of the leading causes of bugs in programs (60-80%) MUCH worse in languages.
July 2011CMSC 341 CVS/Ant 1 CMSC 341 Java Packages Ant CVS Project Submission.
Oracle Data Integrator Procedures, Advanced Workflows.
Stuart Wakefield Imperial College London Evolution of BOSS, a tool for job submission and tracking W. Bacchi, G. Codispoti, C. Grandi, INFN Bologna D.
An Introduction to Designing and Executing Workflows with Taverna Aleksandra Pawlik materials by: Katy Wolstencroft University of Manchester.
Ganga A quick tutorial Asterios Katsifodimos Trainer, University of Cyprus Nicosia, Feb 16, 2009.
Patrick Wolf Head of Pipeline Pixomondo. Challenges in a global environment  Pixomondo: 12 branches, 660+, 5 countries, 6 zones, 24/7  Challenges: tracking.
Introduction to the Maya C++ API Brent Haley The Ohio State University
WinCvs. WinCVS WinCvs is a window based version control system. Use WinCvs when  You want to save every version of your file you have ever created. CVS.
M1G Introduction to Programming 2 5. Completing the program.
Web Design and Development. World Wide Web  World Wide Web (WWW or W3), collection of globally distributed text and multimedia documents and files 
IPG2P Steering Committee January 25, CI Development Update Feb 2011 – next release – API function and Job Execution Paves way for user-led analysis.
Grid Interoperability Update on GridFTP tests Gregor von Laszewski
SQL SERVER 2008 Installation Guide A Step by Step Guide Prepared by Hassan Tariq.
K. Harrison CERN, 22nd September 2004 GANGA: ADA USER INTERFACE - Ganga release status - Job-Options Editor - Python support for AJDL - Job Builder - Python.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Grid Compute Resources and Job Management. 2 Grid middleware - “glues” all pieces together Offers services that couple users with remote resources through.
Outline Server side Dependencies Installing it Configuring it Client side coding Browser setup.
© Copyright 2014 TONE SOFTWARE CORPORATION. Confidential and Proprietary. All rights reserved. ® Administrator Training – Release Alarms Administration.
INFSO-RI Enabling Grids for E-sciencE Using of GANGA interface for Athena applications A. Zalite / PNPI.
K. Harrison CERN, 21st February 2005 GANGA: ADA USER INTERFACE - Ganga release Python client for ADA - ADA job builder - Ganga release Conclusions.
© Geodise Project, University of Southampton, Workflow Support for Advanced Grid-Enabled Computing Fenglian Xu *, M.
CS 283Computer Networks Spring 2013 Instructor: Yuan Xue.
Debugging Lab Antonio Gómez-Iglesias Texas Advanced Computing Center.
Five todos when moving an application to distributed HTC.
Tutorial: GeoServer Scripting with Python and RESTConfig MODULE 1: Installing GeoServer.
Jeff Barrette Jeff Moulds
Development Environment
Condor DAGMan: Managing Job Dependencies with Condor
Performance Data Collection and Reporting (PDCR)
Marc-Elian Bégin ETICS Project, CERN
WORKSHOP 6 USING THE ASCII CONDUIT
Play Framework: Introduction
Development Changes in Dynamics 365 for Finance and Operations
GLAST Release Manager Automated code compilation via the Release Manager Navid Golpayegani, GSFC/SSAI Overview The Release Manager is a program responsible.
Software Testing With Testopia
OGSA Data Architecture Scenarios
Bomgar Remote support software
AlwaysOn Availability Groups 101
DUCKS – Distributed User-mode Chirp-Knowledgeable Server
What’s New in DAGMan HTCondor Week 2013
HTCondor at Collin Mehring Introduction My background.
CANalytics TM CAN Interface Software BY.
Module 01 ETICS Overview ETICS Online Tutorials
PyWBEM Python WBEM Client: Overview #2
Games Development 2 Entity / Architecture Review
Presentation transcript:

Submitting with Subway Collin Mehring

The Need for a Submission API Render Queuing System resulted from combining two previous systems Relied on submission wrapper scripts Could not be easily used as an API by other applications Too many command line flags rqs_submit - 109 shot_submit - 87 frame_submit - 67 Used DEP graphs that relied on ADB files and ASG While RQS was fast, these slowed things down Use of ANI variables RQS Transformers were a black-box Overly complicated for simple use-cases ADB = Animation DataBase ASG = Asset Scene Graph ANI = ANImation Environment Variables (notes from 2008)

Enter Subway Went through a few name changes... Python API Job API -> RQS API -> Submission API -> Subway Python API Creates DAG and SDF files Only specify a few required variables and any overrides Automatically populate the remaining variables Allows us to set defaults and add nodes Writes files to a known location on the shared file system Submits to HTCondor Shells out to call condor_submit_dag Hopefully will use the Python bindings in the future

Subway Major Versions Subway 1 Subway 2 Subway 3 Subway 4 Job-centric submissions Subway 2 Node-centric submissions, with the concept of frames Full test coverage Subway 3 Moved API out of ‘studio’ namespace, now a rez package Removed last of ADB and ANI ties Subway 4 Moved infrastructure facing pieces into services REST API: Client now POSTs JSON to submission service No longer needs HTCondor installed locally, or shared file system access Current productions use Subway 3, with our next pipeline using Subway 4

Examples Pulled from the “Subway 3.2 Tutorial” internal wiki page.

Hello World import subway subSession = subway.SubmissionSession(share="dragon3_misc") # Create a node object node = subway.Node("HelloWorld", command="echo Hello World") subSession.addNode(node) subSession.submit() Hello World

Simple Dependencies import subway subSession = subway.SubmissionSession(share="trolls_misc") nodeA = subway.Node("NodeA", command="echo job in NodeA") subSession.addNode(nodeA) nodeB = subway.Node("NodeB", command="echo job in NodeB") subSession.addNode(nodeB) nodeC = subway.Node("NodeC", command="echo job in NodeC") subSession.addNode(nodeC) nodeD = subway.Node("NodeD", command="echo job in NodeD") subSession.addNode(nodeD) # Connect all the nodes together subSession.addDependency(nodeA, nodeC) subSession.addDependency(nodeB, nodeC) subSession.addDependency(nodeC, nodeD) subSession.submit() Simple Dependencies

Frame Nodes import subway subSession = subway.SubmissionSession(share="trolls_misc") startupNode = subway.Node("startup", command="run_startup_create") subSession.addNode(startupNode) renderNode = subway.FrameNode("render", frameRange="101-200", command="run_render -c %(FRAME RANGE)s") renderNode.minCpus = 16 renderNode.maxCpus = 32 subSession.addNode(renderNode) # Every nuke job to run on the farm will render five frames nukeNode = subway.FrameNode("nuke", frameRange="101-200", chunkSize=5, command="run_nuke_render -script '/tmp/comp.nk' -frames %(FRAME RANGE)s") subSession.addNode(nukeNode)

Frame Nodes (Continued) shootNode = subway.Node("shoot", command="mov_shoot") subSession.addNode(shootNode) # Rig up our dependencies subSession.addDependency(startupNode, renderNode) # Full dependency is implied by default subSession.addDependency(renderNode, nukeNode, 's') # 's' is a valid alias for 'single' subSession.addDependency(nukeNode, shootNode) subSession.submit() Other dependency types include ‘mulit’ and ‘partial’. ‘Multi’ is like ‘single’ but with additional padding in either direction, and ‘partial’ means it uses our dependency service.

Subgraphs import subway subSession = subway.SubmissionSession(share="trolls_misc") nodeA = subway.Node("NodeA", command="echo job in NodeA") subSession.addNode(nodeA) nodeB = subway.Node("NodeB", command="echo job in NodeB") subSession.addNode(nodeB) # Create subgraph subGraph = subway.SubmissionGraph() nodeX = subway.Node("NodeX", command="echo job in NodeX") subGraph.addNode(nodeX) nodeY = subway.Node("NodeY", command="echo job in NodeY") subGraph.addNode(nodeY) subGraph.addDependency(nodeX, nodeY) nodeC = subway.Node("NodeC", job=subGraph) subSession.addNode(nodeC) nodeD = subway.Node("NodeD", command="echo job in NodeD") subSession.addNode(nodeD) Subgraphs I clipped the dependencies from the bottom for space: # Add dependencies subSession.addDependency(nodeA, nodeC) subSession.addDependency(nodeB, nodeC) subSession.addDependency(nodeC, nodeD) subSession.submit()

Serialized Subgraphs

Subgraphs in Frame Nodes

Example Implementation

Example Submission The training shot is not part of the shot list, so the warning can be ignored.

Other Features ParameterNode Submit at specified time Metrolink Create jobs with attributes filled in by values from a list of dictionaries Submit at specified time Metrolink REST API for editing Subway graphs Currently used as a DAG stitching service Allows overrides Submit locally, or to Dev and Test environments Progressive and FCFS priority Job Runtime object Releasing concurrency limits

Questions