SIMD-accelerated computer vision on a $2 microcontroller

(shraiwi.com)

38 points | by zdw 18 hours ago

3 comments

  • pjmlp 1 hour ago
    > For its price, the ESP32-S3 is a powerhouse of a microcontroller.

    Indeed, don't forget it is more powerful than computers like this one,

    https://en.wikipedia.org/wiki/Amstrad_PC1512

    • asimeqi 9 minutes ago
      That was my exact first computer with the CGA graphics, GEM Desktop, Locomotive Basic etc. All the software came in 4 360KB diskettes. The diskettes had each it's own beautiful color. There were 3 sample Basic programs that seemed to me quite advanced. One sample was a document management system. Another was a drawing program where you could draw with a mouse. Didn't know that GEM Desktop was made by Digital Reasearch. It was a very good windowing system. I believe it was based on MS-DOS. There was also a CP/M OS. So much software in only 1.2MB.
  • paaloeye 39 minutes ago
    ESP32-S3 SIMDs are super difficult to use unfortunately
    • meindnoch 32 minutes ago
      Just LLM it
      • ballmerpoint 28 minutes ago
        IME, they’re still pretty bad at getting specific implementation details of SIMD correct. The best I’ve done so far is to harness them to an actual piece of hardware and have them iterate until they see performance improvements but 1) Goodhart’s law, they tend to overfit the benchmark suite and 2) the resulting SIMD often becomes illegible.
        • TGower 0 minutes ago
          For a lot of SIMD applications, overfitting isn't really a concern. In my use case I need to calculate the sum of absolute difference between two vectors for autocorrelation, there's no real possibility for overfitting, either it gets the correct answer or it doesn't. LLMs are good at reading through the CPU manual and trying different optimizations.

          The resulting SIMD being illegible isn't an issue in my eyes, assembly isn't a language known for it's readability in general. If you want to really understand what the assembly is doing, ask your LLM to whip up a visualization and explanation tailored to your input data where you can see how each operation leads you to the final result.

  • peesem 1 hour ago
    nit: 5.1MP/s to 11.2MP/s is not an increase of 220%, it's an increase of 120%. it's 2.2x faster, but percentage increase starts at 0%, not 100%. 100% faster is double, 200% faster is triple.
    • seritools 34 minutes ago
      nit²: 2.2x as fast, or 2.2 times the speed; not 2.2x faster. same issue you pointed out.

      using faster with x/times is just begging for misunderstandings