Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions include/infinicore/ops.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,17 @@
#include "ops/conv2d.hpp"
#include "ops/cross_entropy.hpp"
#include "ops/deepseek_moe.hpp"
#include "ops/dsv4_act_quant_fp8.hpp"
#include "ops/dsv4_add_rmsnorm_quant.hpp"
#include "ops/dsv4_fused_rope.hpp"
#include "ops/dsv4_linear_bf16_fp32.hpp"
#include "ops/dsv4_mask_topk_ids.hpp"
#include "ops/dsv4_per_token_quant_int8.hpp"
#include "ops/dsv4_rmsnorm_self.hpp"
#include "ops/dsv4_silu_and_mul.hpp"
#include "ops/dsv4_silu_mul_quant.hpp"
#include "ops/dsv4_swa_prefill_indices.hpp"
#include "ops/dsv4_topk_transform.hpp"
#include "ops/embedding.hpp"
#include "ops/flash_attention.hpp"
#include "ops/fmin.hpp"
Expand Down
9 changes: 9 additions & 0 deletions include/infinicore/ops/dsv4_act_quant_fp8.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#pragma once
#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"
namespace infinicore::op {
INFINICORE_GRAPH_OP_CLASS(Dsv4ActQuantFp8, Tensor, Tensor, const Tensor &, float);
void dsv4_act_quant_fp8_(Tensor xq, Tensor scale, const Tensor &x, float fp8_max);
} // namespace infinicore::op
9 changes: 9 additions & 0 deletions include/infinicore/ops/dsv4_add_rmsnorm_quant.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#pragma once
#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"
namespace infinicore::op {
INFINICORE_GRAPH_OP_CLASS(Dsv4AddRMSNormQuant, Tensor, Tensor, Tensor, const Tensor &, const Tensor &, float);
void dsv4_add_rmsnorm_quant_(Tensor res, Tensor q, Tensor scale, const Tensor &x, const Tensor &weight, float epsilon);
} // namespace infinicore::op
15 changes: 15 additions & 0 deletions include/infinicore/ops/dsv4_fused_rope.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#pragma once

#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"

namespace infinicore::op {

INFINICORE_GRAPH_OP_CLASS(Dsv4FusedRope, Tensor, Tensor, const Tensor &, const Tensor &, bool);

void dsv4_fused_rope_(Tensor q, Tensor k, const Tensor &freq_real, const Tensor &freq_imag, bool has_k = false);
Tensor dsv4_fused_rope(const Tensor &q, const Tensor &freq_real, const Tensor &freq_imag);

} // namespace infinicore::op
15 changes: 15 additions & 0 deletions include/infinicore/ops/dsv4_linear_bf16_fp32.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#pragma once

#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"

namespace infinicore::op {

INFINICORE_GRAPH_OP_CLASS(Dsv4LinearBf16Fp32, Tensor, const Tensor &, const Tensor &);

Tensor dsv4_linear_bf16_fp32(const Tensor &x, const Tensor &w);
void dsv4_linear_bf16_fp32_(Tensor y, const Tensor &x, const Tensor &w);

} // namespace infinicore::op
14 changes: 14 additions & 0 deletions include/infinicore/ops/dsv4_mask_topk_ids.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#pragma once

#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"

namespace infinicore::op {

INFINICORE_GRAPH_OP_CLASS(Dsv4MaskTopkIds, Tensor, const Tensor &);

void dsv4_mask_topk_ids_(Tensor topk_ids, const Tensor &num_token_non_padded);

} // namespace infinicore::op
17 changes: 17 additions & 0 deletions include/infinicore/ops/dsv4_per_token_quant_int8.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#pragma once

#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"

#include <utility>

namespace infinicore::op {

INFINICORE_GRAPH_OP_CLASS(Dsv4PerTokenQuantInt8, Tensor, Tensor, const Tensor &);

std::pair<Tensor, Tensor> dsv4_per_token_quant_int8(const Tensor &x);
void dsv4_per_token_quant_int8_(Tensor q, Tensor scale, const Tensor &x);

} // namespace infinicore::op
15 changes: 15 additions & 0 deletions include/infinicore/ops/dsv4_rmsnorm_self.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#pragma once

