The story of ispc: going all in on volta (part 3)
After Sweden, I still had my day job at Intel that didn't involve writing a compiler; I was the tech lead of the advanced rendering group. At the time, I reported to Elliot Garbus, then the VP in charge of graphics software.
Elliot was the best manager I've ever had. To be honest, I didn't expect that at first: while he'd been technical early in his career, it'd been years since he had done anything hands-on, and his background wasn't in graphics anyway. It wasn't clear to me that we had enough in common for much to come out of relationship, but he seemed nice enough at least.
Elliot turned out to be impressively intellectually curious; he always had insightful questions when I talked to him about the things I and the rendering group were working on. In time, I also came to learn that you could completely trust him to have your back; this was really helpful in the highly political environment of Intel. These were both great foundations.
Most importantly, I came to learn that he was a master of coming to understand the people who worked for him and then effectively guiding and coaching them. Sometimes other people can understand you in ways that you hadn't understood yourself, and Elliot was great at that. One felt that he truly cared about finding ways to help you grow as a person, pushing you in directions that were a little uncomfortable but worth stretching for. I've never had that sort of experience with another manager.
I was planning on leaving Intel the Fall after Sweden. I was burned out on the place after the drama of Larrabee and had already been making arrangements for the transition with Elliot. As we worked through the details, Elliot continued to be intrigued by each new result from volta as it came in. I was still hacking away on it. He'd seen first-hand how problematic it had been to not be able to use Larrabee's vector units effectively, and encouraged me to stick around and see where volta went. He argued that if I walked away, we'd never know if the approach really worked or not.
Fortunately, he convinced me to stay in the end, remaining at Intel as an individual contributor, just working on volta.
Stayin' alive
If I was going to stay, it was important to me to have confidence that volta wouldn't be killed. In the political environment of Intel, it very well might have happened at some point along the way.
For example, if I was actually in the compiler team, quite possibly at some point some folks would have stepped in and said, "Great, now we understand. Thank you so much! We got this—we'll take it from here and implement this in the commercial compiler. Oh, and there's no need for you to work on volta any more since that would just be wasted work." And if they sold management on that idea (quite possible), then that'd be the end of volta, regardless of whether they actually went through with their side of it.
In a rational world, that sort of thing wouldn't happen: why wouldn't they want their compiler to be the best it could be, regardless of where the ideas came from? It may have been that some of the folks who had established themselves as the experts in this area were more concerned with maintaining the appearance of mastery of the topic than anything else. It also may have been that they still didn't believe in the use-case volta was attacking—the HPC community was apparently plenty happy with auto-vectorization, and that seemed to matter the most.
In any case, it was quite possible that in the future, some of them would have been happy to have this thorn in their side just go away, so I had to be careful.
Elliot was key to my confidence that my work wouldn't be wasted. I knew he would protect the project, and he agreed that I could open-source the compiler once it was ready. It was really important to me that I could do that; once volta was open source, there was no way it could be killed through Intel politics. To open source software at Intel, all that was needed was VP approval (and going through some straightforward process), so with his agreement, I could get to work with confidence.
On jerks and institutional acceptance of them
A few more words to explain why I had these worries.
First, to be absolutely clear, there were lots of great people at Intel and specifically in Intel's compiler team. There were plenty of good engineers doing good work, perfectly nice people who wanted to do the right thing. By numbers, they were by far the majority.
The problem was that just a few jerks, especially in positions of power or influence, could fuck you up real good.
Intel had more than its share of them and therefore, everyone at Intel balanced some amount of technical work with some amount of politics work. You had to. Politics was more than the standard "advocate for yourself" stuff; at minimum it was periodically defending yourself against attacks from others who wanted your territory and would try to get your project shut down so they could take it.
Some people there approached their work with little in way of technological contributions, but a lot of politics. It turned out that that could be a perfectly successful career strategy—undermining others as necessary to maintain and advance your position without ever actually delivering much of substance yourself. Those were the jerks.
One thing that made it easier for them was the fact that software career path at Intel was all about getting away from coding ASAP—writing code was for new grads and less expensive engineers in foreign countries.1 The glory was being in an architect, never coding yourself, but setting direction. In that role, one could go far without producing anything more than slide decks, I mean foils.
Because there were the jerks out there, you always had to be aware of them. Even if you didn't want to pursue that model for your own career, you had to defend against them or you'd be wiped out.
I never understood why Intel upper management didn't seem bothered by their presence. I suppose that once that mode of success takes root, it's cancerous to the organization and would be hard to root out. Perhaps they figured that Intel was doing pretty well as a company, so why fix what ain't broke? Maybe they saw it as a good kind of aggressiveness and were happy with the idea of everyone fighting it out, gladiators in the Colosseum fighting each other to win, all for the glory of Intel.
Sometimes the management enablers of the jerks would encourage you to "assume best intentions" in your interactions with them. You'd quickly be out-maneuvered if you did; they didn't play that game, and knew to take advantage of any opening they were given.
Elliot never told me to "assume best intentions" with them.
As he helped me figure out how to navigate my interactions with the jerks, I'm pretty sure he offered up a dismissive profanity to describe what he thought of them.
Next time for real, we'll talk about SPMD on SIMD and early design influences; it'll be a little more cheery than this one turned out to be. It'll be the posting after that before we get to the first reveal of results to the compiler team.
note
-
As always, there were exceptions. There were a handful of senior people who still programmed; much respect to them. ↩
No comments:
Post a Comment