4 ms·
> However, the Hexagon DSPs are notoriously hard to program. I disagree the Hexagon is "hard" to program - the HVX intrinsics are fairly straightforward if you
by jgr0007 3y ago
> However, the Hexagon DSPs are notoriously hard to program.
I disagree the Hexagon is "hard" to program - the HVX intrinsics are fairly straightforward if you've used neon/avx/etc. The problem is that you don't get access to the HMX/HTA/(whatever they call the NPU currently), just HVX. So for running on DSP your options are (1.) Qualcomm's Hexagon SDK which doesn't give you access to the tensor hardware, and (2.) their SNPE SDK, which actually has access to HMX/HTA/etc, but doesn't let you program against the hardware directly. Instead, SNPE is supposed to convert your caffe/tf/onyx/torch models to Qualcomm proprietary format so it can map ops to the most appropriate hardware. What actually happens is that their conversion tools fall apart the first time you don't use one of their AlexNet/ResNet vanilla examples and try to convert a prod-grade model. Combine the brittleness of their conversion tools with the lack of documentation/support and it becomes impossible to use the hardware.
All that being said, would be interested to hear if anyone has had luck with other means of using their (admittedly impressive) hardware. Maybe a better approach would be to try using Halide for Hexagon and OpenCl for Adreno? They were also going to release a QNN update this year or next year - not sure if they've allowed anyone access to it. Its really a shame that the hardware is so good, but the software is so clunky.
- wyldfire 3y ago> I disagree the Hexagon is "hard" to program - the HVX intrinsics are fairly straightforward if you've used neon/avx/etc. The difficulty comes in launching your code on the device from the apps core. It's a bit unlike many other typical conventions for this. I agree that once you're executing code there that "HVX intrinsics are fairly straightforward" etc
- brutus1213 3y agoSNPE seems like the old way and QNN is the future as I understood it. I ran into some engineers at a recent AI conference and it appeared even they could not explain how to do model optimization in a sane way. What the heck is Qualcomm thinking? For my work, I just decided to ignore their accelerators for now.