#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"

namespace infinicore::op {

INFINICORE_GRAPH_OP_CLASS(Dsv4RMSNormSelf, Tensor, const Tensor &, float);

Tensor dsv4_rmsnorm_self(const Tensor &x, float epsilon = 1e-6f);
void dsv4_rmsnorm_self_(Tensor y, const Tensor &x, float epsilon = 1e-6f);

} // namespace infinicore::op
15 changes: 15 additions & 0 deletions include/infinicore/ops/dsv4_silu_and_mul.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#pragma once

#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"

namespace infinicore::op {

INFINICORE_GRAPH_OP_CLASS(Dsv4SiluAndMul, Tensor, const Tensor &, const Tensor &);

Tensor dsv4_silu_and_mul(const Tensor &gate, const Tensor &up);
void dsv4_silu_and_mul_(Tensor y, const Tensor &gate, const Tensor &up);

} // namespace infinicore::op
9 changes: 9 additions & 0 deletions include/infinicore/ops/dsv4_silu_mul_quant.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#pragma once
#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"
namespace infinicore::op {
INFINICORE_GRAPH_OP_CLASS(Dsv4SiluMulQuant, Tensor, Tensor, const Tensor &, const Tensor &);
void dsv4_silu_mul_quant_(Tensor q, Tensor scale, const Tensor &gate, const Tensor &up);
} // namespace infinicore::op
9 changes: 9 additions & 0 deletions include/infinicore/ops/dsv4_swa_prefill_indices.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#pragma once
#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"
namespace infinicore::op {
INFINICORE_GRAPH_OP_CLASS(Dsv4SwaPrefillIndices, Tensor, int);
void dsv4_swa_prefill_indices_(Tensor indices, int window_size);
} // namespace infinicore::op
15 changes: 15 additions & 0 deletions include/infinicore/ops/dsv4_topk_transform.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#pragma once

#include "../device.hpp"
#include "../graph/graph.hpp"
#include "../tensor.hpp"
#include "common/op.hpp"

