---
title: kml_fft_mpi_plan_many_transpose
description: "假设有一个n0×n1的数组，以行为主顺序，在n0维上分布块。将其转换为在n1维上块分布的n1×n0数组 。更一般地说，可以执行数字元组的转置，输入和输出的块大小由用户指定。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0419.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0419.html
indexId: 7630078ff4da87a0cf611b8ef0b393eb3ba566b51fc9379b2d53ce082d38dd1761
---
# kml_fft_mpi_plan_many_transpose

假设有一个n0×n1的数组，以行为主顺序，在n0维上分布块。将其转换为在n1维上块分布的n1×n0数组 。更一般地说，可以执行数字元组的转置，输入和输出的块大小由用户指定。

#### 接口定义

C interface：

kml_fft_plan kml_fft_mpi_plan_many_transpose(ptrdiff_t n0, ptrdiff_t n1, ptrdiff_t howmany，ptrdiff_t block0, ptrdiff_t block1, double *in, double *out, MPI_Comm comm, unsigned flags);

kml_fft_plan kml_fftf_mpi_plan_many_transpose(ptrdiff_t n0, ptrdiff_t n1, ptrdiff_t howmany，ptrdiff_t block0, ptrdiff_t block1, float *in, float *out, MPI_Comm comm, unsigned flags);


#### 返回值

函数返回一个kml_fft(f)_plan类型的结构体指针。将该对象作为参数传入kml_fft(f/h)_execute函数中，将对当前提供的输入in和输出out执行FFT变换。

如果函数返回非空指针，则表示plan创建成功，否则表示创建失败。


#### 参数

| 参数名 | 数据类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| n0 | ptrdiff\_t | 输入FFT序列第一维的大小，约束：n0 ≥ 1。 | 输入 |
| n1 | ptrdiff\_t | 输入FFT序列第二维的大小，约束：n1 ≥ 1。 | 输入 |
| howmany | int | howmany表示指定多少个变换。 | 输入 |
| block0 | ptrdiff\_t | n0维度上的block大小。 | 输入 |
| block1 | ptrdiff\_t | n1维度上的block大小。 | 输入 |
| in | 双精度：double\* 单精度：float\* | 输入需要变换的数据。 | 输入 |
| out | 双精度：double\* 单精度：float\* | 输出快速傅里叶变换后的数据。 | 输出 |
| comm | MPI\_Comm | MPI通信器的句柄。 | 输入 |
| flags | unsigned int | 对于转置plan，这些标志所指示的分别是输出和/或输入被局部转置。 | 输入 |


#### 依赖

C: "kfft-mpi.h"


#### 示例

见kml_fft(f)_mpi_local_size_many_transposed的相关用例。
