我对GPGPU和编程非常陌生。我想知道,像单样本Kolmogorov-Smirnov检验(K-S检验)和Levene检验这样的统计假设检验是否可以使用CUDA在GPGPU (SIMD)中实现?如果是这样的话,限制会是什么?
发布于 2011-08-02 04:24:10
我刚刚读到了关于这些测试的网络定义,但是,如果我理解正确的话,它们可以通过SIMD所表达的那种并行性来适当地加速(特别是由CUDA实现的)。
在K-S检验中,必须计算函数与N个样本的估计值之间的差值,然后取最大差值。换句话说,人们必须对N个不同的值执行相同的操作,这正是SIMD (单指令,多数据)。
在Levene的测试中,在N个不同的值上又有相同的差异,平方和乘法。
SIMD可以做的是在N个值集上执行一种FOR语句,前提是迭代彼此独立。因此,例如在CUDA中,编译器可以将迭代分配给图形设备的处理元件,使得在并行执行时,针对单个迭代的时间内的所有数据运行for循环。
CUDA工具包提供了一个特定的C/C++编译器(NVCC),其中将特殊指令分派到GPGPU而不是CPU,从而分配给它的并行处理元素。
https://stackoverflow.com/questions/5672533
复制相似问题