如何在Intel的自动矢量化中允许用户定义的功能?

用户名

假设我有以下代码:

class Vec3
{
    // ... deleted, not needed...

    public:
        Vec3 operator+(const Vec3 &rh) const;
};

void test(Vec3 *a, Vec3 *b, Vec3 *c, size_t len)
{
    for(size_t i = 0; i < len; i++)
        c[i] = a[i] + b[i];
}

这似乎是向量化的普通示例,但是由于operator +()是用户定义的函数,因此该循环不会自动向量化。我也尝试__declspec(vector)按照此处的建议进行添加,但这会导致编译错误:

error: return type with class/struct/union is not supported in vector function

也许我误解了这个前缀的作用。如何使函数可矢量化?

提前致谢!

Anoop-英特尔

仅当函数的参数属于以下类别之一时,才能转换传统函数(这是当前限制,网址https://software.intel.com/sites/products/documentation/doclib/iss/2013/在“使用向量声明的限制”下的编译器/cpp-lin/GUID-42986DEF-8710-453A-9DAC-2086EE55F1F5.htm):

  • (无符号)8、16、32或64位整数
  • 32或64位浮点64或128位复数
    指针(C ++引用被视为指针数据类型)

您的程序使用的是用户定义的数据类型Vec3,该数据类型不属于上述四个类别。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

numpy矢量化功能

来自分类Dev

如何在SAS / IML中进行矢量化?

来自分类Dev

如何在 Pandas DataFrame 上对循环进行矢量化

来自分类Dev

包含比较的循环的自动矢量化

来自分类Dev

Numba中的组合矢量化功能

来自分类Dev

矢量化自定义功能在熊猫中无法正常工作

来自分类Dev

如何矢量化此替换操作?

来自分类Dev

如何使我的网站徽标矢量化?

来自分类Dev

如何对熊猫行动进行矢量化

来自分类Dev

击败_intel_fast_memcpy的矢量化memcpy?

来自分类Dev

与自动矢量化进行边缘检测相比,如何执行具有更好性能的手动代码矢量化

来自分类Dev

numpy矢量化

来自分类Dev

熊猫矢量化

来自分类Dev

矢量化算法

来自分类Dev

矢量化列表

来自分类Dev

使用位操作循环的g ++自动矢量化

来自分类Dev

展开用于自动矢量化的指针增量循环

来自分类Dev

朱莉娅的矢量化“输入”功能?

来自分类Dev

加速符号化和矢量化功能

来自分类Dev

具有data.table的矢量化功能

来自分类Dev

pytorch的二维矢量化功能

来自分类Dev

如何在Matlab中对结构进行矢量化处理?

来自分类Dev

如何在MATLAB中矢量化这些while并嵌套for循环?

来自分类Dev

如何在MATLAB中将符号表达式转换为矢量化函数?

来自分类Dev

如何在MATLAB中矢量化慢速代码以提高性能?

来自分类Dev

如何在numpy中使用某些固定参数对函数进行矢量化处理?

来自分类Dev

矢量化矩阵的某些部分后,如何在Matlab中重塑矩阵?

来自分类Dev

如何在Eigen / C ++中进行矢量化:在条件下设置列

来自分类Dev

如何在MATLAB中实现此代码段的矢量化版本?