fused_rope.h#

Functions

void nvte_fused_rope_forward(
const NVTETensor input,
const NVTETensor cu_seqlens,
const NVTETensor freqs,
const NVTETensor start_positions,
NVTETensor output,
const NVTE_QKV_Format qkv_format,
const bool interleaved,
const int cp_size,
const int cp_rank,
const int s,
const int b,
const int h,
const int d,
const int d2,
const int stride_s_or_t,
const int stride_b,
const int stride_h,
const int stride_d,
cudaStream_t stream,
)#

Apply rotary positional embedding to the input tensor.

Parameters:
  • input – [in] Input tensor for fused rope.

  • cu_seqlens – [in] The cumulative sum of sequence lengths tensor. (Required for the thd format, empty tensor for other formats)

  • freqs – [in] The freqs tensor.

  • start_positions – [in] The beginning offsets for applying RoPE embeddings.

  • output – [out] Output tensor.

  • qkv_format – [in] QKV format.

  • interleaved – [in] Whether to use interleaved rotary position embedding.

  • cp_size – [in] Context parallel world size.

  • cp_rank – [in] Context parallel rank.

  • s – [in] Length of the s dimension of input.

  • b – [in] Length of the b dimension of input.

  • h – [in] Length of the h dimension of input.

  • d – [in] Length of the d dimension of input.

  • d2 – [in] Length of the d dimension of freqs.

  • stride_s_or_t – [in] Stride of the s (sbhd/bshd)/t (thd) dimension of input.

  • stride_b – [in] Stride of the b dimension of input. (0 for thd).

  • stride_h – [in] Stride of the h dimension of input.

  • stride_d – [in] Stride of the d dimension of input.

  • stream – [in] CUDA stream used for the operation.

void nvte_fused_rope_backward(
const NVTETensor output_grads,
const NVTETensor cu_seqlens,
const NVTETensor freqs,
const NVTETensor start_positions,
NVTETensor input_grads,
const NVTE_QKV_Format qkv_format,
const bool interleaved,
const int cp_size,
const int cp_rank,
const int s,
const int b,
const int h,
const int d,
const int d2,
const int stride_s_or_t,
const int stride_b,
const int stride_h,
const int stride_d,
cudaStream_t stream,
)#

Compute the backward of the fused rope.

Parameters:
  • output_grads – [in] Incoming gradient tensor for backward.

  • cu_seqlens – [in] The cumulative sum of sequence lengths tensor. (Required for the thd format, empty tensor for other formats)

  • freqs – [in] The freqs tensor.

  • start_positions – [in] The beginning offsets for applying RoPE embeddings.

  • input_grads – [out] Input gradient tensor to calculate.

  • qkv_format – [in] QKV format.

  • interleaved – [in] Whether to use interleaved rotary position embedding.

  • cp_size – [in] Context parallel world size.

  • cp_rank – [in] Context parallel rank.

  • s – [in] Length of the s dimension of output_grads.

  • b – [in] Length of the b dimension of output_grads.

  • h – [in] Length of the h dimension of output_grads.

  • d – [in] Length of the d dimension of output_grads.

  • d2 – [in] Length of the d dimension of freqs.

  • stride_s_or_t – [in] Stride of the s (sbhd/bshd)/t (thd) dimension of output_grads.

  • stride_b – [in] Stride of the b dimension of output_grads. (0 for thd).

  • stride_h – [in] Stride of the h dimension of output_grads.

  • stride_d – [in] Stride of the d dimension of output_grads.

  • stream – [in] CUDA stream used for the operation.

void nvte_fused_qkv_rope_forward(
const NVTETensor qkv_input,
const NVTETensor q_freqs,
const NVTETensor k_freqs,
const NVTETensor start_positions,
NVTETensor q_out,
NVTETensor k_out,
NVTETensor v_out,
const NVTE_QKV_Format qkv_format,
const bool interleaved,
const int cp_size,
const int cp_rank,
const int s,
const int b,
const int h,
const int d,
const int d2,
const int qkv_split_arg_list_0,
const int qkv_split_arg_list_1,
const int qkv_split_arg_list_2,
cudaStream_t stream,
)#

Apply rotary positional embedding to the combined QKV input tensor.

Parameters:
  • qkv_input – [in] Combined QKV input tensor for fused rope.

  • q_freqs – [in] The freqs tensor for Q.

  • k_freqs – [in] The freqs tensor for K.

  • start_positions – [in] The beginning offsets for applying RoPE embeddings.

  • q_out – [out] Output tensor for Q.

  • k_out – [out] Output tensor for K.

  • v_out – [out] Output tensor for V.

  • qkv_format – [in] QKV format.

  • interleaved – [in] Whether to use interleaved rotary position embedding.

  • cp_size – [in] Context parallel world size.

  • cp_rank – [in] Context parallel rank.

  • s – [in] Length of the s dimension of input.

  • b – [in] Length of the b dimension of input.

  • h – [in] Length of the h dimension of input.

  • d – [in] Length of the d dimension of input.

  • d2 – [in] Length of the d dimension of freqs.

  • qkv_split_arg_list_0 – [in] The hidden size for Q.

  • qkv_split_arg_list_1 – [in] The hidden size for K.

  • qkv_split_arg_list_2 – [in] The hidden size for V.

  • stream – [in] CUDA stream used for the operation.

void nvte_fused_qkv_rope_backward(
const NVTETensor q_grad_out,
const NVTETensor k_grad_out,
const NVTETensor v_grad_out,
const NVTETensor q_freqs,
const NVTETensor k_freqs,
NVTETensor qkv_grad_input,
const NVTE_QKV_Format qkv_format,
const bool interleaved,
const int cp_size,
const int cp_rank,
const int s,
const int b,
const int h,
const int d,
const int d2,
const int qkv_split_arg_list_0,
const int qkv_split_arg_list_1,
const int qkv_split_arg_list_2,
cudaStream_t stream,
)#

Compute the backward of the fused qkv rope.

Parameters:
  • q_grad_out – [in] Incoming gradient tensor for Q.

  • k_grad_out – [in] Incoming gradient tensor for K.

  • v_grad_out – [in] Incoming gradient tensor for V.

  • q_freqs – [in] The freqs tensor for Q.

  • k_freqs – [in] The freqs tensor for K.

  • qkv_grad_input – [out] Input gradient tensor to calculate.

  • qkv_format – [in] QKV format.

  • interleaved – [in] Whether to use interleaved rotary position embedding.

  • cp_size – [in] Context parallel world size.

  • cp_rank – [in] Context parallel rank.

  • s – [in] Length of the s dimension of input.

  • b – [in] Length of the b dimension of input.

  • h – [in] Length of the h dimension of input.

  • d – [in] Length of the d dimension of input.

  • d2 – [in] Length of the d dimension of freqs.

  • qkv_split_arg_list_0 – [in] The hidden size for Q.

  • qkv_split_arg_list_1 – [in] The hidden size for K.

  • qkv_split_arg_list_2 – [in] The hidden size for V.

  • stream – [in] CUDA stream used for the operation.