@Niels_Dekker Well done!
To add more data
to the Visual C++ 2017 Release results, here are some metrics created on Linux with GCC 7.3.0 and ICC (the Intel Compiler) 19.0.0.120. These results are created for this ultrasound application and your Gist.
They are very interesting! All we can conclude is that neither implementation is consistently faster across compilers!
That said, the potential of these new image range classes to be used with STL algorithms is quite compelling because of potential future benefits:
- C++17 Parallel STL execution policies
- Intel
parallelstl
TBB-backed implementation of the above - OpenCL / SYCL GPU / FPGA implementation of parallel STL via ComputeCPP or triSYCL
- AMD support
- Potential NVidia support
Granted that we would have to figure out a good way to control data synchronization in the GPU case.
+1 to this API – setting the constant value separately from the range initialization is easier to follow, in my opinion. That said, this is not implemented, and maybe we could implement it in the future if it is really compelling. As an itk::Experimental
namespaced feature, we should keep experimenting with nice things!
Let’s merge the patch, which @hjmjohnson has kindly migrated to GitHub!