Chroma I: A High Level View Bálint Joó Jefferson Lab, Newport News, VA given at HackLatt'06 NeSC, Edinburgh March 29, 2006.

Slides:



Advertisements
Similar presentations
I/O and the SciDAC Software API Robert Edwards U.S. SciDAC Software Coordinating Committee May 2, 2003.
Advertisements

SciDAC Software Infrastructure for Lattice Gauge Theory
Software Quality Assurance Plan
BU SciDAC Meeting Balint Joo Jefferson Lab. Anisotropic Clover Why do it ?  Anisotropy -> Fine Temporal Lattice Spacing at moderate cost  Combine with.
QDP++ and Chroma Robert Edwards Jefferson Lab
MILC Code Basics Carleton DeTar KITPC MILC Code Capabilities Molecular dynamics evolution –Staggered fermion actions (Asqtad, Fat7, HISQ,
HackLatt MILC Code Basics Carleton DeTar HackLatt 2008.
SciDAC Software Infrastructure for Lattice Gauge Theory DOE Grant ’01 -- ’03 (-- ’05?) All Hands Meeting: FNAL Feb. 21, 2003 Richard C.Brower Quick Overview.
I/O and the SciDAC Software API Robert Edwards U.S. SciDAC Software Coordinating Committee May 2, 2003.
Huey-Wen Lin — Parameter Tuning of Three-Flavor Dynamical Anisotropic Clover Action Huey-Wen Lin Robert G. Edwards Balint Joó Lattice.
Automated Tests in NICOS Nightly Control System Alexander Undrus Brookhaven National Laboratory, Upton, NY Software testing is a difficult, time-consuming.
Reproducible Environment for Scientific Applications (Lab session) Tak-Lon (Stephen) Wu.
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
STRATEGIES INVOLVED IN REMOTE COMPUTATION
SCRAM Software Configuration, Release And Management Background SCRAM has been developed to enable large, geographically dispersed and autonomous groups.
WorkPlace Pro Utilities.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Framework for Automated Builds Natalia Ratnikova CHEP’03.
© iPerimeter Ltd Unix and IBM i  AIX and Linux run natively on Power Systems  IBM i can do Unix type things in two ways:  Posix/QShell  Ordinary.
SKA/KAT SPIN Presentation Software Engineering (!?) Robert Crida.
Lattice 2004Chris Maynard1 QCDml Tutorial How to mark up your configurations.
1 I-Logix Professional Services Specialist Rhapsody IDF (Interrupt Driven Framework) CPU External Code RTOS OXF Framework Rhapsody Generated.
SciDAC Software Infrastructure for Lattice Gauge Theory Richard C. Brower Annual Progress Review JLab, May 14, 2007 Code distribution see
1 Lecture 4: Threads Operating System Fall Contents Overview: Processes & Threads Benefits of Threads Thread State and Operations User Thread.
Trilinos 101: Getting Started with Trilinos November 7, :30-9:30 a.m. Mike Heroux Jim Willenbring.
QCD Project Overview Ying Zhang September 26, 2005.
Winrunner Usage - Best Practices S.A.Christopher.
1 Apache. 2 Module - Apache ♦ Overview This module focuses on configuring and customizing Apache web server. Apache is a commonly used Hypertext Transfer.
Apache Web Server v. 2.2 Reference Manual Chapter 1 Compiling and Installing.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
CS 390 Unix Programming Summer Unix Programming - CS 3902 Course Details Online Information Please check.
How to configure, build and install Trilinos November 2, :30-9:30 a.m. Jim Willenbring Mike Phenow.
The european ITM Task Force data structure F. Imbeaux.
HackLatt MILC Code Basics Carleton DeTar First presented at Edinburgh EPCC HackLatt 2008 Updated 2013.
 Overview › Requirements › Proof of Principal › Issues … › First Step – Wrap Altera NIOS2 GNU Tools › Next Step – Build RTEMS/NIOS GNU Tools › Future.
02/09/2010 Industrial Project Course (234313) Virtualization-aware database engine Final Presentation Industrial Project Course (234313) Virtualization-aware.
Chroma: An Application of the SciDAC QCD API(s) Bálint Joó School of Physics University of Edinburgh UKQCD Collaboration Soon to be moving to the JLAB.
Aspects of the Class Structure in Chroma Bálint Joó Jefferson Lab, Newport News, VA given at HackLatt'06 NeSC, Edinburgh March 29, 2006.
SciDAC Software Infrastructure for Lattice Gauge Theory Richard C. Brower QCD Project Review May 24-25, 2005 Code distribution see
Earth System Modeling Framework Python Interface (ESMP) October 2011 Ryan O’Kuinghttons Robert Oehmke Cecelia DeLuca.
Confidential Continuous Integration Framework (CIF) 5/18/2004.
Framework Details  All products may be run from one program  Coordination of input data:  Model Forecast data  Emissivity Data  Instrument Data 
1 Computer Systems II Introduction to Processes. 2 First Two Major Computer System Evolution Steps Led to the idea of multiprogramming (multiple concurrent.
NCEP ESMF GFS Global Spectral Forecast Model Weiyu Yang, Mike Young and Joe Sela ESMF Community Meeting MIT, Cambridge, MA July 21, 2005.
Gedae, Inc. Gedae: Auto Coding to a Virtual Machine Authors: William I. Lundgren, Kerry B. Barnes, James W. Steed HPEC 2004.
Site Report on Physics Plans and ILDG Usage for US Balint Joo Jefferson Lab.
GLite build and integration system Building and Packaging Robert HARAKALY
A QCD Grid: 5 Easy Pieces? Richard Kenway University of Edinburgh.
G.Govi CERN/IT-DB 1 September 26, 2003 POOL Integration, Testing and Release Procedure Integration  Packages structure  External dependencies  Configuration.
Maite Barroso - 10/05/01 - n° 1 WP4 PM9 Deliverable Presentation: Interim Installation System Configuration Management Prototype
Yannick Patois - Datagrid Software Repository Presentation - March, n° 1 Datagrid Software Repository Presentation CVS, packages and automatic.
The JANA Reconstruction Framework David Lawrence - JLab May 25, /25/101JANA - Lawrence - CLAS12 Software Workshop.
Chapter Eleven Windows XP Professional Application Support.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
QDP++ and Chroma Robert Edwards Jefferson Lab Collaborators: Balint Joo.
How to configure, build and install Trilinos November 2, :30-9:30 a.m. Jim Willenbring.
Gridmake for GlueX software Richard Jones University of Connecticut GlueX offline computing working group, June 1, 2011.
GLite build and integration system Building and Packaging Robert HARAKALY
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Operating Systems Overview: Using Hardware.
2001 ROOT Workshop The Summary. Content Most Requested Request already satisfied Build and Distribution Web Page Information and Documentation.
“Port Monitor”: progress & open questions Torsten Wilde and James Kohl Oak Ridge National Laboratory CCA Forum Quarterly Meeting Santa Fe, NM ~ October.
Lecture 1 Page 1 CS 111 Summer 2013 Important OS Properties For real operating systems built and used by real people Differs depending on who you are talking.
MAUS Status A. Dobbs CM43 29 th October Contents MAUS Overview Infrastructure Geometry and CDB Detector Updates CKOV EMR KL TOF Tracker Global Tracking.
1 OPERATING SYSTEMS. 2 CONTENTS 1.What is an Operating System? 2.OS Functions 3.OS Services 4.Structure of OS 5.Evolution of OS.
Project Management – Part I
LQCD Computing Operations
Chroma: An Application of the SciDAC QCD API(s)
Coevolutionary Automated Software Correction
Presentation transcript:

Chroma I: A High Level View Bálint Joó Jefferson Lab, Newport News, VA given at HackLatt'06 NeSC, Edinburgh March 29, 2006

Introduction Chroma and its dependent software components Getting it Building it Linking against it What's in it? Running it Believing it (?)

Chroma and Other Software Components Optional feature or optional performance optimisation

Getting the bits and pieces QMP, QDP++ and Chroma (and bundled packages) and BAGEL QDP from anonymous CVS: Root : Modules: bagel_qdp, qmp, qdp++, chroma USQCD Web page: BAGEL and Wilson Dslash from Peter's web page GMP from: LibXML2 from :

Building Easiest Target: Anyone Can Build Scalar Workstation Build Assumption: libXML and GMP already installed with OS distribution Modules to build: qdp++, chroma Most Difficult Targets: QCDOC, BG/L and IBM Pseries or new Machines Modules to build: gmp, bagel modules, libxml, qdp++, chroma. Possibly qmp too (except where it is native) Best done by developing a script

General Build Information Uses GNU autoconf 2.59 and GNU automake Typical configure; make ; make install type build Atypical aspects: Work in “cross compilation” mode most of the time Autoconf cannot autodetect many features of target system (Custom OS, Queues etc etc) pervasive use of --enable-feature and --with-package switches Want most efficient compiler flags CXXFLAGS and CFLAGS on configure command line get complicated

Some Typical Flags: QDP++ QDP++ --prefix= --enable-parallel-arch=(scalar|parscalar) --enable-precision=(single|double) --enable-sse, --enable-sse2 (SSE compatible only) --with-libxml2= --with-qmp= --with-bagel-qdp= --enable-qcdoc (QCDOC Specific memory allocator) CXXFLAGS=”-O2 -finline-limit=50000” CFLAGS=”-O2”

Some Typical Flags: Chroma Chroma --prefix= --with-qdp= --enable-sse-wilson-dslash (SSE Only) --enable-sse-dwf-cg (SSE single prec only) --enable-altivec-dwf-cg (AltiVec Single prec only) --with-bagel-wilson-dslash= --with-gmp= CXXFLAGS=”” CFLAGS=”” (disables default -g flag) Other flags picked up from lower layers eg QDP++

Hints to help you get building There is a work in progress installation guide There are possibly out of date example configurations in qdp++/install_scripts/ chroma/install_scripts/ There is a standardized build setup for the JLAB based on the nightly builds (useful for clusters) CVS Module: jlab-standard-chroma-build

Linking against already installed chroma Suppose chroma is installed in /foo/chroma Use script chroma-config in /foo/chroma/bin CXX=`chroma-config --cxx` CXXFLAGS=`chroma-config --cxxflags` LDFLAGS=`chroma-config --ldflags` LIBS=`chroma-config --libs` Compile your program (prog.cc) with: $(CXX) $(CXXFLAGS) prog.cc $(LDFLAGS) $(LIBS) NB: Ordering of flags may be important.

What is in Chroma? Measurements: (sequential) sources, smearings propagators spectroscopy, 3pt functions, hadron structure, wilson loops, eigenvalues Fermion Actions: wilson, tm, clover, 4D and 5D overlap, variety of coeffs, DWF, AsqTAD Monomials: two flavor 4D&5D, one flavor rational 4D&5D, Hasenbusch Term (4D), LogDetEvenEven GaugeActions plaquette, rectangle, tree level and 1 loop LW, RG impr. plaq+rect, DBW2 Inverters: CG, CGNE, BiCGStab, Multi Shift CG, SUMR, GMRESR, MINRES Chronological Predictors: Zero Guess, Last Solution, Linear Extrapolation, Minimum Residual Eigensystems: Kalkreuter-Simma Ritz MD Integrators: Leapfrog, Omelyan (SW?) and Multi Time Scale versions of same Boundaries: (anti)periodic,Dirichlet, twisted, Schroedinger Functional HMC (hmc) Pure Gauge Heatbath (purgaug) I/O Support: NERSC, CPPACS, UKY, SciDAC and ILDG Configurations Measurement (chroma)

Chroma Applications Measurement Application: chroma Gauge Generation Applications: hmc and purgaug Installed in same place as chroma-config eg: /foo/chroma/bin Typical usage flags (-i, -o, -geom):./chroma -i in.xml -o out.xml -geom “Px Py Pz Pt” in.xml – Input Parameter XML File out.xml – Output XML Log File “Px Py Pz Pt” the (possibly virtual) Processor Geometry (eg -geom “ ” for QCDOC Rack)

XML Driven Programs – Chroma Input File Your annotation here MAKE_SOURCE 1 sh_source_0 PROPAGATOR 1 sh_source_0 sh_prop_ SCIDAC foo.lime Input Configuration Details Global Lattice Size Task (array element) Array of Measurements (Tasks) Named Objects (communicate between tasks -- like “in memory” files) Task specific parameters Task Name

XML Input File Examples Numerous Measurement Task Examples in chroma/tests/chroma/hadron/ Measurement Tasks for: sources, smearings, propagators, spectroscopy, 3pt functions, eigenvalues Reading and Writing Named Objects Also MD and HMC input files in chroma/tests/t_leapfrog chroma/tests/hmc Input file names usually contain the string “ini”

Software Quality Assurance (Testing) Nightly builds at the JLab (and elsewhere) framework developed by Zbyszek and Craig in Liverpool and Robert Edwards at the JLAB Tests compatibility with compilers, configuration, building, linking and linking to installed libraries. Runs Regression Tests on single node targets Current nightly builds: parscalar build with SSE, QMP-single comms, g++ v4 parscalar build with SSE, QMP-MPICH over Infiniband with g++ v3 parscalar build with QMP-single comms and BAGEL noarch targets scalar build with SSE

Chroma Regression Tests Framework from Craig and Zbyszek and Robert. Verifies that new code does not break old behaviour (not that it is necessarily correct) Uses xmldiff utility from EPCC to compare XML files Test coverage constantly growing (never enough) Single node only for now: make xcheck Source /home/bj/Devel/QCD/chroma/tests/chroma/hadron/propagator/regres.pl Program Candidate Conclusion chroma unprec-zolo-ev-multi-v8.candidate.xml PASS chroma prec_wilson-v9.candidate.xml PASS chroma prec_clover-v9.candidate.xml PASS chroma unprec_clover-v9.candidate.xml PASS chroma prec_wilson-twisted-v9.candidate.xml PASS

Future improvements (SciDAC2) Infrastructure improvements Improve native speed of QDP++ (more PETE) More Regression tests (more more more!!!) Automated regression and unit tests for QMP, QDP++, QIO etc Documentation (Yes! Really!) Interface with SciDAC level I (QLA) MultiCore/Threaded optimised code (QMC) SSE3 Code BlueGene Code?

Potential Chroma Improvements Better Eigensolvers Dynamical Fermion Algorithms Stout links in MD evolution Multiple timescales for RHMC pieces already have them for 2 flavour code and Hasenbusch thanks to Carsten Urbach Currently input configuration is special – change this will be able to smear a config inline without having to start a second chroma run Priority dictated by project need as always

Summary (Weighing it all up) Layered – Extensive use of SciDAC and 3 rd party libraries Very portable Speed through cliche-d operations and assembly Quality assurance High complexity. Can be difficult to build on some systems Compiler constraints Slow without assembly code Needs documentation Good Side: Bad Side: Capable of delivering a Wide Variety of Physics