是否可以创建单个 FFTSetup数据结构并使用它同时执行多个FFT计算?会有类似下面的工作吗?
FFTSetup fftSetup = vDSP_create_fftsetup(
16, // vDSP_Length __vDSP_log2n,
kFFTRadix2 // FFTRadix __vDSP_radix
);
NSAssert(fftSetup != NULL, @"vDSP_create_fftsetup() failed to allocate storage");
for (int i = 0; i < 100; i++)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),
^{
vDSP_fft_zrip(
fftSetup, // FFTSetup __vDSP_setup,
&(splitComplex[i]), // DSPSplitComplex *__vDSP_ioData,
1, // vDSP_Stride __vDSP_stride,
16, // vDSP_Length __vDSP_log2n,
kFFTDirection_Forward // FFTDirection __vDSP_direction
);
});
}
Run Code Online (Sandbox Code Playgroud)
我想答案取决于以下几点:
1)是否vDSP_fft_zrip()只fftSetup以"只读"方式访问其中的数据(或其指向的数据)?或者是否有一些临时缓冲区(临时空间)在执行其FFT计算时fftSetup写入vDSP_fft_zrip()?
2)如果fftSetup 以"只读"的方式访问类似的数据,多个进程/线程/任务/块是否可以同时访问它?(我正在考虑这样一种情况:多个进程可以打开同一个文件进行读取,但不一定是写入或追加.这个类比是否合适?)
在相关的说明中,FFTSetup数据结构占用了多少内存?有没有办法找出来?(这是一种不透明的数据类型.)
multithreading objective-c grand-central-dispatch ios accelerate-framework