The usual caveat: this is all from memory and it’s been a few years now. If you were around then and see anything I misremembered, please send an email and I’ll happily make corrections.

In the Spring of 2011, there was a reorg and most of the graphics software people moved into the hardware organization. It didn’t make sense for me to join them there, and so I landed in the compiler group, reporting to Geoff Lowney, an Intel Fellow who was the compiler group’s CTO. I was sad to no longer be working for Elliot and to (organizationally) leave my graphics friends. I was a little worried, too: it felt a little like moving to enemy territory.

Fortuantely, Geoff was fantastic: even before I joined his group, his attitude about volta had been one of openness and intellectual curiosity— it’s really interesting that it works so well; what can we learn from it? That coupled with great depth in compilers was really nice; I learned a lot from him. He was a strong supporter of the project for the rest of my time at Intel; I’m super thankful for all of his help along the way.

I continued developing volta and around late Spring, I started to think it was ready to see the wider world. Enough people internally had used it and had good experiences with it that I had some confidence that things would go well with a broader set of users. And I was excited about being able to spread the message to programmers outside Intel: there’s much more computational capability in your CPU than you probably realize; it’s just a matter of having the right programming model.

Elliot, my previous manager, had already agreed to let me open source volta, and I knew I could completely trust his word. But the thing is, it was your current VP who has to approve open sourcing anything that’s being developed in their organization. My new VP was in charge of the compiler team.

He wasn’t quite as excited about open sourcing it.

There were some concerns about it being confusing to customers, having both an open source compiler and a commercial compiler; there were concerns about who would maintain it if I left Intel someday—that sort of thing. There may have been more to it than that, but no one ever said as much.

We went round and round a few times, but in the end it was settled: no, the compiler would not be open sourced. (But I could keep working on it and continue to follow the noble path of “influencing” the production compiler, not that that had had any visible effect thus far.) The decision was obviously pretty frustrating to me, since I’d continued working on volta all that time under the expectation that it would eventually be open sourced.

At least it was obvious how to proceed: there was no reason to work on volta if it was going to be locked up forever inside Intel, and at that point, there wasn’t anything else I was interested in working on there.

So I tendered my resignation.

Backpedaling ensued, and approval was granted. I hurried to get the details taken care of as quickly as possible and get the code pushed to github, lest something change and have my license to do it be revoked.

RIP volta, long live ispc

Intel (naturally) has very strict rules about naming products. Among them, product names start with “Intel”, and then they must precisely describe what the product does. Not a lot of room for creativity, and “volta” was dead on arrival as the compiler’s actual name once it was open sourced.

This was fairly typical Intel: their fear of being sued by someone for trademark infringement overwhelmed the consideration of actually naming things well. (Alternatively understood, the people approving names were so desperate to cover themselves that they set up rules that ensured there’d never be a trademark lawsuit, so that they wouldn’t ever get into trouble for letting something more daring through.) Anyway, check out Intel product names at some point with this lens—“Intel® SSD 730 Series” and all that.

So, “Intel” and describe precisely what it does. Well, it’s the “Intel SPMD program compiler”, then, or ispc. I’m still a little sad about “volta” being replaced by that monstrosity—“program compiler”, I mean, really?1

Ironically, the new name made the compiler sound more official than it was, more like something that Intel was broadly behind than was actually the case.

The initial release

After the trademark folks approved the name, there was a little more administrivia and then getting approval to post the code on github, which was at the time quite new-fangled and exotic, especially from the Intel perspective.

I spent a lot of time polishing the code and documentation. I wanted the source code to be clean and well commented, and I wanted the documentation to be thorough. I figured that making the first impression be as good as possible would be time well-spent in terms of getting peoples’ attention and getting more people to use it.

To my regret now, I also started out with a fresh git repository. At the time, I didn’t want all of my fooling around explorations before I had a plan for the compiler to be public, and it’s a little embarrassing when half your commit messages are “small fixes” or “added todo”. Now I wish I could spelunk through all that and nail down more details of the early history.

In any case, the code went live on github on June 21, 2011. That was just about a year since the start of my fooling around with LLVM.

I sent out some emails and tweeted an announcement that evening:

What I’ve been working on for the last ~year… The Intel SPMD Program Compiler (ispc) is now available at ispc.github.com.

and

Native, high performance {SPMD,SIMT,map/kernel,shader-style} CPU programming. ispc.github.com. Wake your SIMD units from their slumber!

(Mind you, this was in the historic days of 140 character tweets, so it took two of them to get through that.)

That was about it for marketing. People started trying it out and saw good results; it all continued to work as advertised. Whew.

Next time: continuing ispc development as an open source project, adventures giving talks to academics, and my departure from Intel.

Next: Spreading the word and leaving Intel

notes

  1. How great is it that Google Image search can deliver on “Bjork crying” and provide this photo of her as a sad-or-maybe-sleepy child?