Skip to content

Commit 8ca4b32

Browse files
committed
Issue/887 - Refactor binary and unary operators to reduce code duplication.
1 parent 547c2bc commit 8ca4b32

163 files changed

Lines changed: 1891 additions & 7239 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

include/infiniop/ops/abs.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
11
#ifndef __INFINIOP_ABS_API_H__
22
#define __INFINIOP_ABS_API_H__
33

4-
#include "../operator_descriptor.h"
4+
#include "unary_op_api.h"
55

6-
typedef struct InfiniopDescriptor *infiniopAbsDescriptor_t;
7-
8-
__C __export infiniStatus_t infiniopCreateAbsDescriptor(infiniopHandle_t handle,
9-
infiniopAbsDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y,
11-
infiniopTensorDescriptor_t x);
12-
13-
__C __export infiniStatus_t infiniopGetAbsWorkspaceSize(infiniopAbsDescriptor_t desc, size_t *size);
14-
15-
__C __export infiniStatus_t infiniopAbs(infiniopAbsDescriptor_t desc,
16-
void *workspace,
17-
size_t workspace_size,
18-
void *y,
19-
const void *x,
20-
void *stream);
21-
22-
__C __export infiniStatus_t infiniopDestroyAbsDescriptor(infiniopAbsDescriptor_t desc);
6+
UNARY_OP_API_DECLARE(abs, Abs)
237

248
#endif

include/infiniop/ops/acos.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
11
#ifndef __INFINIOP_ACOS_API_H__
22
#define __INFINIOP_ACOS_API_H__
33

4-
#include "../operator_descriptor.h"
4+
#include "unary_op_api.h"
55

6-
typedef struct InfiniopDescriptor *infiniopAcosDescriptor_t;
7-
8-
__C __export infiniStatus_t infiniopCreateAcosDescriptor(infiniopHandle_t handle,
9-
infiniopAcosDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y,
11-
infiniopTensorDescriptor_t x);
12-
13-
__C __export infiniStatus_t infiniopGetAcosWorkspaceSize(infiniopAcosDescriptor_t desc, size_t *size);
14-
15-
__C __export infiniStatus_t infiniopAcos(infiniopAcosDescriptor_t desc,
16-
void *workspace,
17-
size_t workspace_size,
18-
void *y,
19-
const void *x,
20-
void *stream);
21-
22-
__C __export infiniStatus_t infiniopDestroyAcosDescriptor(infiniopAcosDescriptor_t desc);
6+
UNARY_OP_API_DECLARE(acos, Acos)
237

248
#endif

include/infiniop/ops/acosh.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
11
#ifndef __INFINIOP_ACOSH_API_H__
22
#define __INFINIOP_ACOSH_API_H__
33

4-
#include "../operator_descriptor.h"
4+
#include "unary_op_api.h"
55

6-
typedef struct InfiniopDescriptor *infiniopAcoshDescriptor_t;
7-
8-
__C __export infiniStatus_t infiniopCreateAcoshDescriptor(infiniopHandle_t handle,
9-
infiniopAcoshDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y,
11-
infiniopTensorDescriptor_t x);
12-
13-
__C __export infiniStatus_t infiniopGetAcoshWorkspaceSize(infiniopAcoshDescriptor_t desc, size_t *size);
14-
15-
__C __export infiniStatus_t infiniopAcosh(infiniopAcoshDescriptor_t desc,
16-
void *workspace,
17-
size_t workspace_size,
18-
void *y,
19-
const void *x,
20-
void *stream);
21-
22-
__C __export infiniStatus_t infiniopDestroyAcoshDescriptor(infiniopAcoshDescriptor_t desc);
6+
UNARY_OP_API_DECLARE(acosh, Acosh)
237

248
#endif

include/infiniop/ops/add.h

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,8 @@
11
#ifndef __INFINIOP_ADD_API_H__
22
#define __INFINIOP_ADD_API_H__
33

4-
#include "../operator_descriptor.h"
4+
#include "binary_op_api.h"
55

