The tests and notebooks maybe: not the unrolling and re-architecting to use masking SIMD-ification. I used to do SIMD stuff a lot over the last 17 years, and it would have taken me probably a day to do that (convert 7 algorithms, all with support for various wrapping/mirroring/clamping extent-handling, so around 800 raw source file lines of templated C++) to use SIMD - and well.
Then it probably would have taken me at least half a day to think about what tests to write and to make them.
It did it in around 5 minutes. I had to check it, and it wasn't perfect, but it compiled, ran, and was very close.
You could convert ~800 lines of scalar float processing templated C++ code that used mixins for wrapping logic and float/double to well-optimised SIMD code for two different ISAs (without using wrapper class helpers, it wrote the full intrinsics) in under 5 minutes and write tests for them at the same time?
The tests and notebooks maybe: not the unrolling and re-architecting to use masking SIMD-ification. I used to do SIMD stuff a lot over the last 17 years, and it would have taken me probably a day to do that (convert 7 algorithms, all with support for various wrapping/mirroring/clamping extent-handling, so around 800 raw source file lines of templated C++) to use SIMD - and well.
Then it probably would have taken me at least half a day to think about what tests to write and to make them.
It did it in around 5 minutes. I had to check it, and it wasn't perfect, but it compiled, ran, and was very close.
Sorry, but this is just not a complex or hard task in image processing. Image resizing is a staple algorithm as common as bread and butter.
You could convert ~800 lines of scalar float processing templated C++ code that used mixins for wrapping logic and float/double to well-optimised SIMD code for two different ISAs (without using wrapper class helpers, it wrote the full intrinsics) in under 5 minutes and write tests for them at the same time?
It's the time compression I'm impressed with.
1 reply →