我想用c编写一个函数,然后我可以从python调用它。函数实际上添加了两个数字,但是如果将数组传递给函数,它将按元素添加它们并返回。英特尔有一个__attribute__((vector))
,本质上是允许我们这样做的。但是,如果在__attribute__((vector))
文件中使用.i
,则swig接口将生成错误。如果我不这样做,函数就不会将数组作为输入并抛出异常。有人能让我知道正确的方法吗?
example.c
__attribute__((vector)) double add(double x, double y){
return x+y;
}
example.i
%module example
%{
extern __attribute__((vector)) double add(double, double);
%}
extern double add(double, double);
发布于 2014-06-30 22:44:03
您将不能像这样将SIMD函数导出到Python。首先,Python有自己的表示浮点数的方法(而且不是非常有效)。即使它有效,所有向量化性能增益也将在SWIG接口中丢失。
我建议您将性能关键计算作为一个整体移到C中,如果可能的话,或者只使用普通的Python列表/元组,而不是SIMD数组。
https://stackoverflow.com/questions/24502448
复制相似问题