我想在c中编写一个函数,然后可以从python调用它。该函数本质上将两个数字相加,但是如果将数组传递给该函数,它将按元素相加并返回。英特尔拥有这一点__attribute__((vector))
,这实际上使我们能够做到这一点。但是,如果__attribute__((vector))
在.i
文件中使用swig界面,则会生成错误。如果我不这样做,则该函数不会将数组作为输入并引发异常。谁能让我知道正确的方法?
example.c
__attribute__((vector)) double add(double x, double y){
return x+y;
}
例子
%module example
%{
extern __attribute__((vector)) double add(double, double);
%}
extern double add(double, double);
这样您将无法仅将SIMD函数导出到Python。对于初学者来说,Python有自己的表示浮点数的方式(而不是一种非常有效的方式)。即使有效,所有矢量化性能的提高也会在SWIG界面中丢失。
如果可能的话,我建议您将对性能至关重要的计算整体上移至C,或者只是坚持使用普通的Python列表/元组而不是SIMD数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句