矢量化嵌套索引

时间:2013-11-05 22:48:34

标签: c performance indexing lapack blas

我有一个for循环来做索引:

for (int i=0; i<N; i++){
    a[i] = b[c[i]]
}

c是感兴趣的指数,int *,而bafloat *和操纵值。

但是,这需要很长时间(并且不能花那么长时间)。我想要一些矢量化版本,最有可能在BLAS / LAPLACK /等中找到。

我正在寻找nested_indexing(float * output_vector, float * input_vector, int * input_indices)

我已尝试浏览docs,但未找到任何内容。

1 个答案:

答案 0 :(得分:1)

vDSP_vgathr就是这样做的。它需要两个float *和一个int *。它相当于for (i=0; i<N; i++) a[i] = b[c[i]]

他们使用的措辞是

  

使用向量B的元素作为索引,将向量A的选定元素复制到向量C中的连续位置

也许也可以是顺序索引。我注意到找到这些模糊功能最困难的部分是找到在搜索中使用的正确单词。