namespace infinicore::op {

INFINICORE_GRAPH_OP_CLASS(Dsv4TopkTransform, Tensor, const Tensor &, const Tensor &, const Tensor &, int);

Tensor dsv4_topk_transform(const Tensor &scores, const Tensor &seq_lens, const Tensor &page_tables, int page_size = 64);
void dsv4_topk_transform_(Tensor out, const Tensor &scores, const Tensor &seq_lens, const Tensor &page_tables, int page_size = 64);

} // namespace infinicore::op
11 changes: 11 additions & 0 deletions include/infiniop.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,17 @@
#include "infiniop/ops/digamma.h"
#include "infiniop/ops/dist.h"
#include "infiniop/ops/dot.h"
#include "infiniop/ops/dsv4_act_quant_fp8.h"
#include "infiniop/ops/dsv4_add_rmsnorm_quant.h"
#include "infiniop/ops/dsv4_fused_rope.h"
#include "infiniop/ops/dsv4_linear_bf16_fp32.h"
#include "infiniop/ops/dsv4_mask_topk_ids.h"
#include "infiniop/ops/dsv4_per_token_quant_int8.h"
#include "infiniop/ops/dsv4_rmsnorm_self.h"
#include "infiniop/ops/dsv4_silu_and_mul.h"
#include "infiniop/ops/dsv4_silu_mul_quant.h"
#include "infiniop/ops/dsv4_swa_prefill_indices.h"
#include "infiniop/ops/dsv4_topk_transform.h"
#include "infiniop/ops/embedding.h"
#include "infiniop/ops/equal.h"
#include "infiniop/ops/erf.h"
Expand Down
9 changes: 9 additions & 0 deletions include/infiniop/ops/dsv4_act_quant_fp8.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#ifndef __INFINIOP_DSV4_ACT_QUANT_FP8_API_H__
#define __INFINIOP_DSV4_ACT_QUANT_FP8_API_H__
#include "../operator_descriptor.h"
typedef struct InfiniopDescriptor *infiniopDsv4ActQuantFp8Descriptor_t;
__INFINI_C __export infiniStatus_t infiniopCreateDsv4ActQuantFp8Descriptor(infiniopHandle_t, infiniopDsv4ActQuantFp8Descriptor_t *, infiniopTensorDescriptor_t, infiniopTensorDescriptor_t, infiniopTensorDescriptor_t, float);
__INFINI_C __export infiniStatus_t infiniopGetDsv4ActQuantFp8WorkspaceSize(infiniopDsv4ActQuantFp8Descriptor_t, size_t *);
__INFINI_C __export infiniStatus_t infiniopDsv4ActQuantFp8(infiniopDsv4ActQuantFp8Descriptor_t, void *, size_t, void *, void *, const void *, void *);
__INFINI_C __export infiniStatus_t infiniopDestroyDsv4ActQuantFp8Descriptor(infiniopDsv4ActQuantFp8Descriptor_t);
#endif
9 changes: 9 additions & 0 deletions include/infiniop/ops/dsv4_add_rmsnorm_quant.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#ifndef __INFINIOP_DSV4_ADD_RMSNORM_QUANT_API_H__
#define __INFINIOP_DSV4_ADD_RMSNORM_QUANT_API_H__
#include "../operator_descriptor.h"
typedef struct InfiniopDescriptor *infiniopDsv4AddRMSNormQuantDescriptor_t;
__INFINI_C __export infiniStatus_t infiniopCreateDsv4AddRMSNormQuantDescriptor(infiniopHandle_t, infiniopDsv4AddRMSNormQuantDescriptor_t *, infiniopTensorDescriptor_t, infiniopTensorDescriptor_t, infiniopTensorDescriptor_t, infiniopTensorDescriptor_t, infiniopTensorDescriptor_t, float);
__INFINI_C __export infiniStatus_t infiniopGetDsv4AddRMSNormQuantWorkspaceSize(infiniopDsv4AddRMSNormQuantDescriptor_t, size_t *);
__INFINI_C __export infiniStatus_t infiniopDsv4AddRMSNormQuant(infiniopDsv4AddRMSNormQuantDescriptor_t, void *, size_t, void *, void *, void *, const void *, const void *, void *);
__INFINI_C __export infiniStatus_t infiniopDestroyDsv4AddRMSNormQuantDescriptor(infiniopDsv4AddRMSNormQuantDescriptor_t);
#endif
13 changes: 13 additions & 0 deletions include/infiniop/ops/dsv4_fused_rope.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __INFINIOP_DSV4_FUSED_ROPE_API_H__
#define __INFINIOP_DSV4_FUSED_ROPE_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopDsv4FusedRopeDescriptor_t;

__INFINI_C __export infiniStatus_t infiniopCreateDsv4FusedRopeDescriptor(infiniopHandle_t handle, infiniopDsv4FusedRopeDescriptor_t *desc_ptr, infiniopTensorDescriptor_t q_desc, infiniopTensorDescriptor_t k_desc, infiniopTensorDescriptor_t freq_real_desc, infiniopTensorDescriptor_t freq_imag_desc, int has_k);
__INFINI_C __export infiniStatus_t infiniopGetDsv4FusedRopeWorkspaceSize(infiniopDsv4FusedRopeDescriptor_t desc, size_t *size);
__INFINI_C __export infiniStatus_t infiniopDsv4FusedRope(infiniopDsv4FusedRopeDescriptor_t desc, void *workspace, size_t workspace_size, void *q, void *k, const void *freq_real, const void *freq_imag, void *stream);
__INFINI_C __export infiniStatus_t infiniopDestroyDsv4FusedRopeDescriptor(infiniopDsv4FusedRopeDescriptor_t desc);

