Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
944fb86
issue/456/feat : add AveragePool operator
freebeat-boop Sep 16, 2025
3dbbbaf
issue/456/feat : add CrossEntropyLoss operator
Zhao-Shi-jie Sep 16, 2025
a023c1a
add exp operator
PPPoint-t Sep 16, 2025
71d140a
add sin operator
PPPoint-t Sep 16, 2025
2c77ac8
add tanh operator
PPPoint-t Sep 16, 2025
2738bd8
issue/456/feat : add MaxPool operator
freebeat-boop Sep 16, 2025
5058f38
issue/456/feat : add InterpolateNearest operator
freebeat-boop Sep 16, 2025
0a188c5
add hardswish operator
PPPoint-t Sep 17, 2025
9e3c3a3
add where operator
PPPoint-t Sep 17, 2025
195a1f9
Merge pull request #4 from freebeat-boop/contest-CrossEntropyLoss
qinyiqun Sep 17, 2025
8fce884
Merge branch 'competition' into contest-AveragePool
qinyiqun Sep 17, 2025
b5cd66c
Merge pull request #6 from freebeat-boop/contest-AveragePool
qinyiqun Sep 17, 2025
96079f9
Merge branch 'competition' into exp-clean
qinyiqun Sep 17, 2025
4a4c858
Merge pull request #7 from PPPoint-t/exp-clean
qinyiqun Sep 17, 2025
6484162
Merge branch 'competition' into sin
qinyiqun Sep 17, 2025
1475bde
Merge pull request #8 from PPPoint-t/sin
qinyiqun Sep 17, 2025
84b4be3
Merge branch 'competition' into tanh
qinyiqun Sep 17, 2025
4473e6e
Update op_register.py
qinyiqun Sep 17, 2025
e414f97
Merge pull request #9 from PPPoint-t/tanh
qinyiqun Sep 17, 2025
5e2ef6b
Merge branch 'competition' into contest-MaxPool
qinyiqun Sep 17, 2025
ebec39b
Merge pull request #11 from freebeat-boop/contest-MaxPool
qinyiqun Sep 17, 2025
66b4030
Merge branch 'competition' into contest-InterpolateNearest
qinyiqun Sep 17, 2025
65d38f6
Merge pull request #14 from freebeat-boop/contest-InterpolateNearest
qinyiqun Sep 17, 2025
36a5753
Merge branch 'competition' into hardswish
qinyiqun Sep 17, 2025
d409a33
Merge pull request #16 from PPPoint-t/hardswish
qinyiqun Sep 17, 2025
06d1d48
Merge branch 'competition' into where
qinyiqun Sep 17, 2025
e8ebc7f
Merge pull request #17 from PPPoint-t/where
qinyiqun Sep 17, 2025
348b15d
delete sin unnecessary line
PPPoint-t Sep 17, 2025
69aeb44
issue/456/feat : add reduce_max operator
S-hhhhh Sep 17, 2025
4b225bc
Merge pull request #36 from PPPoint-t/debug
qinyiqun Sep 18, 2025
8b22814
Merge pull request #39 from S-hhhhh/pr/reduce_max
qinyiqun Sep 18, 2025
e8061ea
issue/456/feat: add div operator
tianyuxbear Jul 29, 2025
289c282
issue/456/feat: add and operator
tianyuxbear Jul 30, 2025
4ce5389
issue/456/feat: add or operator
tianyuxbear Jul 30, 2025
84b0d67
issue/456/feat : add equal operator
Vietlin Sep 18, 2025
f367ff5
issue/456/feat : add batch_norm operator
Vietlin Sep 18, 2025
8690a7e
issue/456/feat : add layer_norm operator
Vietlin Sep 18, 2025
e39fe9b
issue/456/feat : add index_copy_inplace operator
Vietlin Sep 18, 2025
934f279
issue/456/feat : add gather operator
Vietlin Sep 18, 2025
a647b68
issue/456/feat : add scatter operator
Vietlin Sep 18, 2025
33adebf
Merge pull request #22 from tianyuxbear/div
qinyiqun Sep 18, 2025
9c5df4e
添加 AveragePool MaxPool InterpolateNearest CrossEntropyLoss的cpu 实现
Zhao-Shi-jie Sep 18, 2025
dfbcc5f
Merge pull request #50 from freebeat-boop/addcpukernel
qinyiqun Sep 22, 2025
488dfd1
Merge branch 'competition' into equal-shenz
qinyiqun Sep 22, 2025
5a6575c
Merge pull request #40 from Vietlin/equal-shenz
qinyiqun Sep 22, 2025
7a7c727
Merge branch 'competition' into batch_norm-shenz
qinyiqun Sep 22, 2025
6ecb28f
Merge pull request #41 from Vietlin/batch_norm-shenz
qinyiqun Sep 22, 2025
3ff298e
Merge branch 'competition' into scatter-shenz
qinyiqun Sep 22, 2025
ab1c4b6
Merge pull request #43 from Vietlin/scatter-shenz
qinyiqun Sep 22, 2025
73d5bbe
Merge branch 'competition' into gather-shenz
qinyiqun Sep 22, 2025
6847799
Merge pull request #44 from Vietlin/gather-shenz
qinyiqun Sep 22, 2025
eb1939c
Merge branch 'competition' into index_copy_inplace-shenz
qinyiqun Sep 22, 2025
2e50dbb
Merge pull request #45 from Vietlin/index_copy_inplace-shenz
qinyiqun Sep 22, 2025
7470ac4
Merge branch 'competition' into layer_norm-shenz
qinyiqun Sep 22, 2025
8f8736a
Merge pull request #48 from Vietlin/layer_norm-shenz
qinyiqun Sep 22, 2025
1d8ca73
Merge branch 'competition' into or
qinyiqun Sep 22, 2025
5a90c5d
Merge pull request #32 from tianyuxbear/or
qinyiqun Sep 22, 2025
ff1113c
Merge branch 'competition' into and
qinyiqun Sep 22, 2025
dc4c077
Merge pull request #27 from tianyuxbear/and
qinyiqun Sep 22, 2025
dee2c95
issue/456/feat : add reduce_mean operator
S-hhhhh Sep 23, 2025
1aafcbb
Merge pull request #54 from S-hhhhh/pr/reduce_mean
qinyiqun Sep 26, 2025
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
21 changes: 21 additions & 0 deletions include/infiniop.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,42 @@
#include "infiniop/handle.h"
#include "infiniop/ops/add.h"
#include "infiniop/ops/attention.h"
#include "infiniop/ops/averagepool.h"
#include "infiniop/ops/causal_softmax.h"
#include "infiniop/ops/clip.h"
#include "infiniop/ops/conv.h"
#include "infiniop/ops/cross_entropy_loss.h"
#include "infiniop/ops/dequantize.h"
#include "infiniop/ops/div.h"
#include "infiniop/ops/exp.h"
#include "infiniop/ops/gemm.h"
#include "infiniop/ops/hardswish.h"
#include "infiniop/ops/interpolate_nearest.h"
#include "infiniop/ops/logical_and.h"
#include "infiniop/ops/logical_or.h"
#include "infiniop/ops/maxpool.h"
#include "infiniop/ops/mul.h"
#include "infiniop/ops/random_sample.h"
#include "infiniop/ops/rearrange.h"
#include "infiniop/ops/reduce_max.h"
#include "infiniop/ops/relu.h"
#include "infiniop/ops/rms_norm.h"
#include "infiniop/ops/rope.h"
#include "infiniop/ops/sin.h"
#include "infiniop/ops/softplus.h"
#include "infiniop/ops/sub.h"
#include "infiniop/ops/swiglu.h"
#include "infiniop/ops/tanh.h"
#include "infiniop/ops/topkrouter.h"
#include "infiniop/ops/where.h"
#include "infiniop/tensor_descriptor.h"
#include "infiniop/ops/reduce_max.h"
#include "infiniop/ops/layer_norm.h"
#include "infiniop/ops/index_copy_inplace.h"
#include "infiniop/ops/gather.h"
#include "infiniop/ops/scatter.h"
#include "infiniop/ops/batch_norm.h"
#include "infiniop/ops/equal.h"
#include "infiniop/ops/reduce_mean.h"

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

