技术背景
Cython是Python的一个超集,可以使用Pythonic的语法写出接近于C语言的性能,可以用于将Python编程过程中遇到的Bottleneck模块改写成Cython以达到加速的效果。前面写过一些关于Cython加速计算的文章。又因为Cython编译过程中会先转为C语言代码,然后再编译为动态链接库或者可执行文件,所以很自然的可以在Cython中调用C语言函数。用这种方法,还可以直接调用CUDA C函数。在这篇文章中,我们要使用Cython结合CUDA C的方法来实现一个CUDA版本的Gather函数,从一个数组中根据索引数组,输出对应的数组。相当于numpy中的result=source[index]。
接口头文件
我们定义一个cuda_index.cuh的头文件,用于指定C函数接口形式:
#include <stdio.h>
extern "C" int Gather(float *source, int *index, float *res, int N, int M);
其中source是原始数组,index是索引数组,res是结果数组,N是索引的维度,M是原始数组的维度。
异常捕获头文件
这里使用的是前面一篇CUDA异常捕获中用到的头文件error.cuh

最低0.47元/天 解锁文章
374

被折叠的 条评论
为什么被折叠?



