avatar
请问一个GPU做FFT的问题# ComputerGraphics - 电脑图形处理
x*d
1
如果我要对一个图像做成百上千次傅里叶变换,有没有办法并行?谢谢。。。
avatar
S*I
2
OpenCL

【在 x**********d 的大作中提到】
: 如果我要对一个图像做成百上千次傅里叶变换,有没有办法并行?谢谢。。。
avatar
x*d
3
谢谢!! 再请教一下,OpenCL是在上千次傅里叶变换之间并行,还是说在单次的傅里叶
变换中使用并行算法,还是both? 另外NV的显卡可用么?

【在 S**I 的大作中提到】
: OpenCL
avatar
S*I
4
如果是N卡,可以用CUDA和CUFFT library。

【在 x**********d 的大作中提到】
: 谢谢!! 再请教一下,OpenCL是在上千次傅里叶变换之间并行,还是说在单次的傅里叶
: 变换中使用并行算法,还是both? 另外NV的显卡可用么?

avatar
x*d
5
CUFFT可以在上千次傅里叶变换之间并行么?我看例子都是单次的傅里叶变换中并行。。

【在 S**I 的大作中提到】
: 如果是N卡,可以用CUDA和CUFFT library。
avatar
S*I
6
应该可以吧,看这个API:
cufftResult
cufftPlanMany(cufftHandle *plan, int rank, int *n, int *inembed,
int istride, int idist, int *onembed, int ostride,
int odist, cufftType type, int batch);
Creates a FFT plan configuration of dimension rank, with sizes specified in
the array n. The batch input parameter tells CUFFT how many transforms to
configure. With this function, batched plans of 1, 2, or 3 dimensions may be
created.
... cufftPlanMany() allows use of more complicated data layouts and batched
executions. ... In the worst case, the CUFFT Library allocates space for 8*
batch*n[0]*..*n[rank-1] cufftComplex or cufftDoubleComplex elements (where
batch denotes the number of transforms that will be executed in parallel, ...

。。

【在 x**********d 的大作中提到】
: CUFFT可以在上千次傅里叶变换之间并行么?我看例子都是单次的傅里叶变换中并行。。
avatar
x*d
7
太帅了!我试试。。

in
be
batched

【在 S**I 的大作中提到】
: 应该可以吧,看这个API:
: cufftResult
: cufftPlanMany(cufftHandle *plan, int rank, int *n, int *inembed,
: int istride, int idist, int *onembed, int ostride,
: int odist, cufftType type, int batch);
: Creates a FFT plan configuration of dimension rank, with sizes specified in
: the array n. The batch input parameter tells CUFFT how many transforms to
: configure. With this function, batched plans of 1, 2, or 3 dimensions may be
: created.
: ... cufftPlanMany() allows use of more complicated data layouts and batched

avatar
x*d
8
啊,我仔细看了一下,这个貌似不行也。。这个是对上千张图像一起做一次傅里叶变换
吧。。。我想对一张图像循环做上千次傅里叶变换。。。。

in
be
batched

【在 S**I 的大作中提到】
: 应该可以吧,看这个API:
: cufftResult
: cufftPlanMany(cufftHandle *plan, int rank, int *n, int *inembed,
: int istride, int idist, int *onembed, int ostride,
: int odist, cufftType type, int batch);
: Creates a FFT plan configuration of dimension rank, with sizes specified in
: the array n. The batch input parameter tells CUFFT how many transforms to
: configure. With this function, batched plans of 1, 2, or 3 dimensions may be
: created.
: ... cufftPlanMany() allows use of more complicated data layouts and batched

avatar
S*I
9
这个本质上没法并行啊:后一个FFT依赖于前一个FFT的结果......

【在 x**********d 的大作中提到】
: 啊,我仔细看了一下,这个貌似不行也。。这个是对上千张图像一起做一次傅里叶变换
: 吧。。。我想对一张图像循环做上千次傅里叶变换。。。。
:
: in
: be
: batched

avatar
x*d
10
也不一定不能吧。。。比如流水线什么的?

【在 S**I 的大作中提到】
: 这个本质上没法并行啊:后一个FFT依赖于前一个FFT的结果......
avatar
S*I
11
这个估计难度比较大。

【在 x**********d 的大作中提到】
: 也不一定不能吧。。。比如流水线什么的?
avatar
A*l
12
把二维变成一维,就可以做流水了,用openMP也可以。

【在 x**********d 的大作中提到】
: 也不一定不能吧。。。比如流水线什么的?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。