Я решаю проблему источника вознаграждения, показанного ниже
https://www.bountysource.com/issues/73221262-optimize-numpy-simd-algorithms-for-power-vsx
И я должен понимать векторизованный код simd в numpy, показанном ниже
https://github.com/numpy/numpy/blob/master/numpy/core/src/umath/simd.inc.src#L222
И я нашел много «@» в исходном коде. Это похоже на подстановку строки.
вот так
/**begin repeat
* #TYPE = CFLOAT, CDOUBLE#
* #type= npy_float, npy_double#
* #esize = 8, 16#
*/
Это похоже на список строки подстановки
static NPY_INLINE int
run_binaryavx512f@func@_@TYPE@(char **args, const npy_intp *dimensions, const npy_intp *steps)
{
#if defined HAVE_ATTRIBUTE_TARGET_AVX512F_WITH_INTRINSICS && defined NPY_HAVE_SSE2_INTRINSICS
if (IS_BINARY_STRIDEONE(@esize@, 64)) {
AVX512F@func@_@TYPE@(args, dimensions, steps);
return 1;
}
else
return 0;
#endif
return 0;
}
Но я не могу понять механизм замены строки. Я не могу найти документ об этом вообще.
Можете ли вы дать объяснение?