iOS上GPU上的快速傅立叶变换

iOS上GPU上的快速傅立叶变换,ios,fft,gpgpu,vdsp,Ios,Fft,Gpgpu,Vdsp,我正在为iOS(即iPhone或iPad)实现计算密集型应用程序,这些应用程序大量使用快速傅立叶变换(以及一些信号处理操作,如插值和重采样)。允许在iOS上运行FFT的最佳库和API是什么 我简要地研究了Apple Metal和Apple vDSP。我不确定vDSP是否使用GPU,尽管它似乎高度并行化并使用SIMD。Metal似乎允许为计算密集型应用程序访问GPU,但我无法找到FFT和基本信号处理操作库(类似于AMD的clFFT)。苹果提供这样的图书馆吗 是否有其他适用于计算密集型应用程序的、利

我正在为iOS(即iPhone或iPad)实现计算密集型应用程序,这些应用程序大量使用快速傅立叶变换(以及一些信号处理操作,如插值和重采样)。允许在iOS上运行FFT的最佳库和API是什么

我简要地研究了Apple Metal和Apple vDSP。我不确定vDSP是否使用GPU,尽管它似乎高度并行化并使用SIMD。Metal似乎允许为计算密集型应用程序访问GPU,但我无法找到FFT和基本信号处理操作库(类似于AMD的clFFT)。苹果提供这样的图书馆吗

是否有其他适用于计算密集型应用程序的、利用GPU for iOS的API和库


谢谢。

vDSP实际上使用了内置(从iPhone 3GS开始)NEON矢量运算处理器,正如您已经说过的,它是一个SIMD引擎,对于某些任务(包括FFT)来说速度非常快

我没有在GPU上计算FFT的经验,但我怀疑它会比vDSP中的霓虹灯指令更快,因为它的唯一用途是这些媒体和信号处理相关的任务

vDSP在引擎盖下使用Arm霓虹灯指令,使用起来非常简单。如果你想下来和脏,你也可以手动使用霓虹灯指令集,但我认为即使与VDSP运行时的智能相符合也将是一个挑战,特别是如果你只需要像FFT这样的框外函数。
如果你想自己测试NEON引擎,有一个很棒的Android设备as APK,它可以测试常规与NEON计算。您必须注意的唯一一点是,如果您的数据大于一级缓存,二级缓存访问将成为限制因素,如果您甚至超过这一限制因素,则不会有明显的运行时优势。

vDSP和Accelerate使用CPU上的向量指令来并行化和加速信号处理任务

关于在iOS系统上通过GPGPU进行FFT,我认为目前还没有这样的库。许多信号处理算法都是在GPGPU框架中实现的,但似乎不支持FFT,因为这些算法是用OpenGL ES 2.0着色器实现的。同样的情况也会发生


OpenGL ES 3.1计算着色器在iOS系统上不受支持,因此您应该查看Metal。您会发现它正是您所需要的。它是用纯Swift写的

看看我的答案:


虽然其中的代码使用FFT进行音频处理,但它可以应用于任何信号

vDSP和Accelerate do。@quellish do vDSP和Accelerate在GPU上运行FFTs?@JoeBlow这不是一个坏问题,但它正在请求对软件库的建议(这被认为是SO的主题外)。嘿,Sleuth,OP只是在寻找所有API、工具和技术来实现所讨论的目的,这是一个非常有趣的主题。因为对“图书馆”的“法律”解释而失去这些问题,真是太遗憾了。A.shame@JoeBlow我不认为在使用GPU进行iOS操作时会产生非常有趣的讨论。但这一点不必忽略:问题可以重新表述,以关注特定库的技术优点,并完全围绕主题(例如,OP是否存在vDSP的特定问题?是否存在vDSP实施(GPU vs SIMD)导致OPs应用程序性能瓶颈的特定场景,…)