2014-07-01 36 views
1

我想在c中编写一个函数,然后我可以从python调用函数。该函数实质上添加了两个数字,但如果将数组传递给该函数,则会将它们添加到元素中并返回。英特尔有这个__attribute__((vector)),这基本上让我们做到这一点。但是,如果我在.i文件中使用__attribute__((vector)),则swig接口会生成错误。如果我不这样做,该函数不会将数组作为输入并引发异常。任何人都可以让我知道正确的方法来做到这一点?使用intel的__attribute __((vector))与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);            

回答

2

你将不能够只是出口SIMD功能到Python这样的。对于初学者来说,Python有自己的方式来表示浮点数(而不是非常有效的)。即使它起作用,所有向量化性能增益都将在SWIG接口中丢失。

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

相关问题