cwenzi's picture
download
raw
1.2 kB
#ifndef NEUROFLOW_ROPE_HPP
#define NEUROFLOW_ROPE_HPP
#include <cstddef>
#include <vector>
#include "tensor.hpp"
#ifdef USE_CUDA
#include <cuda_runtime.h>
#endif
namespace neuroflow {
class RoPE {
public:
size_t head_dim_;
size_t max_seq_len_;
float yarn_scale_factor_ = 1.0f;
Tensor freqs_cos_;
Tensor freqs_sin_;
RoPE(size_t head_dim, size_t max_seq_len);
void apply(Tensor& qkv, size_t seq_len, size_t n_heads, size_t d_model, size_t offset = 0) const;
void apply_single(Tensor& x, size_t seq_len, size_t n_heads, size_t offset = 0) const;
void set_yarn_scale(float scale_factor);
};
#ifdef USE_CUDA
void launch_rope(float* qkv, const float* cos_table, const float* sin_table,
size_t seq_len, size_t n_heads, size_t d_model, size_t head_dim,
size_t offset, cudaStream_t stream);
void launch_rope_single(float* data, const float* cos_table, const float* sin_table,
size_t seq_len, size_t n_heads, size_t stride, size_t head_dim,
size_t offset, cudaStream_t stream);
#endif
} // namespace neuroflow
#endif // NEUROFLOW_ROPE_HPP

Xet Storage Details

Size:
1.2 kB
·
Xet hash:
03fcf762864d59d90066f29e968539413a00ecbde171cbab1b4698a3d8e6354a

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.