164 lines
3.3 KiB
C
164 lines
3.3 KiB
C
/******************************************************************************
|
|
* Copyright (c) 2023, Tri Dao.
|
|
******************************************************************************/
|
|
|
|
#pragma once
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
struct HadamardParamsBase {
|
|
using index_t = int64_t;
|
|
|
|
int batch, dim, log_N;
|
|
|
|
index_t x_batch_stride;
|
|
index_t out_batch_stride;
|
|
|
|
float scale;
|
|
|
|
// Common data pointers.
|
|
void *__restrict__ x_ptr;
|
|
void *__restrict__ out_ptr;
|
|
};
|
|
|
|
struct UnifiedHadamardParamsBase{
|
|
using index_t = int64_t;
|
|
|
|
int batch, dim, log_N;
|
|
int batch_fma_change;
|
|
|
|
index_t x_batch_stride;
|
|
index_t out_batch_stride;
|
|
index_t fma_batch_stride;
|
|
index_t cos_freq_batch_stride;
|
|
index_t sin_freq_batch_stride;
|
|
|
|
float scale;
|
|
|
|
// Common data pointers.
|
|
void *__restrict__ x_ptr;
|
|
void *__restrict__ out_ptr;
|
|
void *__restrict__ out_scales_ptr;
|
|
|
|
void *__restrict__ y_scale_ptr;
|
|
void *__restrict__ z_shift_ptr;
|
|
|
|
void *__restrict__ weights_ptr;
|
|
|
|
void *__restrict__ cos_freq_ptr;
|
|
void *__restrict__ sin_freq_ptr;
|
|
|
|
};
|
|
|
|
|
|
struct DequantHadamardParamsBase {
|
|
using index_t = int64_t;
|
|
|
|
int batch, dim, log_N;
|
|
|
|
index_t x_batch_stride;
|
|
index_t out_batch_stride;
|
|
|
|
float scale;
|
|
|
|
// Common data pointers.
|
|
void *__restrict__ x_ptr;
|
|
void *__restrict__ scales_ptr;
|
|
void *__restrict__ out_ptr;
|
|
};
|
|
|
|
|
|
struct QuantHadamardParamsBase {
|
|
using index_t = int64_t;
|
|
|
|
int batch, dim, log_N;
|
|
|
|
index_t x_batch_stride;
|
|
index_t out_batch_stride;
|
|
|
|
float scale;
|
|
|
|
// Common data pointers.
|
|
void *__restrict__ x_ptr;
|
|
void *__restrict__ out_ptr;
|
|
void *__restrict__ out_scales_ptr;
|
|
};
|
|
|
|
struct NormFMAHadamardParamsBase {
|
|
using index_t = int64_t;
|
|
|
|
int batch, dim, log_N;
|
|
int seqlen;
|
|
|
|
index_t x_batch_stride;
|
|
index_t out_batch_stride;
|
|
index_t fma_batch_stride;
|
|
|
|
float scale;
|
|
|
|
// Common data pointers.
|
|
void *__restrict__ x_ptr;
|
|
void *__restrict__ out_ptr;
|
|
void *__restrict__ y_scale_ptr;
|
|
void *__restrict__ z_shift_ptr;
|
|
void *__restrict__ weights_ptr;
|
|
};
|
|
|
|
|
|
struct NormRopeHadamardParamsBase {
|
|
using index_t = int64_t;
|
|
|
|
int batch, dim, log_N;
|
|
|
|
index_t x_batch_stride;
|
|
index_t out_batch_stride;
|
|
index_t cos_freq_batch_stride;
|
|
index_t sin_freq_batch_stride;
|
|
|
|
float scale;
|
|
|
|
// Common data pointers.
|
|
void *__restrict__ x_ptr;
|
|
void *__restrict__ out_ptr;
|
|
void *__restrict__ cos_freq_ptr;
|
|
void *__restrict__ sin_freq_ptr;
|
|
void *__restrict__ weights_ptr;
|
|
};
|
|
|
|
|
|
struct NormHadamardParamsBase {
|
|
using index_t = int64_t;
|
|
|
|
int batch, dim, log_N;
|
|
|
|
index_t x_batch_stride;
|
|
index_t out_batch_stride;
|
|
|
|
float scale;
|
|
|
|
// Common data pointers.
|
|
void *__restrict__ x_ptr;
|
|
void *__restrict__ out_ptr;
|
|
void *__restrict__ weights_ptr;
|
|
};
|
|
|
|
|
|
struct RopeHadamardParamsBase {
|
|
using index_t = int64_t;
|
|
|
|
int batch, dim, log_N;
|
|
|
|
index_t x_batch_stride;
|
|
index_t out_batch_stride;
|
|
index_t cos_freq_batch_stride;
|
|
index_t sin_freq_batch_stride;
|
|
|
|
float scale;
|
|
|
|
// Common data pointers.
|
|
void *__restrict__ x_ptr;
|
|
void *__restrict__ out_ptr;
|
|
void *__restrict__ cos_freq_ptr;
|
|
void *__restrict__ sin_freq_ptr;
|
|
};
|