J Nelson Amaral, PhD
Contact
Professor, Faculty of Science - Computing Science
- jamaral@ualberta.ca
Overview
About
Education
- B.Sc., Electrical Engineering, PUCRS (Brazil), 1987
- M.Sc., Electrical Engineering, ITA (Brazil), 1989
- Ph.D., Electrical and Computer Engineering, The University of Texas at Austin, 1994
Chair Positions
- Co-chair IBM-CAS
Awards
- University of Alberta Faculty of Science Excellence in Teaching Award (2015)
- Distinguished Engineer, Association for Computing Machinery (2014)
- Distinguished Speaker, Association for Computing Machinery (2012-2014)
- Interdepartmental Science Students' Society Award for Excellence in Teaching (2014)
- IBM Center for Advanced Studies (CAS) Research Faculty Fellow of the Year (2012)
Research
Area
Software Systems
Interests
Compiler Optimization and High Performance Computing.
Summary
A substantial part of the gain in processing power of modern computers can be attributed to advanced compilers. By applying clever transformations to code, a compiler can enable better utilization of the resources available in a machine. A single code transformation T applied by a compiler can easily speed up some programs by a factor of two or three. However, when applied in combination with other code transformations, the same transformation T might yield modest improvements, or even result in a slow down.
My research interest is focused on code transformations that are applied at an intermediate representation of the program: a representation that is common to several programming languages and to several processor instruction sets. Thus, such transformations can benefit a large number of systems. Because of the interference between transformations described above, I am interested on implementing new code transformations on state-of-the art production compilers.
In order to explore instruction-level parallelism, some of the code transformations that I study are specific to a certain processor architecture, and thus require more effort to be translated to other processors.
I am also interested in the application of learning technology to the compilation process. My group is investigating the use of both supervised and unsupervised learning to improved the performance delivered by, and the efficiency of, modern commercial compilers. We are also investigating ways to improve the implementation and evaluation of feedback-directed optimization (FDO).
Announcements
Projects in the news:
Courses
CMPUT 229 - Computer Organization and Architecture I
Number representation, computer architecture and organization, instruction-set architecture, assembly-level programming, procedures, stack frames, memory access through pointers, exception handling, computer arithmetic, floating-point representation, datapath, control logic, pipelining, memory hierarchy, virtual memory. Prerequisite: CMPUT 201 or 275. Credit may be obtained in only one of CMPUT 229, E E 380 or ECE 212.
CMPUT 429 - Computer Systems and Architecture
A discussion of computer system design concepts with stress on modern ideas that have shaped the high-performance architecture of contemporary systems. Instruction sets, pipelining, instruction-level parallelism, register reuse, branch prediction, CPU control, cache- coherence, accelerators, and related concepts. Memory technologies, caches, I/O, high-performance networks. Prerequisites: CMPUT 201 or 275; and one of CMPUT 229, E E 380, or ECE 212. Credit may be obtained in only one of CMPUT 429, CMPE 382, or ECE 311.
CMPUT 499 - Topics in Computing Science
This topics course is designed for a one on one individual study course between a student and an instructor. Prerequisites are determined by the instructor in the course outline. See Note (3) above.
CMPUT 530 - Topics in Computing Science
CMPUT 605 - Topics in Computing Science