#endif // __INFINIOP_DSV4_FUSED_ROPE_API_H__
31 changes: 31 additions & 0 deletions include/infiniop/ops/dsv4_linear_bf16_fp32.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#ifndef __INFINIOP_DSV4_LINEAR_BF16_FP32_API_H__
#define __INFINIOP_DSV4_LINEAR_BF16_FP32_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopDsv4LinearBf16Fp32Descriptor_t;

__INFINI_C __export infiniStatus_t infiniopCreateDsv4LinearBf16Fp32Descriptor(
infiniopHandle_t handle,
infiniopDsv4LinearBf16Fp32Descriptor_t *desc_ptr,
infiniopTensorDescriptor_t y_desc,
infiniopTensorDescriptor_t x_desc,
infiniopTensorDescriptor_t w_desc);

__INFINI_C __export infiniStatus_t infiniopGetDsv4LinearBf16Fp32WorkspaceSize(
infiniopDsv4LinearBf16Fp32Descriptor_t desc,
size_t *size);

__INFINI_C __export infiniStatus_t infiniopDsv4LinearBf16Fp32(
infiniopDsv4LinearBf16Fp32Descriptor_t desc,
void *workspace,
size_t workspace_size,
void *y,
const void *x,
const void *w,
void *stream);

__INFINI_C __export infiniStatus_t infiniopDestroyDsv4LinearBf16Fp32Descriptor(
infiniopDsv4LinearBf16Fp32Descriptor_t desc);

#endif
29 changes: 29 additions & 0 deletions include/infiniop/ops/dsv4_mask_topk_ids.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#ifndef __INFINIOP_DSV4_MASK_TOPK_IDS_API_H__
#define __INFINIOP_DSV4_MASK_TOPK_IDS_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopDsv4MaskTopkIdsDescriptor_t;

__INFINI_C __export infiniStatus_t infiniopCreateDsv4MaskTopkIdsDescriptor(
infiniopHandle_t handle,
infiniopDsv4MaskTopkIdsDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t topk_ids_desc,
infiniopTensorDescriptor_t num_token_non_padded_desc);

__INFINI_C __export infiniStatus_t infiniopGetDsv4MaskTopkIdsWorkspaceSize(
infiniopDsv4MaskTopkIdsDescriptor_t desc,
size_t *size);

__INFINI_C __export infiniStatus_t infiniopDsv4MaskTopkIds(
infiniopDsv4MaskTopkIdsDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *topk_ids,
const void *num_token_non_padded,
void *stream);

__INFINI_C __export infiniStatus_t infiniopDestroyDsv4MaskTopkIdsDescriptor(
infiniopDsv4MaskTopkIdsDescriptor_t desc);

#endif
31 changes: 31 additions & 0 deletions include/infiniop/ops/dsv4_per_token_quant_int8.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#ifndef __INFINIOP_DSV4_PER_TOKEN_QUANT_INT8_API_H__
#define __INFINIOP_DSV4_PER_TOKEN_QUANT_INT8_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopDsv4PerTokenQuantInt8Descriptor_t;

__INFINI_C __export infiniStatus_t infiniopCreateDsv4PerTokenQuantInt8Descriptor(
infiniopHandle_t handle,
infiniopDsv4PerTokenQuantInt8Descriptor_t *desc_ptr,
infiniopTensorDescriptor_t q_desc,
infiniopTensorDescriptor_t scale_desc,
infiniopTensorDescriptor_t x_desc);

__INFINI_C __export infiniStatus_t infiniopGetDsv4PerTokenQuantInt8WorkspaceSize(
infiniopDsv4PerTokenQuantInt8Descriptor_t desc,
size_t *size);

__INFINI_C __export infiniStatus_t infiniopDsv4PerTokenQuantInt8(
infiniopDsv4PerTokenQuantInt8Descriptor_t desc,
void *workspace,
size_t workspace_size,
void *q,
void *scale,
const void *x,
void *stream);

__INFINI_C __export infiniStatus_t infiniopDestroyDsv4PerTokenQuantInt8Descriptor(
infiniopDsv4PerTokenQuantInt8Descriptor_t desc);