#include "../operator_descriptor.h"

__C typedef struct InfiniopDescriptor *infiniopAvgPoolDescriptor_t;

__C infiniStatus_t infiniopCreateAvgPoolDescriptor(infiniopHandle_t handle,
infiniopAvgPoolDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t output_desc,
infiniopTensorDescriptor_t input_desc,
void *kernel_size,
void *strides,
void *pads,
bool ceil_mode);

__C infiniStatus_t infiniopGetAvgPoolWorkspaceSize(infiniopAvgPoolDescriptor_t desc,
size_t *size);

__C infiniStatus_t infiniopAvgPool(infiniopAvgPoolDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *output,
const void *input,
void *stream);

__C infiniStatus_t infiniopDestroyAvgPoolDescriptor(infiniopAvgPoolDescriptor_t desc);

#endif // __INFINIOP_AVERAGEPOOL_H__
37 changes: 37 additions & 0 deletions include/infiniop/ops/batch_norm.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#ifndef __INFINIOP_BATCH_NORM_API_H__
#define __INFINIOP_BATCH_NORM_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopBatchNormDescriptor_t;

__C __export infiniStatus_t infiniopCreateBatchNormDescriptor(
infiniopHandle_t handle,
infiniopBatchNormDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t output_desc,
infiniopTensorDescriptor_t running_mean_desc,
infiniopTensorDescriptor_t running_var_desc,
infiniopTensorDescriptor_t input_desc,
infiniopTensorDescriptor_t weight_desc,
infiniopTensorDescriptor_t bias_desc,
float momentum,
float eps
);

