230 likes | 314 Views
Grid Computing with BatchMake. Julien Jomier Kitware Inc. Motivation. Data Processing. Reports & Analysis. Algorithm Design & Implementation. Outline. Introduction to BatchMake Grid Computing with BatchMake Reporting with the BatchBoards BatchMake with Slicer.
E N D
Grid Computing with BatchMake Julien JomierKitware Inc.
Motivation Data Processing Reports & Analysis Algorithm Design & Implementation
Outline • Introduction to BatchMake • Grid Computing with BatchMake • Reporting with the BatchBoards • BatchMake with Slicer
Introduction to BatchMake • Batch script generator • Open-Source BSD license • Common Language (CMake-like) • Generation for: - Shell script - Condor - KWGrid • Run locally or on grid • Cross platform command line and GUI tool • C++ with ITK and FTLK
BatchMake Workflow CommandLine Executable Local Execution ApplicationWrapper Shell Script BatchMake KWGrid Script Script Condor Script
Application Wrapper • Describe command line arguments- Manually (GUI)- Automatically using itkMetaCommand • Internal XML format • .bmm files (BatchMake Modules) • Compatible with Slicer execution modules
MetaCommand • C++ class for command line parsing • Output recognized by - BatchMake (-vxml) - Slicer (--xml) • command.SetOption("compileScript","c",false,"Compile a script"); command.AddOptionField("compileScript","filename",MetaCommand::STRING,true); • http://www.itk.org/Wiki/MetaIO • Insight/Utilities/MetaIO
Example Script 1 -SetApp(imSeg @ImageSegmentation) 2 -SetAppOption(imSeg.threshold 10) 3 - 4 -Set(workdir '/BatchMake/Demo/Ellipse_Images') 5 -ListFileInDir(files ${workdir} '*.mha') 6 - 7 -Foreach(file ${files}) • - Set(filename '${workdir}/${file}') • - Set(outfile '${workdir}/out_${file}') 10-SetAppOption(imSeg.inputFilename ${filename}) 11-SetAppOption(imSeg.outputFilename ${outfile}) 12- Run(output ${imSeg}) 13-EndForeach(file)
Condor • Specialized workload management system for compute-intensive jobs • Created by UW-Madison • Free for use • Provides job queuing mechanism, scheduling policy, priority scheme, resource monitoring, and resource management. • Unix and Windows
Condor Example Script Universe = vanilla Executable = EMSegmenter Arguments = ‘brain.mha segmentation.mha --brain’ Output = emsegmentation.out Error = emsegmentation.error Log = emsegmentation.log Requirements = (OpSys =="LINUX" && Arch=="INTEL") Should_transfer_files = YES When_to_transfer_output = ON_EXIT_OR_EVICT Transfer_input_files = brain.mha Queue
Condor Pool Condor Workflow (Vanilla) Central Manager Central Manager Unavailable Execute Machine Dispatch to Central manager = Unavailable Submit job Submit Machine Issue job Busy Workstation Available Execute Machine Central Manager Dispatch to Central manager = Available Execute Machines Idle Workstation Push out job to machine
BatchMake Condor Generation • Application/Module description - Inputs/Outputs - Data to transfer to nodes • Loop unrolling • Scope definition • Directed Acyclic Graph (DAG) • Ensure order of execution of jobs
Monitoring Condor Jobs • Flock Monitor (Condor) • Condor Watcher (FLTK) • Condor Web Watcher (Ajax/PHP)
Reporting with BatchMake Developers check-in code CVS/SVN CTest/DART compilessource code Developers review results + MIDASXNat BatchMake validateson datasets Results posted on web(i.e., the batchboard)
BatchMake Server • PHP Scripts with MySQL database • Simple C++ HTTP post • Statistical Analysis (Factor analysis: Taguchi). • Dashboard creation capability • User management
BatchBoard Script DashboardHost(http://www.insight-journal.org/batchmake) DashboardUser(‘Julien Jomier') DashboardKey('FKH3BPM1y11VXsMf') CreateExperiment(exp ‘Liver Project‘ ‘Segmentation Experiment' '') CreateMethod(Meth exp 'Registration' 'Register a T1 with noise to a translated T1') AddMethodInput(noiseImageName Meth 'Fixed Image') Set(fixedSlice '${fixedImage}Slice.png') ExtractSlice('${fixedImage}' '${fixedSlice}' 2 1) AddMethodInput(fixedSlice Meth 'Fixed Slice with noise' png) DashboardSend(Meth)
BatchMake and Slicer • BatchMake distributed with Slicer • Some modules can be run on a collection of data- EMSegment- GaussianBlur • Generic way to run moduleson a collection • Support for XNat
GridWizard • Open-Source • Written in Java • BIRN and Na-Mic • Support for Sun Grid Engine and Condor • Shell-like scripts
GridWizard Example bin/gwiz-run prog -t 1:3 prog -t 1 prog -t 2prog -t 3 bin/gwiz-run prog -i sftp://host.com/opt/mri/subjects/*.img prog -i sftp://host.com/opt/mri/subjects/s1.img prog -i sftp://host.com/opt/mri/subjects/s2.imgprog -i sftp://host.com/opt/mri/subjects/s3.img
References • www.batchmake.org • www.insight-journal.org/batchmake • http://forums.gridsphere.org/index.shtml
ClassAd Job ClassAd Match Condor Job Submission Workflow Submit Machine Central Manager Execute Machine 1 Collector Master 3 Master 2 4 Scheduler Negociator 5 Starter