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