On 9/23/22 20:18, Towner, Daniel wrote:
I'd be interested in a SIMD library. Some thoughts below, in no particular order.
Is there public source code and documentation available online? Note that www.intel.com and other Intel sites are not accessible in some regions, so I don't consider those public.
We would put it up at github.com/intel alongside our other open-source contributions. I can't test that myself to see if that is accessible in all regions, but I assume it is might be more accessible than our main website. It is currently undergoing internal review before being published.
GitHub should be fine, thank you. Looking forward to see the code and docs.
Using googletest for tests might be problematic as we currently don't have it in pre-requisites, and I don't think there's infrastructure for installing it from an external source. Unless this is resolved somehow, porting tests to one of the Boost solutions will probably be desired.
I suspected that would be the case. At the moment we use type parameterised tests: we list all the valid simd element types and all the valid sizes, and then gtest checks every combination against a suite of appropriate tests. So all simds would have basic operations checked (constructors, indexing, permuting, etc), then simd<_Float16|float|double> would add in a floating-point test suite, simd<unsignedX> would add in shifts and rotates, and so on.
Boost.Test has a similar feature: https://www.boost.org/doc/libs/1_80_0/libs/test/doc/html/boost_test/tests_or... One other question. Does the library offer any utilities for implementing runtime dispatch between code branches that use different instruction sets?