#endif // __INFINIOP_DSV4_PER_TOKEN_QUANT_INT8_API_H__
18 changes: 18 additions & 0 deletions include/infiniop/ops/dsv4_rmsnorm_self.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#ifndef __INFINIOP_DSV4_RMSNORM_SELF_API_H__
#define __INFINIOP_DSV4_RMSNORM_SELF_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopDsv4RMSNormSelfDescriptor_t;

__INFINI_C __export infiniStatus_t infiniopCreateDsv4RMSNormSelfDescriptor(
infiniopHandle_t handle,
infiniopDsv4RMSNormSelfDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t y_desc,
infiniopTensorDescriptor_t x_desc,
float epsilon);
__INFINI_C __export infiniStatus_t infiniopGetDsv4RMSNormSelfWorkspaceSize(infiniopDsv4RMSNormSelfDescriptor_t desc, size_t *size);
__INFINI_C __export infiniStatus_t infiniopDsv4RMSNormSelf(infiniopDsv4RMSNormSelfDescriptor_t desc, void *workspace, size_t workspace_size, void *y, const void *x, void *stream);
__INFINI_C __export infiniStatus_t infiniopDestroyDsv4RMSNormSelfDescriptor(infiniopDsv4RMSNormSelfDescriptor_t desc);

#endif // __INFINIOP_DSV4_RMSNORM_SELF_API_H__
13 changes: 13 additions & 0 deletions include/infiniop/ops/dsv4_silu_and_mul.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __INFINIOP_DSV4_SILU_AND_MUL_API_H__
#define __INFINIOP_DSV4_SILU_AND_MUL_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopDsv4SiluAndMulDescriptor_t;

__INFINI_C __export infiniStatus_t infiniopCreateDsv4SiluAndMulDescriptor(infiniopHandle_t handle, infiniopDsv4SiluAndMulDescriptor_t *desc_ptr, infiniopTensorDescriptor_t y_desc, infiniopTensorDescriptor_t gate_desc, infiniopTensorDescriptor_t up_desc);
__INFINI_C __export infiniStatus_t infiniopGetDsv4SiluAndMulWorkspaceSize(infiniopDsv4SiluAndMulDescriptor_t desc, size_t *size);
__INFINI_C __export infiniStatus_t infiniopDsv4SiluAndMul(infiniopDsv4SiluAndMulDescriptor_t desc, void *workspace, size_t workspace_size, void *y, const void *gate, const void *up, void *stream);
__INFINI_C __export infiniStatus_t infiniopDestroyDsv4SiluAndMulDescriptor(infiniopDsv4SiluAndMulDescriptor_t desc);

