Raspberry Pi GPU Compute and Dual 4K
Q: Speaking as a long-time & vocal Pi user, I would first like to thank you for pioneering and establishing this class of computing devices. I'd also like to thank you for all the wonderful improvements in the Pi 4. It's better than I dared hope, for the price. As I reflect on that achievement, I'm duly impressed. As for my question, I wonder whether we can anticipate OpenCL support, for the VideoCore VI GPU?
I would like to close with a suggestion that, in future generations, the GPU hardware receive more focus, in order to balance out against the rapid series of improvements that have gone into the CPU cores. GPUs offer the most power-efficient form of programmable hardware for tackling a wide range of problems, not to mention playing an essential role in the user experience with 4K displays.
A: Thank you for the kind words. You can see from the blog post just how many people have contributed to the program: it's been the most remarkable thing to be involved with.
The hardware is certainly capable of it, and I am aware of at least one proprietary OpenCL implementation for VideoCore V. It may be that OpenGL ES Compute Shaders (in ES 3.1) are both a better abstraction and quicker to implement, so we might get those first.
FWIW, I think gross GFLOP numbers, and the OpenArena benchmarks that have appeared, understate the uplift we've just delivered (largely because VideoCore IV is extremely good at Quake III-type rendering for its age). On modern, compute-heavy benchmarks I think we'll see >4x increase. But yes, more work to be done here.
I absolutely agree with your suggestion to focus more on GPU hardware in future Raspberry Pi computer products. I remember chatting with Sophie Wilson (co-creator with Steve Furber of the ARM1) a few years ago. She was concerned that with Raspberry Pi 1, we were teaching children an obsolete view of how computers actually work (single core, homogenous compute). Bringing GPU compute into the mix doesn't just enable cool projects: it helps address that concern too.
Q: Great work with the Pi 4! With all the GPU power present on the Pi 4, do you expect to support ways to use it for non-graphical use (eg machine learning)? This has been possible before but it feels like it didn't really take off. What barriers do you see with regard to this?
A: I'd certainly like to see it put to use for (e.g.) machine learning acceleration. Historical barriers include:
- Lack of tooling (no OpenCL etc): This meant you had to hand-roll everything in QPU assembler. I did a couple of nice kernels, and Pete Warden (now at Google) did some ML, but it's tough going.
- Lack of good abstractions: The ratio of GPU FLOPS to CPU FLOPS on devices like 2711 is much lower than on a PC with a modern graphics card, so you need abstractions that don't come with a lot of overhead; otherwise you end up in a situation where you're better off just writing ARM code. OpenCL is, I think, quite a bad abstraction.
Hopefully once we get OpenGL ES Compute Shaders we might start to see some progress in this area.
Q: You said, “OpenCL is, I think, quite a bad abstraction”, is that in regards to machine learning or in general?
A: I mean in general. It's not particularly good at "getting the compute out", certainly compared to hand-crafted GPU assembler (which sucks for other reasons).
Q: My understanding is that OpenGL Compute Shaders are essentially a subset of OpenCL. Given that, what are your concerns over OpenCL?
A: My impression is that they're the subset of OpenCL that's actually useful/easy to map to hardware. Perhaps my complaint about OpenCL is that it's too expressive, letting you write complicated stuff that looks good but actually ends up forfeiting 90% of your theoretical compute capability in translation.
Q: Why did you decide to add two display outputs?
Q: Double 4K monitor support is amazing. What made you decide on the two Micro HDMI connectors instead of one DisplayPort over USB Type-C for example? Could two regular HDMI sockets be stacked on top of each other?
A: USB-C is rather a poor connector for high speed signals (Google "short to VBUS" for details), and we would have either needed to include protection silicon or put up with a substantial in-field failure rate. We did look at stacked type-A, but it would have dominated the board z height and we were a bit squeamish about the torque on the board when inserting the upper connector, and the EMC implications of routing high-speed signals to it.
Q: One of the really great things about the previous Raspberry Pi generations is that you could take the bare board to basically any place in the world that has electricity and hook it up using technology which is omnipresent, and taken for granted (microUSB for power, HDMI for display, SD/microSD cards for storage, USB for keyboard/mouse). Now with dual Micro HDMI, this ability is somewhat compromised. Are you sure that this was worth it and going to stick with that decision, or are you open to make a quick board revision in case the feedback about this is negative?
A: I definitely think this was the right decision; in any case quick board revisions don't really exist when you're shipping ~500ku a month and need to ensure continuity of supply. I don't think it's a significant burden to carry a $3 micro HDMI male to HDMI female adapter if you want to be able to integrate with arbitrary bits of kit at your destination.
Q: Will there be support for HDMI input on the Raspberry Pi either through the second micro-HDMI connector or through a HAT in the future?
A: If we did this, it would be via a HAT. In fact (I think this is public knowledge) we did prototype one a long time ago. Also in fact (and this isn't public knowledge) we use them as part of the test jig for Raspberry Pi 4 production, to verify that HDMI output is happening correctly. The big challenge is that you struggle to do more than 720p over the two-lane CSI connector. Maybe we should revisit this once we've determined if the 28nm MIPI IP can reliably support 1.5Gbps operation.
Q: I'm a huge fan of the official Raspberry Pi 7" touchscreen. Are there any plans to release a larger 10" touchscreen down the road? Any possibility of an updated 7" touchscreen that will position the Pi in reverse (arranged so the power cable does not plug in on top)? Will there be an updated case for the 7" touchscreen for the Pi 4?
A: An updated touchscreen is drifting towards the top of our to do list. Definitely hear you on plug positioning. We don't do a touchscreen case at the moment, but I'm aware of at least one third party who is investigating a Pi 4 + touchscreen case.