6-
typedef struct InfiniopDescriptor *infiniopAddDescriptor_t;
7-
8-
__C __export infiniStatus_t infiniopCreateAddDescriptor(infiniopHandle_t handle,
9-
infiniopAddDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t c,
11-
infiniopTensorDescriptor_t a,
12-
infiniopTensorDescriptor_t b);
13-
14-
__C __export infiniStatus_t infiniopGetAddWorkspaceSize(infiniopAddDescriptor_t desc, size_t *size);
15-
16-
__C __export infiniStatus_t infiniopAdd(infiniopAddDescriptor_t desc,
17-
void *workspace,
18-
size_t workspace_size,
19-
void *c,
20-
const void *a,
21-
const void *b,
22-
void *stream);
23-
24-
__C __export infiniStatus_t infiniopDestroyAddDescriptor(infiniopAddDescriptor_t desc);
6+
BINARY_OP_API_DECLARE(add, Add)
257

268
#endif

include/infiniop/ops/asin.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
11
#ifndef __INFINIOP_ASIN_API_H__
22
#define __INFINIOP_ASIN_API_H__
33

4-
#include "../operator_descriptor.h"
4+
#include "unary_op_api.h"
55

6-
typedef struct InfiniopDescriptor *infiniopAsinDescriptor_t;
7-
8-
__C __export infiniStatus_t infiniopCreateAsinDescriptor(infiniopHandle_t handle,
9-
infiniopAsinDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y,
11-
infiniopTensorDescriptor_t x);
12-
13-
__C __export infiniStatus_t infiniopGetAsinWorkspaceSize(infiniopAsinDescriptor_t desc, size_t *size);
14-
15-
__C __export infiniStatus_t infiniopAsin(infiniopAsinDescriptor_t desc,
16-
void *workspace,
17-
size_t workspace_size,
18-
void *y,
19-
const void *x,
20-
void *stream);
21-
22-
__C __export infiniStatus_t infiniopDestroyAsinDescriptor(infiniopAsinDescriptor_t desc);
6+
UNARY_OP_API_DECLARE(asin, Asin)
237

248
#endif

include/infiniop/ops/asinh.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
11
#ifndef __INFINIOP_ASINH_API_H__
22
#define __INFINIOP_ASINH_API_H__
33

4-
#include "../operator_descriptor.h"
4+
#include "unary_op_api.h"
55

6-
typedef struct InfiniopDescriptor *infiniopAsinhDescriptor_t;
7-
8-
__C __export infiniStatus_t infiniopCreateAsinhDescriptor(infiniopHandle_t handle,
9-
infiniopAsinhDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y,
11-
infiniopTensorDescriptor_t x);
12-
13-
__C __export infiniStatus_t infiniopGetAsinhWorkspaceSize(infiniopAsinhDescriptor_t desc, size_t *size);
14-
15-
__C __export infiniStatus_t infiniopAsinh(infiniopAsinhDescriptor_t desc,
16-
void *workspace,
17-
size_t workspace_size,
18-
void *y,
19-
const void *x,
20-
void *stream);
21-
22-
__C __export infiniStatus_t infiniopDestroyAsinhDescriptor(infiniopAsinhDescriptor_t desc);
6+
UNARY_OP_API_DECLARE(asinh, Asinh)
237

248
#endif

include/infiniop/ops/atan.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
11
#ifndef __INFINIOP_ATAN_API_H__
22
#define __INFINIOP_ATAN_API_H__
33

4-
#include "../operator_descriptor.h"
4+
#include "unary_op_api.h"
55

6-
typedef struct InfiniopDescriptor *infiniopAtanDescriptor_t;
7-
8-
__C __export infiniStatus_t infiniopCreateAtanDescriptor(infiniopHandle_t handle,
9-
infiniopAtanDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y,
11-
infiniopTensorDescriptor_t x);
12-
13-
__C __export infiniStatus_t infiniopGetAtanWorkspaceSize(infiniopAtanDescriptor_t desc, size_t *size);
14-
15-
__C __export infiniStatus_t infiniopAtan(infiniopAtanDescriptor_t desc,
16-
void *workspace,
17-
size_t workspace_size,
18-
void *y,
19-
const void *x,
20-
void *stream);
21-
22-
__C __export infiniStatus_t infiniopDestroyAtanDescriptor(infiniopAtanDescriptor_t desc);
6+
UNARY_OP_API_DECLARE(atan, Atan)
237

248
#endif

include/infiniop/ops/atanh.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
11
#ifndef __INFINIOP_ATANH_API_H__
22
#define __INFINIOP_ATANH_API_H__
33

4-
#include "../operator_descriptor.h"
4+
#include "unary_op_api.h"
55

