c - 我无法理解 numpy simd 矢量化代码中 @ 的含义和机制
问题描述
我正在解决如下所示的赏金来源问题
https://www.bountysource.com/issues/73221262-optimize-numpy-simd-algorithms-for-power-vsx
我必须理解下面显示的 numpy 中的 simd 矢量化代码
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;
}
但我无法理解替换字符串的机制。我根本找不到关于这个的文件。
你能解释一下吗?
解决方案
推荐阅读
- javascript - 显示每月的第二个星期五 - Javascript
- flutter - Firestore 查询文档 ID 不在数组中的位置
- flutter - 任务':sms:verifyReleaseResources'的执行失败和Flutter应用程序构建的线程“main”java.lang.NullPointerException中的异常
- java - 使用 alpha 橡胶擦除画布位图
- python - 如何找到0和1数组中元素的差异
- scala - 测试一些重内存消耗的代码
- flutter - 如何根据颤动中的父级调整图标大小
- ios - AdMob - 应用程序 ID 无效
- ios - Swift Maps:在隐式展开 Optional 值时意外发现 nil
- python - 避免重复字典键的pythonic方法