This is a seminar course that will study how
recent advances in program synthesis can be exploited to produce
efficient programs for heterogeneous parallel computers.
Modern processors are very diverse and consist of
interconnections of multicores, GPUs, DSPs and FPGAs. Multicore
designs have themselves become very complex and exhibit great
variation in the number of cores, the core organization, the cache
hierarchy and inter-core communication. At the same time, the set of
problem domains that need to exploit the computational power of
these complex processors is becoming more diverse and now includes
new areas like machine learning and data analytics in additional to
traditional fields like computational science.
Addressing the problem of effective software
development for complex and diverse hardware architectures will
likely require partially or completely automating many aspects
of software development that are currently done manually. In this
course, we will study recent advances in program synthesis from very
high level specifications with the goals of (i) understanding
the state of the art in this area and (ii) determining what problems
can be tackled in the near future with reasonable assurance of
This course is intended for graduate students who
are looking for dissertation topics at the intersection of
programming languages, architecture, and machine learning.
Course work: Students
will present papers, participate in discussions, and do a
substantial final project.
courses on computer architecture and compilers
Topics and schedule
Piazza: CS 395T-S
Useful links to similar courses:
Computer-Aided Reasoning for Software
Topics in Programming Languages: Program Synthesis