Transcript Slide 1
TACC’s Comprehensive Scientific Computing Curriculum Jay Boisseau & Sam Moore for CASC Meeting October 4, 2012 Context The growing importance of advanced computing technologies in industry as well as academic research creates the need for classes that prepare both undergraduate and graduate students to use computing resources in applications-driven R&D. However, applications-oriented scientific computing classes are not widely taught in academic computer science departments. Such classes must be readily available for educating the next generation of scientists and engineers for knowledge discovery, and for economic productivity and competitiveness. Our Challenge • TACC staff have opportunity to observe the scientific computing skills of users across the U.S.—most of whom are graduate students, educated at diverse universities • Challenge: Increase the preparation, and number, of next generation, applicationsdriven researchers to make discoveries that advance scientific boundaries and improve our quality of life. TACC SCC Academic Initiative • Started in mid-2000s – originally hosted in CS department – originally just one class: Parallel Computing for Science & Engineering • Issues – CS didn’t embrace hosting these classes, so extra attention to ensure they were offered – Class exposed lack of pre-requisite training in basic computing understanding among science & engineering students (even grad students) TACC SCC Academic Initiative • TACC classes now based in UT Division of Statistics + Scientific Computation (DSSC) – DSSC created Fall 2008 – TACC now teaches 2-3 classes per semester, plus summer – Includes both intro and advanced classes spanning programming, scientific computing techniques, parallel programming, visualization & data analysis, and GPU programming • Requires us teaching Linux, editors, etc. TACC Academic Classes • We have ended up having to teach two sequential lower level classes – Intro to Scientific Programming – Scientific/Technical Computing in addition to our higher level classes – – – – Parallel Computing for Science & Engineering Visualization & Data Analysis for Sci & Engr Distributed & Grid Computing for Sci & Engr HPC with GPUs Academic Courses SSC 222/292 – Introduction to Scientific Programming. •Introduction to programming using both the C and Fortran (95, 2003) languages, with applications to basic scientific problems. Covers common data types and structures, control structures, algorithms, performance measurement, and interoperability. Topics Covered: C and Fortran (95, 2003); Scientific problem applications; Common data types & structures; Control structures & algorithms; Performance measurement & interoperability Academic Courses SSC 335/394 – Scientific/Technical Computing •Comprehensive introduction to computing techniques and methods applicable to many scientific disciplines and technical applications. Covers computer hardware and operating systems, systems software and tools, code development, numerical methods and math libraries, and basic visualization and data analysis tools. Three lecture hours a week for one semester. Academic Courses SSC 374C/394C – Parallel Computing for Scientists and Engineers •Parallel computing principles, architectures, and technologies. Parallel application development, performance, and scalability. Prepares students to formulate and develop parallel algorithms to implement effective applications for parallel computing systems. Three lecture hours a week for one semester. Topics Covered: Principles, architectures & technologies; Parallel application development; Performance & scalability; Parallel algorithm formulation & development Academic Courses SSC 374E/394E – Visualization and Data Analysis •Scientific visualization principles, practices, and technologies, including remote and collaborative visualization. Introduces statistical analysis, data mining and feature detection. Prerequisite: Graduate standing, Mathematics 408D or 408M, Mathematics 340L, and prior programming experience using C or Fortran on Linux or Unix systems. Academic Courses SSC 375/395 – High Performance Scientific Computing with GPUs •Comprehensive introduction to parallel programming of GPUs with CUDA in C and Fortran. Description of the function and parallelism of the architecture components of GPUs and introduction to CUDA as the programming paradigm. CUDA language elements are presented side-by-side with hardware components to guide towards an efficient use of both language and hardware. Three lecture hours a week for one semester. Upcoming Changes to Classes • Add HPC with MICs class (Spring 2013) – Kinda feel obligated… • Add Visual Analytics class (Spring 2013) – Important for ‘big data’ understanding • Change Intro to Scientific Programming to 3 credits/hours (Fall 2013) – Still based on Fortran and C/C++ – Provide basics of Python and Matlab – Provide contexts for other languages in sci comp Upcoming Changes to Classes • Resuscitate Distributed & Grid Computing class to cover web services, grids, clouds? – Still debating what to cover: gateways? Mobile interfaces? Workflows? Etc. • Separate Visualization & Data Analysis class into two classes? – Maybe the Visual Analytics should be part of the separated Vis class • Add Data Management & Collections class? – Also important for ‘big data’ era Academic Courses SSC xxx/xxx – High Performance Scientific Computing with Many Integrated Cores (MIC) – New this spring! •Comprehensive introduction to parallel programming on heterogeneous many-core systems in C and Fortran. Description of the function and parallelism of the new Intel Many Integrated Core Architecture (MIC/Phi) coprocessors in computer clusters. OpenMP threading paradigm and vectorization techniques are presented side-by-side with hardware components to guide towards an efficient use of cores and SIMD vector units employing conventional programming techniques. Three lecture hours a week for one semester. DSSC Certificate in Scientific Computation • Certificate (undergraduate) is like a ‘minor’ • Complete 18 semester hours, including a research project • Some required certificate courses also fulfill degree requirements in major department • Completion of certificate appears on transcript • Prerequisite of Multivariable Calculus • Core requirement of one course in either Linear Algebra, Discrete Mathematics, or Differential Equations Certificate in Scientific Computation • Two scientific computing courses – TACC classes include required and elective classes for this certificate • One applied computing course – E.g. bioinformatics • Independent research project Certificate in Scientific Computation Certificate in Scientific Computation Major Aerospace-ECE table 1 Enrolled % Economics-Supply Chain Management-table 2 Certificate in Scientific Computation Major Aerospace-ECE table 1 Enrolled % Economics-Supply Chain Management-table 2 Certificate in Scientific Computation Programming requirement Certificate in Scientific Computation Applied Computing requirement Certificate in Scientific Computation Certificate completion to date Graduate Portolio in Scientific Computation • Newer than the certificate—like a ‘graduate minor’ • 12 semester hour of courses • SSC 292 and SSC 394 core requirements • Electives and Independent Study TACC Scientific Computation Curriculum Enrollment Spring 2007 CS 395T Parallel Computing for Sci/Engr Graduate 25 Total 25 TACC Scientific Computation Curriculum Enrollment Fall 2007 CS 395T Intro to Sci & Tech Computing Total Graduate 12 12 TACC Scientific Computation Curriculum Enrollment Spring 2008 CS 105 Computer Prog: Fortran and C Total Lower-division 12 12 TACC Scientific Computation Curriculum Enrollment Fall 2008 SSC 394E Vis/Data Analysis for Sci/Engr Graduate 19 Total 19 TACC Scientific Computation Curriculum Enrollment Spring 2009 SSC 222 Intro to Sci Programming Upper-Division SSC 394C Parallel Comp for Sci/Engrs Graduate 9 SSC 374C Parallel Comp for Sci/Engrs Upper-Division 3 Total 12 24 TACC Scientific Computation Curriculum Enrollment Fall 2009 SSC 222 Intro to Sci Programming Upper-Division 29 SSC 394 Scientific & Tech Computing Graduate 11 SSC 335 Scientific & Tech Computing Upper-Division 8 SSC 394E Vis and Data Analysis Graduate 7 SSC 374E Vis and Data Analysis Upper-Division 8 Total 63 TACC Scientific Computation Curriculum Enrollment Spring 2010 SSC 222 Intro to Sci Programming Upper-Division 33 SSC 394C Parallel Comp for Sci/Engrs Graduate 27 SSC 374C Parallel Comp for Sci/Engrs Upper-Division Total 5 65 TACC Scientific Computation Curriculum Enrollment Fall 2010 SSC 292 Intro to Sci Programming Graduate 12 SSC 222 Intro to Sci Programming Upper-Division 10 SSC 394 Scientific & Tech Computing Graduate SSC 335 Scientific & Tech Computing Upper-Division SSC 394E Vis and Data Analysis Graduate SSC 374E Vis and Data Analysis Upper-Division Total 9 13 6 10 60 TACC Scientific Computation Curriculum Enrollment Spring 2011 SSC 292 Intro to Sci Programming Graduate 11 SSC 222 Intro to Sci Programming Upper-Division 19 SSC 394C Parallel Comp for Sci/Engrs Graduate 21 SSC 374C Parallel Comp for Sci/Engrs Upper-Division Total 7 58 TACC Scientific Computation Curriculum Enrollment Fall 2011 SSC 292 Intro to Sci Programming Graduate SSC 222 Intro to Sci Programming Upper-Division 21 SSC 394 Scientific & Tech Computing Graduate 10 SSC 335 Scientific & Tech Computing Upper-Division 13 SSC 394E Vis and Data Analysis Graduate SSC 374E Vis and Data Analysis Upper-Division Total 9 8 10 71 TACC Scientific Computation Curriculum Enrollment Spring 2012 SSC 292 Intro to Sci Programming Graduate 11 SSC 222 Intro to Sci Programming Upper-Division 19 SSC 394 Scientific & Tech Computing Graduate 10 SSC 335 Scientific & Tech Computing Upper-Division 13 SSC 394C Parallel Comp for Sci/Engrs Graduate 21 SSC 374C Parallel Comp for Sci/Engrs Upper-Division Total 7 81 TACC Scientific Computation Curriculum Enrollment Fall 2012 SSC 292 Intro to Sci Programming Graduate SSC 222 Intro to Sci Programming Upper-Division 20 SSC 394 Scientific & Tech Computing Graduate 12 SSC 335 Scientific & Tech Computing Upper-Division 16 SSC 394E Vis and Data Analysis Graduate SSC 374E Vis and Data Analysis Upper-Division Total 9 6 13 76 Summary • TACC has ‘filled the gap’ in teaching general scientific computing classes at UT Austin, driven by context of supporting thousands of users (many of whom are students) • TACC’s classes provide a comprehensive set of skills and understanding about how to use computers for science and engineering, preparing students for academic and industry careers Summary • TACC is packaging materials for sharing under Creative Commons License – Free for non-profit use, can be used in part and edited, etc. • TACC is exploring delivering classes remotely – Web cast – Massive online classes? For questions on these classes: [email protected] For more information: www.tacc.utexas.edu