#endif // __INFINIOP_DSV4_SILU_AND_MUL_API_H__
9 changes: 9 additions & 0 deletions include/infiniop/ops/dsv4_silu_mul_quant.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#ifndef __INFINIOP_DSV4_SILU_MUL_QUANT_API_H__
#define __INFINIOP_DSV4_SILU_MUL_QUANT_API_H__
#include "../operator_descriptor.h"
typedef struct InfiniopDescriptor *infiniopDsv4SiluMulQuantDescriptor_t;
__INFINI_C __export infiniStatus_t infiniopCreateDsv4SiluMulQuantDescriptor(infiniopHandle_t, infiniopDsv4SiluMulQuantDescriptor_t *, infiniopTensorDescriptor_t, infiniopTensorDescriptor_t, infiniopTensorDescriptor_t, infiniopTensorDescriptor_t);
__INFINI_C __export infiniStatus_t infiniopGetDsv4SiluMulQuantWorkspaceSize(infiniopDsv4SiluMulQuantDescriptor_t, size_t *);
__INFINI_C __export infiniStatus_t infiniopDsv4SiluMulQuant(infiniopDsv4SiluMulQuantDescriptor_t, void *, size_t, void *, void *, const void *, const void *, void *);
__INFINI_C __export infiniStatus_t infiniopDestroyDsv4SiluMulQuantDescriptor(infiniopDsv4SiluMulQuantDescriptor_t);
#endif
9 changes: 9 additions & 0 deletions include/infiniop/ops/dsv4_swa_prefill_indices.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#ifndef __INFINIOP_DSV4_SWA_PREFILL_INDICES_API_H__
#define __INFINIOP_DSV4_SWA_PREFILL_INDICES_API_H__
#include "../operator_descriptor.h"
typedef struct InfiniopDescriptor *infiniopDsv4SwaPrefillIndicesDescriptor_t;
__INFINI_C __export infiniStatus_t infiniopCreateDsv4SwaPrefillIndicesDescriptor(infiniopHandle_t, infiniopDsv4SwaPrefillIndicesDescriptor_t *, infiniopTensorDescriptor_t, int);
__INFINI_C __export infiniStatus_t infiniopGetDsv4SwaPrefillIndicesWorkspaceSize(infiniopDsv4SwaPrefillIndicesDescriptor_t, size_t *);
__INFINI_C __export infiniStatus_t infiniopDsv4SwaPrefillIndices(infiniopDsv4SwaPrefillIndicesDescriptor_t, void *, size_t, void *, void *);
__INFINI_C __export infiniStatus_t infiniopDestroyDsv4SwaPrefillIndicesDescriptor(infiniopDsv4SwaPrefillIndicesDescriptor_t);
#endif
13 changes: 13 additions & 0 deletions include/infiniop/ops/dsv4_topk_transform.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __INFINIOP_DSV4_TOPK_TRANSFORM_API_H__
#define __INFINIOP_DSV4_TOPK_TRANSFORM_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopDsv4TopkTransformDescriptor_t;

__INFINI_C __export infiniStatus_t infiniopCreateDsv4TopkTransformDescriptor(infiniopHandle_t handle, infiniopDsv4TopkTransformDescriptor_t *desc_ptr, infiniopTensorDescriptor_t out_desc, infiniopTensorDescriptor_t scores_desc, infiniopTensorDescriptor_t seq_lens_desc, infiniopTensorDescriptor_t page_tables_desc, int page_size);
__INFINI_C __export infiniStatus_t infiniopGetDsv4TopkTransformWorkspaceSize(infiniopDsv4TopkTransformDescriptor_t desc, size_t *size);
__INFINI_C __export infiniStatus_t infiniopDsv4TopkTransform(infiniopDsv4TopkTransformDescriptor_t desc, void *workspace, size_t workspace_size, void *out, const void *scores, const void *seq_lens, const void *page_tables, void *stream);
__INFINI_C __export infiniStatus_t infiniopDestroyDsv4TopkTransformDescriptor(infiniopDsv4TopkTransformDescriptor_t desc);

#endif // __INFINIOP_DSV4_TOPK_TRANSFORM_API_H__
13 changes: 13 additions & 0 deletions src/infinicore/ops/dsv4_act_quant_fp8/dsv4_act_quant_fp8.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#include "infinicore/ops/dsv4_act_quant_fp8.hpp"
#include "../../utils.hpp"
namespace infinicore::op {
INFINICORE_GRAPH_OP_DISPATCHERS_IMPL(Dsv4ActQuantFp8);
Dsv4ActQuantFp8::Dsv4ActQuantFp8(Tensor xq, Tensor scale, const Tensor &x, float fp8_max) {
INFINICORE_ASSERT_TENSORS_SAME_DEVICE(xq, scale, x);
INFINICORE_GRAPH_OP_DISPATCH(xq->device().getType(), xq, scale, x, fp8_max);
}
void Dsv4ActQuantFp8::execute(Tensor xq, Tensor scale, const Tensor &x, float fp8_max) {
INFINICORE_GRAPH_OP_RECORD_OR_RUN(Dsv4ActQuantFp8, xq, scale, x, fp8_max);
}
void dsv4_act_quant_fp8_(Tensor xq, Tensor scale, const Tensor &x, float fp8_max) { Dsv4ActQuantFp8::execute(xq, scale, x, fp8_max); }
} // namespace infinicore::op
Loading
Loading