#pragma once
#include "src/turbomind/models/llama/awq_sugon/lmdeploy_sugon.cuh"
#include <string>
#include <iostream>
#include <fstream>
typedef struct ihipStream_t* hipStream_t;
// template <typename T>
// void dequant_w4_gemm(cudaStream_t stream, T* output,const uint32_t* weight,const half2* zeros_and_scales,int k,int n,int group_size);


template <typename T>
void PrintScale(cudaStream_t stream,const T* data,int size,int flag,int m,int n);


template <typename T>
void assign_fun(cudaStream_t stream, T* A,const T* B,int size);

extern void run_weight_only_gemm(const void *A,
                        const void *B0,
                        const void *B1,
                        void *C,
                        int M,
                        int N,
                        int K,
                        int StrideA,
                        int StrideB,
                        int StrideB_padded,     // 输入的权重矩阵添加pad后的K
                        int StrideC,
                        int Group,
                        void* splitK_padA_workspace,                 // 用于SplitK和tensorA添加pad的显存空间
                        int splitK_padA_workspace_elementSize,       // workspace有多少个bit
                        hipStream_t stream_id=0);


template <typename T>
void input_padding(cudaStream_t stream, T* output,const T* input,int m,int k,int group_size,int pad_groupcount);
