Transpose#
The transpose operation permutes the dimensions of a tensor according to a permutation vector. For each output axis i, the value permutation[i] is the source axis taken from the input (so output_dim[i] = input_dim[permutation[i]], and strides are permuted the same way).
On supported cuDNN versions, the graph lowers to the backend transpose operation (CUDNN_BACKEND_OPERATION_TRANSPOSE_DESCRIPTOR).
Requirements#
Native backend transpose support requires cuDNN 9.22.0 or newer. Older toolkits may report
GRAPH_NOT_SUPPORTEDfor transpose nodes.
C++ API#
std::shared_ptr<Tensor_attributes>
transpose(std::shared_ptr<Tensor_attributes> input, Transpose_attributes attributes);
Transpose_attributes provides:
Transpose_attributes&
set_permutation(std::vector<int64_t> const& value);
Transpose_attributes&
set_name(std::string const& value);
Transpose_attributes&
set_compute_data_type(DataType_t value); // optional; types usually follow the input
The permutation must have length equal to the input rank, contain each index 0 .. rank-1 exactly once, and describe where each output axis reads from in the input.
Python API#
pygraph.transpose(input, permutation, name="")input: source tensor.
permutation: list of ints, same semantics as C++.
name: optional node name.
Example (C++)#
auto X = graph.tensor(/* ... */); // e.g. dims {2, 4}, row-major strides
auto Y = graph.transpose(
X,
cudnn_frontend::graph::Transpose_attributes()
.set_name("t")
.set_permutation({1, 0})); // dims become {4, 2}
Y->set_output(true);