Compilers turn a computer’s coding into executable programs. So, the faster a compiler works, the faster a program runs. Compilers, though, have to work within a computer’s constraints. The number of processors, the amount of memory, even the programming language all influence a compiler’s effectiveness. So, engineers like Rei Odaira develop ways to optimize them.
Rei joined IBM Research-Tokyo 10 years ago to optimize System z mainframe compilers. The team he joined invented the technology in the mid-1990s, for the High Performance FORTRAN compilers. And in 1995 – while Rei was still at the University of Tokyo – they built the Java virtual machine, and the Java just-in-time compiler, that has been embedded in every IBM software product that uses Java, including WebSphere. Rei took notice of the world-famous work happening only 20 kilometers away from campus, and wanted to be a part of the group.
“College students at the University of Tokyo cannot declare a major for the first two years of school. They can only choose ‘sciences’ or ‘liberal arts’ as a general areas of study. I originally wanted to study mathematics and physics when I entered the university. But this was also the time of the Internet boom of mid- and late-1990s. So, I began learning about things like Linux. And also, IBM’s just-in-time compiler was the fastest in the world at that time. And because that team was in Tokyo, my classmates and I knew their work very well – from papers they published, to conferences they attended.“My first job [at IBM] was to optimize the compiler on the System z mainframe. Compiler optimization is all about getting as much performance out of hardware as possible. It was a perfect match for my computer science background, and love for working on hardware.
System z, though, is an interesting challenge. It has 16 registers (places on a computer processor where data is kept), while other machine architectures, like our Power systems have several more (so, have more ways to spread out and execute a workload). But our algorithms improved z’s middleware efficiency by 3 percent – a major breakthrough in 2005, considering how fast the mainframe already was, and the limited ways to optimize it.
On OpenPower and Moving to the US
“I moved to Austin in January of this year to manage a systems team working on the Power system’s Coherent Accelerator Processor Interface (CAPI) Flash. The opportunity actually came up last April, when one of my managers – while on a visit to the Austin lab – was asked about who could manage their local team working on OpenPower optimization. And my name came up. My family thought it was a great opportunity, so it wasn’t a hard decision to say ‘yes.’
“Now in Austin, my scope broadened from System z compilers and run time programs like Java and Ruby, to developing ways to exploit CAPI Flash – an accelerator that can access and analyze unstructured data stored in Flash memory. This means it can optimize workloads on the Bluemix cloud platform and the SoftLayer infrastructure it runs on, to do things like process genome sequence data in a few hours, versus the day or so it takes, now.”
Tips on the Transition From School to Industry
“University studies give you the skills and knowledge about a topic. Computer architecture and algorithms in my case. Coming to IBM meant picking up new skills, like writing papers and making presentations. And also learning how to contribute to products – something you don’t do in school.
“At first, I had these ideas of how to change a product. They didn’t go over too well because it meant implementing a completely new thing, like an algorithm or function, in the development and maintenance of that product. I had to learn how to work in the industry, balancing business needs – and the many parts that come together to make a product work – with how my own ideas could make an impact.
“But at IBM you also have plenty of opportunities to partner with academia. I write papers for industry and academic publications. And am a member of, and on the 2015 organizational committee for the International Conference on Principles and Practices of Programming on the Java platform (PPPJ). I was also an external review committee member for Programming Language Design and Implementation (PLDI) earlier this year, and am now working as an editorial committee member for the Information Processing Society of Japan’s Transaction on Programming.”