単一の データ構造を作成し、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
);
});
}
答えは、次の考慮事項に依存すると思います。
1)「読み取り専用」の方法でvDSP_fft_zrip()
データ内(またはそれが指すデータ)にのみアクセスしますか?それとも、FFT 計算を実行する際に書き込まれるfftSetup
一時的なバッファ (スクラッチ スペース) があるのでしょうか?fftSetup
vDSP_fft_zrip()
2) そのようなデータがfftSetup
「読み取り専用」の方法でアクセスされている場合、複数のプロセス/スレッド/タスク/ブロックが同時にアクセスしても問題ありませんか? (複数のプロセスが読み取り用に同じファイルを開く可能性がある場合を考えていますが、必ずしも書き込みや追加用ではありません。この類推は適切ですか?)
FFTSetup
関連するメモとして、データ構造によってどれだけのメモリが占有されているのでしょうか? 調べる方法はありますか?(不透明なデータ型です。)