假设检验和GPGPU

时间:2011-04-15 04:53:38

标签: statistics gpgpu simd

我是GPGPU和编程的新手。我很想知道是否可以使用CUDA在GPGPU(SIMD)中实现统计假设检验,如单样本Kolmogorov-Smirnov检验(K-S检验)和Levene检验?如果是这样,会有什么限制?

1 个答案:

答案 0 :(得分:1)

我刚刚阅读了有关这些测试的网络定义,但是,如果我理解正确,可以通过SIMD表达的并行性(特别是由CUDA实现)来适当加速它们。

在K-S测试中,必须计算N个样本的函数和估计值之间的差异,然后取最大差值。换句话说,必须对N个不同的值执行相同的操作,这恰好是SIMD(单指令,多数据)。

在Levene的测试中,在N个不同的值上再次存在相同的差异,平方和乘法。

SIMD可以做的是对N个值集的一种FOR语句,前提是迭代彼此独立。因此,在CUDA中,例如,编译器可以将迭代分配给图形设备的处理元素,以便并行执行,在单次迭代时对所有数据运行FOR循环。

CUDA工具包提供了一个特定的C / C ++编译器(NVCC),其中特殊指令被分派到GPGPU而不是CPU,因此被分发到它的并行处理元素。