6-
typedef struct InfiniopDescriptor *infiniopAtanhDescriptor_t;
7-
8-
__C __export infiniStatus_t infiniopCreateAtanhDescriptor(infiniopHandle_t handle,
9-
infiniopAtanhDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y,
11-
infiniopTensorDescriptor_t x);
12-
13-
__C __export infiniStatus_t infiniopGetAtanhWorkspaceSize(infiniopAtanhDescriptor_t desc, size_t *size);
14-
15-
__C __export infiniStatus_t infiniopAtanh(infiniopAtanhDescriptor_t desc,
16-
void *workspace,
17-
size_t workspace_size,
18-
void *y,
19-
const void *x,
20-
void *stream);
21-
22-
__C __export infiniStatus_t infiniopDestroyAtanhDescriptor(infiniopAtanhDescriptor_t desc);
6+
UNARY_OP_API_DECLARE(atanh, Atanh)
237

248
#endif
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#ifndef __INFINIOP_BINARY_OP_API_H__
2+
#define __INFINIOP_BINARY_OP_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
/**
7+
* @brief Macro to generate the C API header for a binary operator.
8+
*
9+
* This macro generates all the necessary declarations for a binary operator:
10+
* - Descriptor type definition
11+
* - Create descriptor function
12+
* - Get workspace size function
13+
* - Execute operator function
14+
* - Destroy descriptor function
15+
*
16+
* Usage:
17+
* BINARY_OP_API_DECLARE(div, Div)
18+
* BINARY_OP_API_DECLARE(pow, Pow)
19+
*
20+
* @param OP_NAME Lowercase operator name (e.g., div, pow, mod)
21+
* @param OP_NAME_UPPER Uppercase operator name (e.g., Div, Pow, Mod)
22+
*/
23+
#define BINARY_OP_API_DECLARE(OP_NAME, OP_NAME_UPPER) \
24+
\
25+
typedef struct InfiniopDescriptor *infiniop##OP_NAME_UPPER##Descriptor_t; \
26+
\
27+
__C __export infiniStatus_t infiniopCreate##OP_NAME_UPPER##Descriptor( \
28+
infiniopHandle_t handle, \
29+
infiniop##OP_NAME_UPPER##Descriptor_t *desc_ptr, \
30+
infiniopTensorDescriptor_t c, \
31+
infiniopTensorDescriptor_t a, \
32+
infiniopTensorDescriptor_t b); \
33+
\
34+
__C __export infiniStatus_t infiniopGet##OP_NAME_UPPER##WorkspaceSize( \
35+
infiniop##OP_NAME_UPPER##Descriptor_t desc, \
36+
size_t *size); \
37+
\
38+
__C __export infiniStatus_t infiniop##OP_NAME_UPPER( \
39+
infiniop##OP_NAME_UPPER##Descriptor_t desc, \
40+
void *workspace, \
41+
size_t workspace_size, \
42+
void *c, \
43+
const void *a, \
44+
const void *b, \
45+
void *stream); \
46+
\
47+
__C __export infiniStatus_t infiniopDestroy##OP_NAME_UPPER##Descriptor( \
48+
infiniop##OP_NAME_UPPER##Descriptor_t desc);
49+
50+
#endif // __INFINIOP_BINARY_OP_API_H__

include/infiniop/ops/ceil.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
11
#ifndef __INFINIOP_CEIL_API_H__
22
#define __INFINIOP_CEIL_API_H__
33

4-
#include "../operator_descriptor.h"
4+
#include "unary_op_api.h"
55

6-
typedef struct InfiniopDescriptor *infiniopCeilDescriptor_t;
7-
8-
__C __export infiniStatus_t infiniopCreateCeilDescriptor(infiniopHandle_t handle,
9-
infiniopCeilDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y,
11-
infiniopTensorDescriptor_t x);
12-
13-
__C __export infiniStatus_t infiniopGetCeilWorkspaceSize(infiniopCeilDescriptor_t desc, size_t *size);
14-
15-
__C __export infiniStatus_t infiniopCeil(infiniopCeilDescriptor_t desc,
16-
void *workspace,
17-
size_t workspace_size,
18-
void *y,
19-
const void *x,
20-
void *stream);
21-
22-
__C __export infiniStatus_t infiniopDestroyCeilDescriptor(infiniopCeilDescriptor_t desc);
6+
UNARY_OP_API_DECLARE(ceil, Ceil)
237

248
#endif

0 commit comments

Comments
 (0)