Darryl Gove is a senior principal software engineer in the Oracle compiler team. He works on analysis and optimization of applications and benchmarks for current and future architectures. He is the author of the books Solaris Application Programming and The Developer's Edge, and he was a contributor to the book OpenSPARC Internals. His latest book, Multicore Application Programming: For Windows, Linux, and Oracle Solaris, came out in November 2010.
|Christy Confetti Higgins|
Christy Confetti Higgins, Cybrarian for Human Resources,
Global Organization & Talent Development at Oracle Corp.,
is responsible for the Virtual Information Services program
for Oracle employees.
Christy: Tell us about your newest book and what the motivation was for writing it.
Darryl: My latest book, Multicore Application Programming: For Windows, Linux, and Oracle Solaris, came out recently. As might be inferred from the title, the book is about writing applications that fully utilize multicore processors. This includes writing parallel applications, but the book also covers other topics, such as the differences between multiprocessor systems and multicore systems.
It's an exciting time for developers. It used to be hard to get access to a machine capable of running parallel applications, but with the rise of multicore processors, it has become common to have that opportunity.
There are two aspects to multicore systems. The first is that they represent a way of increasing the "capacity" of a system. For example, you can run two copies of an application. The second is that you can write parallel applications that use multiple cores to complete the same amount of work in less time.
However, writing parallel applications is often viewed as a complex or scary task. This is a view I don't adhere to. There are some good reasons to think of parallel programming as hard, but part of the reason is because parallel programming has only recently become mainstream.
In the book, I've tried to give fair coverage of how to write parallel applications. The book demonstrates how easy it is to get from serial code to parallel code, but it also covers the issues that need to be avoided in writing bug-free parallel applications.
Christy: What technologies or approaches does the book cover?
Darryl: Since the technology has relatively recently become mainstream, there are a large number of different approaches to writing parallel applications. Although I cover quite a few different approaches in the book, I ended up focusing on the three approaches that are most common. These are automatic parallelization, OpenMP, and native threads.
One advantage of picking these three approaches is that they are available on most platforms. This enabled me to separate the concepts and implementation, so the book covers both UNIX-like platforms and Microsoft Windows.
One choice I made was to focus on the traditional CPU. There is one exception to this: the topic of leveraging the GPU for parallel applications. This is an interesting area because the performance gains from this approach can be massive, if the problem can be made to fit the hardware. This is one area that I expect to become mainstream.
Christy: How is this book important and who should read it?
Darryl: Multicore is an important area for developers. If you look at the systems that are currently available, all are multicore. Some of the systems from Oracle have 512 hardware threads. So producing applications that scale to that number of threads is very important.
One audience for the book is developers who code in C or C++ who are looking to move to writing parallel applications. The examples are largely in C with a few places where I drop into either x86 or SPARC assembly language.
However, the book is also useful for people who want to understand the differences in behavior between a multicore system and a multiprocessor system. So although the primary audience is developers, people involved in capacity planning might also find some of the material useful.
Christy: Do you have any other books? Who should read them and why?
Darryl: My first book, Solaris Application Programming, came out just over three years ago. My motivation for writing it was to provide the kind of volume that I would have wanted on my desk when I first started working with the Oracle Solaris operating system and Oracle Solaris Studio compilers.
The audience for the book is C or C++ developers who are either currently using Oracle Solaris or are coming to Oracle Solaris from other operating systems. The book covers which tools are available, how they can be used, and what the best practices are.
Christy: Anything we should look for in the near future? Anything in the pipeline?
Darryl: Writing books has developed into a kind of hobby for me. So I do have a project on the go at the moment, but I'm still scoping it out. I have a couple of topics that I want to explore as white papers, so those will probably be the next things I produce.
The other thing I'd mention is that I maintain a blog where I write about topics that interest me. I often get involved in problems where some behavior was unexpected, and it takes a bit of digging to figure out what happened. So I try to write those scenarios up whenever I get the chance.
Here are additional links to Darryl's books at other sites: