小弟初涉并行计算,很多基本问题都不明白,向各位前辈请教一件事。


我要做的问题是进行50次独立的FFT运算。
FFT本身可以并行化,我打算使用现成的FFTW函数。
50次独立运算也可以并行化。


我现在的问题是不知道如何估计问题的规模大小。
假设我可以申请200个节点,每个节点总共16GB内存,每个节点12个核(core)。
那么基于以上计算资源,我可以计算的最大规模是多少?如何进行估算?


我按照自己的想法估算了一下,不知道对不对。
如果我的问题有N个数据,那么FFT的总计算量是 N*log2(N)。
数据为单精度复数,占8字节,那么总的存储量就是 8*N*log2(N) Bytes。
一次FFT不能超过一个节点的总内存(这点存疑?),所以 8*N*log2(N) Bytes 必须小于16GB,于是可以估计出N的大小。
200个节点中申请50个,用来进行50次独立运算;而每个节点下面的12个核用来进行并行FFT(FFTW)。


最后一个问题:我还没有仔细看FFTW的说明,它的线程数是自动调节的,还是用户定义的?


谢谢前辈们!!