__C __export infiniStatus_t infiniopGetBatchNormWorkspaceSize(infiniopBatchNormDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopBatchNorm(infiniopBatchNormDescriptor_t desc,
void *workspace,
size_t workspace_size,
void * output,
void * running_mean,
void * running_var,
const void * input,
const void * weight,
const void * bias,
void *stream
);

__C __export infiniStatus_t infiniopDestroyBatchNormDescriptor(infiniopBatchNormDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopCrossEntropyLossDescriptor_t;

__C infiniStatus_t infiniopCreateCrossEntropyLossDescriptor(infiniopHandle_t handle,
infiniopCrossEntropyLossDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t loss_desc,
infiniopTensorDescriptor_t logits_desc,
infiniopTensorDescriptor_t target_desc);

__C infiniStatus_t infiniopGetCrossEntropyLossWorkspaceSize(infiniopCrossEntropyLossDescriptor_t desc,
size_t *size);

__C infiniStatus_t infiniopCrossEntropyLoss(infiniopCrossEntropyLossDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *loss,
const void *logits,
const void *target,
void *stream);

__C infiniStatus_t infiniopDestroyCrossEntropyLossDescriptor(infiniopCrossEntropyLossDescriptor_t desc);

#endif // __INFINIOP_CROSS_ENTROPY_LOSS_API_H__
26 changes: 26 additions & 0 deletions include/infiniop/ops/div.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#ifndef __INFINIOP_DIV_API_H__
#define __INFINIOP_DIV_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopDivDescriptor_t;

__C __export infiniStatus_t infiniopCreateDivDescriptor(infiniopHandle_t handle,
infiniopDivDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t c,
infiniopTensorDescriptor_t a,
infiniopTensorDescriptor_t b);

__C __export infiniStatus_t infiniopGetDivWorkspaceSize(infiniopDivDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopDiv(infiniopDivDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *c,
const void *a,
const void *b,
void *stream);

__C __export infiniStatus_t infiniopDestroyDivDescriptor(infiniopDivDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopEqualDescriptor_t;

__C __export infiniStatus_t infiniopCreateEqualDescriptor(
infiniopHandle_t handle,
infiniopEqualDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t c_desc,
infiniopTensorDescriptor_t a_desc,
infiniopTensorDescriptor_t b_desc
);

__C __export infiniStatus_t infiniopGetEqualWorkspaceSize(infiniopEqualDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopEqual(
infiniopEqualDescriptor_t desc,
void *workspace,
size_t workspace_size,
void * c,
const void * a,
const void * b,
void *stream
);

__C __export infiniStatus_t infiniopDestroyEqualDescriptor(infiniopEqualDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopExpDescriptor_t;

__C __export infiniStatus_t infiniopCreateExpDescriptor(infiniopHandle_t handle,
infiniopExpDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t output,
infiniopTensorDescriptor_t input);

__C __export infiniStatus_t infiniopGetExpWorkspaceSize(infiniopExpDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopExp(infiniopExpDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *output,
const void *input,
void *stream);

__C __export infiniStatus_t infiniopDestroyExpDescriptor(infiniopExpDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopGatherDescriptor_t;

__C __export infiniStatus_t infiniopCreateGatherDescriptor(
infiniopHandle_t handle,
infiniopGatherDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t output_desc,
infiniopTensorDescriptor_t input_desc,
infiniopTensorDescriptor_t index_desc,
size_t dim
);

__C __export infiniStatus_t infiniopGetGatherWorkspaceSize(infiniopGatherDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopGather(
infiniopGatherDescriptor_t desc,
void *workspace,
size_t workspace_size,
void * output,
const void * input,
const void * index,
void *stream
);

__C __export infiniStatus_t infiniopDestroyGatherDescriptor(infiniopGatherDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopHardswishDescriptor_t;

__C __export infiniStatus_t infiniopCreateHardswishDescriptor(infiniopHandle_t handle,
infiniopHardswishDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t output,
infiniopTensorDescriptor_t input);

__C __export infiniStatus_t infiniopGetHardswishWorkspaceSize(infiniopHardswishDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopHardswish(infiniopHardswishDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *output,
const void *input,
void *stream);

__C __export infiniStatus_t infiniopDestroyHardswishDescriptor(infiniopHardswishDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopIndexCopyInplaceDescriptor_t;

__C __export infiniStatus_t infiniopCreateIndexCopyInplaceDescriptor(
infiniopHandle_t handle,
infiniopIndexCopyInplaceDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t output_desc,
infiniopTensorDescriptor_t input_desc,
infiniopTensorDescriptor_t index_desc,
size_t dim
);

__C __export infiniStatus_t infiniopGetIndexCopyInplaceWorkspaceSize(infiniopIndexCopyInplaceDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopIndexCopyInplace(infiniopIndexCopyInplaceDescriptor_t desc,
void *workspace,
size_t workspace_size,
void * output,
const void * input,
const void * index,
void *stream
);

__C __export infiniStatus_t infiniopDestroyIndexCopyInplaceDescriptor(infiniopIndexCopyInplaceDescriptor_t desc);

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

#include "../operator_descriptor.h"

__C typedef struct InfiniopDescriptor *infiniopInterpolateNearestDescriptor_t;

__C infiniStatus_t infiniopCreateInterpolateNearestDescriptor(infiniopHandle_t handle,
infiniopInterpolateNearestDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t output_desc,
infiniopTensorDescriptor_t input_desc);

__C infiniStatus_t infiniopGetInterpolateNearestWorkspaceSize(infiniopInterpolateNearestDescriptor_t desc,
size_t *size);

__C infiniStatus_t infiniopInterpolateNearest(infiniopInterpolateNearestDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *output,
const void *input,
void *stream);

__C infiniStatus_t infiniopDestroyInterpolateNearestDescriptor(infiniopInterpolateNearestDescriptor_t desc);

#endif // __INFINIOP_INTERPOLATE_NEAREST_H__
36 changes: 36 additions & 0 deletions include/infiniop/ops/layer_norm.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#ifndef __INFINIOP_LAYER_NORM_API_H__
#define __INFINIOP_LAYER_NORM_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopLayerNormDescriptor_t;

__C __export infiniStatus_t infiniopCreateLayerNormDescriptor(
infiniopHandle_t handle,
infiniopLayerNormDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t output_desc,
infiniopTensorDescriptor_t input_standardization_desc,
infiniopTensorDescriptor_t input_std_deviation_desc,
infiniopTensorDescriptor_t input_desc,
infiniopTensorDescriptor_t weight_desc,
infiniopTensorDescriptor_t bias_desc,
float eps
);

__C __export infiniStatus_t infiniopGetLayerNormWorkspaceSize(infiniopLayerNormDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopLayerNorm(infiniopLayerNormDescriptor_t desc,
void *workspace,
size_t workspace_size,
void * output,
void * input_standardization,
void * input_std_deviation,
const void * input,
const void * weight,
const void * bias,
void *stream
);

__C __export infiniStatus_t infiniopDestroyLayerNormDescriptor(infiniopLayerNormDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopLogicalAndDescriptor_t;

__C __export infiniStatus_t infiniopCreateLogicalAndDescriptor(infiniopHandle_t handle,
infiniopLogicalAndDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t c,
infiniopTensorDescriptor_t a,
infiniopTensorDescriptor_t b);

__C __export infiniStatus_t infiniopGetLogicalAndWorkspaceSize(infiniopLogicalAndDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopLogicalAnd(infiniopLogicalAndDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *c,
const void *a,
const void *b,
void *stream);

__C __export infiniStatus_t infiniopDestroyLogicalAndDescriptor(infiniopLogicalAndDescriptor_t desc);

#endif
Loading