gpt4 book ai didi

python - 将英特尔的 __attribute__((vector)) 与 swig 一起使用

转载 作者:行者123 更新时间:2023-11-30 04:03:20 28 4
gpt4 key购买 nike

我想用 c 编写一个函数,然后我可以从 python 调用它。该函数本质上是将两个数字相加,但如果您将数组传递给该函数,它将按元素相加并返回。英特尔有这个 __attribute__((vector)) 本质上可以让我们做到这一点。但是,如果我在 .i 文件中使用 __attribute__((vector)),swig 接口(interface)会生成错误。如果我不这样做,该函数不会将数组作为输入并抛出异常。谁能告诉我这样做的正确方法?

例子.c

__attribute__((vector)) double add(double x, double y){                         
return x+y;
}

例子.i

%module example                                                                 
%{
extern __attribute__((vector)) double add(double, double);
%}

extern double add(double, double);

最佳答案

您不能像那样将 SIMD 函数导出到 Python。对于初学者来说,Python 有自己的表示 float 的方式(而且效率不高)。即使它有效,所有矢量化性能提升也会在 SWIG 接口(interface)中丢失。

如果可能的话,我建议您将性能关键型计算作为一个整体移至 C,或者坚持使用普通的 Python 列表/元组而不是 SIMD 数组。

关于python - 将英特尔的 __attribute__((vector)) 与 swig 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24502448/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com