1 / 17

Panel 1: Hot topics and future directions in programming languages (PL) research

Panel 1: Hot topics and future directions in programming languages (PL) research. Vivek Sarkar, IBM Research May 9, 2007. My Background. Education B.Tech., IIT Kanpur, 1981 (Advisor: Keshav Nori) M.S., U Wisconsin-Madison, 1982 Ph.D., Stanford University, 1987 (Advisor: John Hennessy)

primo
Télécharger la présentation

Panel 1: Hot topics and future directions in programming languages (PL) research

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Panel 1: Hot topics and future directions in programming languages (PL) research Vivek Sarkar, IBM Research May 9, 2007

  2. My Background • Education • B.Tech., IIT Kanpur, 1981 (Advisor: Keshav Nori) • M.S., U Wisconsin-Madison, 1982 • Ph.D., Stanford University, 1987 (Advisor: John Hennessy) • Career at IBM • 1987 - 1990, PTRAN (Manager: Fran Allen) • 1991 - 1993, ASTI optimizer • 1994 - 1996, Application Development Technology Institute • 1997, MIT sabbatical • 1998 - 2001, Jalapeno / Jikes RVM • 2002 - present, PERCS (includes X10, Parallel Tools, Productivity) • Family • Married with two daughters, 18 and 15 • Interests: Hiking, Theater, Horseback riding, Violin PL Summer School, May 2007

  3. PL Research Opportunities: Examples • Programming Models and Programming Language Design • X10 (contact: Vijay Saraswat) • Development Tools • SAFARI (contact: Robert Fuhrer) • Parallel Tools Platform (contact: Evelyn Duesterwald) • Compilers, Managed Runtimes, Static & Dynamic Optimization • Metronome (contact: David Bacon) PL Summer School, May 2007

  4. X10 Vision: Portable Productive Parallel Programming X10 Data Structures X10 language defines mapping from X10 objects & activities to X10 places X10 Places X10 deployment defines mapping from virtual X10 places to physical processing elements Physical PEs PL Summer School, May 2007

  5. Overview of X10 (x10.sf.net) Storage classes: • Activity-local • Place-local • Partitioned global • Immutable • Dynamic parallelism with a Partitioned Global Address Space • Places encapsulate binding of activities and globally addressable data • async (P) S --- run statement S asynchronously at place P • finishS --- execute statement S, and wait for descendant async’s to terminate • atomic S --- execute statement S atomically • No place-remote accesses permitted in atomic section Deadlock safety: any X10 program written with async, atomic, and finish can never deadlock PL Summer School, May 2007

  6. Single-Threaded Java Multi-Threaded Java initTasks() { tasks = new ToTask[nRunsMC]; … } public void runSerial() { results = new Vector(nRunsMC); // Now do the computation. PriceStock ps; for( int iRun=0; iRun < nRunsMC; iRun++ ) { ps = new PriceStock(); ps.setInitAllTasks(initAllTasks); ps.setTask(tasks[iRun]); ps.run(); results.addElement(ps.getResult()); } } public void runThread() { results = new Vector(nRunsMC); Runnable thobjects[] = new Runnable [JGFMonteCarloBench.nthreads]; Thread th[] = new Thread [JGFMonteCarloBench.nthreads]; // Create (nthreads-1) to share work for(int i=1;i<JGFMonteCarloBench.nthreads;i++) { thobjects[i] = new AppDemoThread(i,nRunsMC); th[i] = new Thread(thobjects[i]); th[i].start(); } // Parent thread acts as thread 0 thobjects[0] = new AppDemoThread(0,nRunsMC); thobjects[0].run(); // Wait for child threads for(int i=1;i<JGFMonteCarloBench.nthreads;i++) { try { th[i].join();} catch (InterruptedException e) {} } } class AppDemoThread implements Runnable { ... // initialization code public void run() { PriceStock ps; int ilow, iupper, slice; slice = (nRunsMC+JGFMonteCarloBench.nthreads-1) / JGFMonteCarloBench.nthreads; ilow = id*slice; iupper = Math.min((id+1)*slice, nRunsMC); for( int iRun=ilow; iRun < iupper; iRun++ ) { ps = new PriceStock(); ps.setInitAllTasks(AppDemo.initAllTasks); ps.setTask(AppDemo.tasks[iRun]); ps.run(); AppDemo.results.addElement(ps.getResult()); } } // run() } Single-Threaded Java Distributed Multi-Threaded X10 initTasks() { tasks = new ToTask[nRunsMC]; … } public void runSerial() { results = new Vector(nRunsMC); // Now do the computation. PriceStock ps; for( int iRun=0; iRun < nRunsMC; iRun++ ) { ps = new PriceStock(); ps.setInitAllTasks(initAllTasks); ps.setTask(tasks[iRun]); ps.run(); results.addElement(ps.getResult()); } } initTasks() { tasks = newToTask[dist.block([0:nRunsMC-1])]; … } public void runDistributed() { results = new x10Vector(nRunsMC); // Now do the computation finish ateach( point[iRun] :tasks.distribution) { PriceStock ps = new PriceStock(); ps.setInitAllTasks((ToInitAllTasks) initAllTasks); ps.setTask(tasks[iRun]); ps.run(); finalToResult r = ps.getResult(); // ToResult is a value type async(results)atomicresults.v.addElement(r); } } Java Grande Forum Example (Monte Carlo) Source: http://www.epcc.ed.ac.uk/javagrande/javag.html - The Java Grande Forum Benchmark Suite PL Summer School, May 2007

  7. Lead: Robert Fuhrer SAFARI Vision: Meta-Tooling for Language-Specific IDEs • Problem • Lack of tool support can be a significant barrier in adoption of new languages • SAFARI Solution: Meta-tools and framework • Language generation tools (scanner/parser generator, high quality automatic ASTs) • Generation of Eclipse toolkit components • Encapsulate Eclipse API knowledge • Encapsulate common language structure, semantics, processing idioms • Leverage language inheritance •  structure/semantics   implementation • People • P. Charles, J. Dolby, R. Fuhrer, S. Sutton, M. Vaziri PL Summer School, May 2007

  8. SAFARI Target IDE Functionality syntax highlighting, compiler annotations,hover help, source folding, formatting… navigation (hyperlinks, “Open Type”, …) content assist, quick fixes structural views compiler w/ incremental build, automatic dependency tracking analysis & refactoring • New Project/Type/… creation wizards • launch & debug: launch configs, breakpoints, backtraces, values, evaluation PL Summer School, May 2007

  9. A() body int x= 5; for BadStmt header body int i=0; i < a.length i++ … Example of SAFARI Challenges: Error Handling • Errors are the norm!  must not cripple the IDE! • SAFARI/LPG: systematic, semi-automatic error recovery for parsing/creating “prosthetic” AST nodes • Polyglot: ideas for finer-grained dependencies, better robustness, make data dependencies more explicit mangled statement void A() { int x= 5;foo blah;for(int i=0; i < a.length; i++) { int y= a[i] * a[j]; x += y; }} dangling ref PL Summer School, May 2007

  10. Parallel Tools Platform Vision: Integrated Workbench for High-Productivity Parallel Programming PERCS workbench enhancements: MPI tools, OpenMP tools, Remote System Exploration, Performance Exploration, Runtime Error Detection, Team Platform, Productivity measurements Eclipse PTP is the integration hub for all PERCS tools HPC System Cache injection CPO Compilers DB SMT Exploitation COE ILM Meiosys HPC Toolkit Static Analysis Tools User Space APPLICATION ESSL Kernel Space CSM, RSCT SOCKETS GPFS SHMEM PESSL Operating System UPC X10 Parallel Tools Platform (PTP) TCP UDP VSD/NSD IBM ’ s MPI LAPI IP LL DD HYP HAL IF_LS Remote interface from Eclipse Workbench to HPC system Network Adapter Network HMC Open HPC Workbench (Runs on Windows, Linux, Mac OS, …) = New additions through PERCS to the HPC SW architecture PL Summer School, May 2007

  11. PTP Example: MPI Barrier Verification Tool Action to run Barrier Verifier Verify barrier synchronization in C/MPI programs • Synchronization errors lead to deadlocks and stalls. • Programmers may have to spend hours trying to find the source of a deadlock • Static verification tools help to eliminate errors before the program is executed Contact: Evelyn Duesterwald, Yuan Zhang PL Summer School, May 2007

  12. MPI Barrier Verification Tool (contd.) MPI_Comm_rank(com, &rank) • MPI does not place any constraints on the placement of barriers • Programmer has to ensure that the number of barriers along concurrent paths is the same • Synchronization errors in MPI are a common and difficult to find problem • MPI Barrier Verification: Verify that the number of barriers along concurrent paths is the same • Match barriers that synchronize • For unmatched barriers, report a synchronization error with a counter example that illustrates the error rank > 2 potential deadlock … MPI_Barrier(com) P(k) … i = F(0) i > 0 not a deadlock i = rank MPI_Barrier(com) PL Summer School, May 2007

  13. Metronome Vision:Transparent Real-time Java C++ Application Java Application Java Application Garbage Collection Java Runtime System (JVM) Metronome Java Runtime System C++ Runtime System Manual, Unsafe Predictable Automatic, Safe Unpredictable Automatic, Safe Predictable www.research.ibm.com/metronome PL Summer School, May 2007

  14. Real-time Garbage Collection • Garbage collection is fundamental to Java’s value proposition • Safety, reliability, programmer productivity • But also causes the most non-determinism (100 ms – 10 s latencies) • RTSJ standard does not support use of garbage collection for real-time • Metronome is our hard real-time garbage collector • Worst-case 2 ms latencies; high throughput and utilization • Research under way to further reduce real-time guarantee from ms to us • 100x better than competitors’ best garbage collection technology Garbage Collection Pause Times (Customer application) Worst-case 1.7 ms Average 260 us Time Application Collector Space a = allocation rate c = collection rate Base Application Memory Resulting Schedule PL Summer School, May 2007

  15. Space g Time a*(∆GC) = Per-GC Allocate Rate m = Live Data Application (Mutator) Scheduler u = utilization 50 MB/s 50% 75% 30 MB s = used space RT = Trace Rate 50 MB/s RS = Sweep Rate 300 MB/s 45 MB 100 MB Collector ∆t = time resolution 5 ms PL Summer School, May 2007

  16. PL Research Opportunities • Programming Models and Programming Language Design • Drivers: Concurrency, Accelerators, Data Access, Web Services, DSLs, … • Development Tools • Drivers: Program Analysis for Software Quality, Debugging Tools, Performance Tools, Refactorings, Language-Sensitive IDE’s, … • Compilers, Managed Runtimes, Static & Dynamic Optimization • Drivers: Hardware roadmap, PL trends, Virtualization, Embedded systems, Real-time systems, … PL Summer School, May 2007

  17. Additional Information • X10, http://x10.sf.net • SAFARI, http://domino.research.ibm.com/comm/research_projects.nsf/pages/safari.index.html • Parallel Tools platform, http://eclipse.org/ptp • Metronome, http://www.research.ibm.com/metronome/ • IBM Research • “Innovating at IBM” video, http://www.research.ibm.com/about/career.shtml • “Valuing diversity: an ongoing commitment”, http://www.ibm.com/employment/us/diverse PL Summer School, May 2007

More Related