Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
bc6b0ec
silu: completed the operator implementation code, PyTorch unit tests,…
tianyuxbear Jul 25, 2025
e832909
div: completed the operator implementation code, PyTorch unit tests, …
tianyuxbear Jul 29, 2025
147b458
logical_and: completed the operator implementation code, PyTorch unit…
tianyuxbear Jul 30, 2025
9eb53ac
logical_or: completed the operator implementation code, PyTorch unit …
tianyuxbear Jul 30, 2025
3b72eab
equal: completed the operator implementation code, PyTorch unit tests…
tianyuxbear Jul 30, 2025
e31492b
all_equal: completed the operator implementation code, PyTorch unit t…
tianyuxbear Jul 30, 2025
4985e45
relu_backward: completed the operator implementation code, PyTorch un…
tianyuxbear Jul 30, 2025
99f3794
gelu: completed the operator implementation code, PyTorch unit tests,…
tianyuxbear Jul 30, 2025
9ea3cab
gelu_backward: completed the operator implementation code, PyTorch un…
tianyuxbear Jul 30, 2025
7410148
cross_entropy_loss_backward: completed the operator implementation co…
tianyuxbear Jul 30, 2025
312599a
check: format codes to pass github workflow check
tianyuxbear Aug 7, 2025
f93b451
fix: remove the CUDA headers from kernel.cuh to enable compilation on…
tianyuxbear Aug 8, 2025
6c2bda3
dev: complete the migration of the operator to the MetaX platform
tianyuxbear Aug 8, 2025
81b6dc7
format: format the import order of Python test scripts
tianyuxbear Aug 9, 2025
ba1d8c0
fix: for the iluvatar platform, remove the parts of the test scripts …
tianyuxbear Aug 9, 2025
7c599b3
check: add test cases to the scripts/python_test.py one-click test sc…
tianyuxbear Aug 10, 2025
3f1ab67
fix: resolve all_equal operator compilation error on iluvatar platform
tianyuxbear Aug 10, 2025
89f3bb9
fix: modify some codes to profile
tianyuxbear Aug 27, 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
10 changes: 10 additions & 0 deletions include/infiniop.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,27 @@

#include "infiniop/handle.h"
#include "infiniop/ops/add.h"
#include "infiniop/ops/all_equal.h"
#include "infiniop/ops/attention.h"
#include "infiniop/ops/causal_softmax.h"
#include "infiniop/ops/clip.h"
#include "infiniop/ops/conv.h"
#include "infiniop/ops/cross_entropy_loss_backward.h"
#include "infiniop/ops/div.h"
#include "infiniop/ops/equal.h"
#include "infiniop/ops/gelu.h"
#include "infiniop/ops/gelu_backward.h"
#include "infiniop/ops/gemm.h"
#include "infiniop/ops/logical_and.h"
#include "infiniop/ops/logical_or.h"
#include "infiniop/ops/mul.h"
#include "infiniop/ops/random_sample.h"
#include "infiniop/ops/rearrange.h"
#include "infiniop/ops/relu.h"
#include "infiniop/ops/relu_backward.h"
#include "infiniop/ops/rms_norm.h"
#include "infiniop/ops/rope.h"
#include "infiniop/ops/silu.h"
#include "infiniop/ops/sub.h"
#include "infiniop/ops/swiglu.h"
#include "infiniop/tensor_descriptor.h"
Expand Down
26 changes: 26 additions & 0 deletions include/infiniop/ops/all_equal.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#ifndef __INFINIOP_ALL_EQUAL_API_H__
#define __INFINIOP_ALL_EQUAL_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopAllEqualDescriptor_t;

__C __export infiniStatus_t infiniopCreateAllEqualDescriptor(infiniopHandle_t handle,
infiniopAllEqualDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t c,
infiniopTensorDescriptor_t a,
infiniopTensorDescriptor_t b);

__C __export infiniStatus_t infiniopGetAllEqualWorkspaceSize(infiniopAllEqualDescriptor_t desc, size_t *size);

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

