Fusion Summit ARM has joined forcing with AMD to promote what they call "heterogeneous computing".
"It may seem strange that AMD have invited someone from ARM to come along and talk to you today about this...And, indeed, in some ways it is," Davies told his keynote audience on Tuesday at the Summit in Bellevue, Washington. "[But] there is great agreement between ARM and AMD. Much of what we believe in terms of the technology directions where the industry is going – in terms of heterogeneous computing – there's huge agreement between us."
What is heterogeneous computing? In a nutshell, a heterogeneous computing system has all of its processing components – CPU, GPU, video and audio processors, and the like – tightly bound and working in concert, aware of one another, sharing workloads and memory space in the most efficient ways. What's more – to borrow a term from AMD corporate fellow Phil Rogers – these components can "slosh" system power amongst each other as needed.
Heterogeneous computing is also the buzzterm du jour at AMD's developer event. We first heard it when AMD, announcing its Fusion dev kit this January (now at version 2.4), called for submissions from "heterogeneous computing pioneers" who wanted to participate in the Summit. And Davies happily picked up the baton.
He noted that although shrinking process sizes allow for more transistors per chip, and that those additional transistors allow chip designers to add special-purpose – "domain-specific" – cores and circuitry, there's a crying need for new ways of getting those specialized units to cooperate efficiently, thus minimizing power needs.
"It's all about hetereogeneous processing," said Davies. "It's the only game in town. It's the only way we can use all these transistors effectively to provide you, the developer community, with systems that will execute your code in a better way."
To allow heterogeous computing to spread out of the rarified aeries of expert programmers, Davies believes, high-level abstractions are required. As an example, he said that high-level abstractions have worked quite well in traditional CPU-based programming.
CPUs may be complex, Davies said, but programming tools and languages have managed to hide a good amount of that complexity. But on some level, this is changing. "When we move to multi-core CPU and multi-core GPUs, we're introducing a bit more complexity. That complexity is due to things like the memory-consistency models, the threading models – but there's much more."
In the brave new world that ARM and AMD envision, things will get tougher. "Heterogeneous computing, where we start moving code from one device to another, makes it more complex," Davies said. "There's no doubt about it."
Giving GPUs and other domain-specific circuits an equal role in a heterogeneous system requires new ways of thinking. "A lot of graphics developers, they got into the business to create stunning visuals. They didn't get in the business to argue with computer scientists about memory-consistency models," he said.
"So we need to abstract away from this complexity and present a simpler world to the developer...And if we don't do it, then developers simply won't use these new systems, they won't use the new capabilities we're giving them – or they'll use them badly and get it wrong."
But if coders don't use new capabilities or use them inefficiently, they're not to blame. "Either way, it's our fault, and you'll hate us for it – which is not a comfortable position for me to be in, so I'm going to try really hard to avoid that."
But efficient high-level abstractions are not enough. "If all providers of computer systems provide different abstractions," Davies said, "you'll hate us for it again. So we need standards, and we need a very small number of them."
Reminding his audience of a famous, wry quote from computer scientist and teacher Andrew Tannenbaum – "The nice thing about standards is that there are so many of them to choose from" – Davies admonished: "We've got to stop this."
The reason behind the need for standards is simple: money. "We have an economic imperative to enable you guys to reuse code. If you can't reuse your code across multiple platforms, then it's not going to work for you," Davies said. "And if it's not going to work for you, it doesn't work for us."
Davies is not a engineering-is-all purist. "I make no hesitation – as a geek, as a technologist – to stand here in front of you and talk about economics. I'm not embarrassed about this at all."
"You need to understand the costs and who pays them," he said. "Because if we come up with some clever stuff and move the costs all onto your side of the plate, you're going to be really unhappy."
The standards model, he said, "only works if everybody in the system is making money: the CPU designers, the GPU designers, the people making silicon chips, the people who make consumer electronics devices, the people who make the tools, and you guys making applications to run on those systems."
That's the type of thinking that underlies everything that ARM does, Davies said. "AMD is very much the same. This is very much an understanding that we share."
Whether a technological solution is correct or not is almost beside the point. In Davies' view. "Being right is easy. As technologists, as engineers, it's pretty easy for us to be right. You argue your case, and the facts will prove or disprove whether your right," he said. "Making money is the tricky bit."
Energy-efficient heterogeneous computing is the key to success. If IP designers and developers can solve that problem, he said, "everything else is easy, we all get rich, and I foresee a world of sunshine and drinks with little parasols in them." ®
Despite all his talk of standards, Davies didn't mention the one standard that's top-of-mind at the Summit: OpenCL. When this omission was pointed out to him in a post-keynote Q&A session, he said: "I don't talk about OpenCL because it's a given. It's an obvious. The world of open standards will win in the end."