__C __export infiniStatus_t infiniopDestroyAllEqualDescriptor(infiniopAllEqualDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopCrossEntropyLossBackwardDescriptor_t;

__C __export infiniStatus_t infiniopCreateCrossEntropyLossBackwardDescriptor(infiniopHandle_t handle,
infiniopCrossEntropyLossBackwardDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t grad_logits,
infiniopTensorDescriptor_t probs,
infiniopTensorDescriptor_t target);

__C __export infiniStatus_t infiniopGetCrossEntropyLossBackwardWorkspaceSize(infiniopCrossEntropyLossBackwardDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopCrossEntropyLossBackward(infiniopCrossEntropyLossBackwardDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *grad_logits,
const void *probs,
const void *target,
void *stream);

__C __export infiniStatus_t infiniopDestroyCrossEntropyLossBackwardDescriptor(infiniopCrossEntropyLossBackwardDescriptor_t desc);

#endif
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
26 changes: 26 additions & 0 deletions include/infiniop/ops/equal.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#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,
infiniopTensorDescriptor_t a,
infiniopTensorDescriptor_t b);

__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/gelu.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#ifndef __INFINIOP_GELU_API_H__
#define __INFINIOP_GELU_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopGeluDescriptor_t;

__C __export infiniStatus_t infiniopCreateGeluDescriptor(infiniopHandle_t handle,
infiniopGeluDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t output,
infiniopTensorDescriptor_t intput);

__C __export infiniStatus_t infiniopGetGeluWorkspaceSize(infiniopGeluDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopGelu(infiniopGeluDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *output,
const void *intput,
void *stream);

__C __export infiniStatus_t infiniopDestroyGeluDescriptor(infiniopGeluDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopGeluBackwardDescriptor_t;

__C __export infiniStatus_t infiniopCreateGeluBackwardDescriptor(infiniopHandle_t handle,
infiniopGeluBackwardDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t grad_input,
infiniopTensorDescriptor_t intput,
infiniopTensorDescriptor_t grad_output);

__C __export infiniStatus_t infiniopGetGeluBackwardWorkspaceSize(infiniopGeluBackwardDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopGeluBackward(infiniopGeluBackwardDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *grad_input,
const void *input,
const void *grad_output,
void *stream);

__C __export infiniStatus_t infiniopDestroyGeluBackwardDescriptor(infiniopGeluBackwardDescriptor_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
26 changes: 26 additions & 0 deletions include/infiniop/ops/logical_or.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#ifndef __INFINIOP_LOGICAL_OR_API_H__
#define __INFINIOP_LOGICAL_OR_API_H__

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopLogicalOrDescriptor_t;

__C __export infiniStatus_t infiniopCreateLogicalOrDescriptor(infiniopHandle_t handle,
infiniopLogicalOrDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t c,
infiniopTensorDescriptor_t a,
infiniopTensorDescriptor_t b);

__C __export infiniStatus_t infiniopGetLogicalOrWorkspaceSize(infiniopLogicalOrDescriptor_t desc, size_t *size);

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

__C __export infiniStatus_t infiniopDestroyLogicalOrDescriptor(infiniopLogicalOrDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopReluBackwardDescriptor_t;

__C __export infiniStatus_t infiniopCreateReluBackwardDescriptor(infiniopHandle_t handle,
infiniopReluBackwardDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t grad_input,
infiniopTensorDescriptor_t intput,
infiniopTensorDescriptor_t grad_output);

__C __export infiniStatus_t infiniopGetReluBackwardWorkspaceSize(infiniopReluBackwardDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopReluBackward(infiniopReluBackwardDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *grad_input,
const void *input,
const void *grad_output,
void *stream);

__C __export infiniStatus_t infiniopDestroyReluBackwardDescriptor(infiniopReluBackwardDescriptor_t desc);

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

#include "../operator_descriptor.h"

typedef struct InfiniopDescriptor *infiniopSiluDescriptor_t;

__C __export infiniStatus_t infiniopCreateSiluDescriptor(infiniopHandle_t handle,
infiniopSiluDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t output,
infiniopTensorDescriptor_t intput);

__C __export infiniStatus_t infiniopGetSiluWorkspaceSize(infiniopSiluDescriptor_t desc, size_t *size);

__C __export infiniStatus_t infiniopSilu(infiniopSiluDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *output,
const void *intput,
void *stream);

__C __export infiniStatus_t infiniopDestroySiluDescriptor(infiniopSiluDescriptor_t desc);

#endif
36 changes: 23 additions & 13 deletions scripts/python_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,31 @@
def run_tests(args):
failed = []
for test in [
"add.py",
"attention.py",
"causal_softmax.py",
"clip.py",
"gemm.py",
"mul.py",
"random_sample.py",
"rearrange.py",
"rms_norm.py",
"rope.py",
"sub.py",
"swiglu.py",
# "add.py",
# "attention.py",
# "causal_softmax.py",
# "clip.py",
# "gemm.py",
# "mul.py",
# "random_sample.py",
# "rearrange.py",
# "rms_norm.py",
# "rope.py",
# "sub.py",
# "swiglu.py",
"silu.py",
"div.py",
"logical_and.py",
"logical_or.py",
"equal.py",
"all_equal.py",
"relu_backward.py",
"gelu.py",
"gelu_backward.py",
"cross_entropy_loss_backward.py"
]:
result = subprocess.run(
f"python {test} {args} --debug", text=True, encoding="utf-8", shell=True
f"python {test} {args} --profile", text=True, encoding="utf-8", shell=True
)
if result.returncode != 0:
failed.append(test)
Expand Down
46 changes: 33 additions & 13 deletions src/infiniop-test/include/ops.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@ DECLARE_INFINIOP_TEST(add)
DECLARE_INFINIOP_TEST(causal_softmax)
DECLARE_INFINIOP_TEST(rearrange)
DECLARE_INFINIOP_TEST(sub)
DECLARE_INFINIOP_TEST(silu)
DECLARE_INFINIOP_TEST(div)
DECLARE_INFINIOP_TEST(logical_and)
DECLARE_INFINIOP_TEST(logical_or)
DECLARE_INFINIOP_TEST(equal)
DECLARE_INFINIOP_TEST(all_equal)
DECLARE_INFINIOP_TEST(relu_backward)
DECLARE_INFINIOP_TEST(gelu)
DECLARE_INFINIOP_TEST(gelu_backward)
DECLARE_INFINIOP_TEST(cross_entropy_loss_backward)

#define REGISTER_INFINIOP_TEST(name) \
{ \
Expand All @@ -30,19 +40,29 @@ DECLARE_INFINIOP_TEST(sub)
/*
* Register all the tests here
*/
#define TEST_BUILDER_MAPPINGS \
{ \
REGISTER_INFINIOP_TEST(gemm) \
REGISTER_INFINIOP_TEST(random_sample) \
REGISTER_INFINIOP_TEST(add) \
REGISTER_INFINIOP_TEST(mul) \
REGISTER_INFINIOP_TEST(clip) \
REGISTER_INFINIOP_TEST(swiglu) \
REGISTER_INFINIOP_TEST(rope) \
REGISTER_INFINIOP_TEST(rms_norm) \
REGISTER_INFINIOP_TEST(causal_softmax) \
REGISTER_INFINIOP_TEST(rearrange) \
REGISTER_INFINIOP_TEST(sub) \
#define TEST_BUILDER_MAPPINGS \
{ \
REGISTER_INFINIOP_TEST(gemm) \
REGISTER_INFINIOP_TEST(random_sample) \
REGISTER_INFINIOP_TEST(add) \
REGISTER_INFINIOP_TEST(mul) \
REGISTER_INFINIOP_TEST(clip) \
REGISTER_INFINIOP_TEST(swiglu) \
REGISTER_INFINIOP_TEST(rope) \
REGISTER_INFINIOP_TEST(rms_norm) \
REGISTER_INFINIOP_TEST(causal_softmax) \
REGISTER_INFINIOP_TEST(rearrange) \
REGISTER_INFINIOP_TEST(sub) \
REGISTER_INFINIOP_TEST(silu) \
REGISTER_INFINIOP_TEST(div) \
REGISTER_INFINIOP_TEST(logical_and) \
REGISTER_INFINIOP_TEST(logical_or) \
REGISTER_INFINIOP_TEST(equal) \
REGISTER_INFINIOP_TEST(all_equal) \
REGISTER_INFINIOP_TEST(relu_backward) \
REGISTER_INFINIOP_TEST(gelu) \
REGISTER_INFINIOP_TEST(gelu_backward) \
REGISTER_INFINIOP_TEST(cross_entropy_loss_backward) \
}

namespace infiniop_test {
Expand Down
Loading
Loading