Skip to content

Commit 9c6ef74

Browse files
committed
Issue/888 - Add averagepool,batch_norm,cross_entropy_loss,exp,hardswish,gather,index_copy_inplace,interpolate_nearest,maxpool,scatter operators from competition.
1 parent 3b5afff commit 9c6ef74

File tree

96 files changed

+9514
-1
lines changed

Some content is hidden

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

96 files changed

+9514
-1
lines changed

include/infiniop/ops/averagepool.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#ifndef __INFINIOP_AVERAGEPOOL_H__
2+
#define __INFINIOP_AVERAGEPOOL_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
__C typedef struct InfiniopDescriptor *infiniopAvgPoolDescriptor_t;
7+
8+
__C infiniStatus_t infiniopCreateAvgPoolDescriptor(infiniopHandle_t handle,
9+
infiniopAvgPoolDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t output_desc,
11+
infiniopTensorDescriptor_t input_desc,
12+
void *kernel_size,
13+
void *strides,
14+
void *pads,
15+
bool ceil_mode);
16+
17+
__C infiniStatus_t infiniopGetAvgPoolWorkspaceSize(infiniopAvgPoolDescriptor_t desc,
18+
size_t *size);
19+
20+
__C infiniStatus_t infiniopAvgPool(infiniopAvgPoolDescriptor_t desc,
21+
void *workspace,
22+
size_t workspace_size,
23+
void *output,
24+
const void *input,
25+
void *stream);
26+
27+
__C infiniStatus_t infiniopDestroyAvgPoolDescriptor(infiniopAvgPoolDescriptor_t desc);
28+
29+
#endif // __INFINIOP_AVERAGEPOOL_H__

include/infiniop/ops/batch_norm.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#ifndef __INFINIOP_BATCH_NORM_API_H__
2+
#define __INFINIOP_BATCH_NORM_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopBatchNormDescriptor_t;
7+
8+
__C __export infiniStatus_t infiniopCreateBatchNormDescriptor(
9+
infiniopHandle_t handle,
10+
infiniopBatchNormDescriptor_t *desc_ptr,
11+
infiniopTensorDescriptor_t output_desc,
12+
infiniopTensorDescriptor_t running_mean_desc,
13+
infiniopTensorDescriptor_t running_var_desc,
14+
infiniopTensorDescriptor_t input_desc,
15+
infiniopTensorDescriptor_t weight_desc,
16+
infiniopTensorDescriptor_t bias_desc,
17+
float momentum,
18+
float eps
19+
);
20+
21+
__C __export infiniStatus_t infiniopGetBatchNormWorkspaceSize(infiniopBatchNormDescriptor_t desc, size_t *size);
22+
23+
__C __export infiniStatus_t infiniopBatchNorm(infiniopBatchNormDescriptor_t desc,
24+
void *workspace,
25+
size_t workspace_size,
26+
void * output,
27+
void * running_mean,
28+
void * running_var,
29+
const void * input,
30+
const void * weight,
31+
const void * bias,
32+
void *stream
33+
);
34+
35+
__C __export infiniStatus_t infiniopDestroyBatchNormDescriptor(infiniopBatchNormDescriptor_t desc);
36+
37+
#endif
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#ifndef __INFINIOP_CROSS_ENTROPY_LOSS_API_H__
2+
#define __INFINIOP_CROSS_ENTROPY_LOSS_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopCrossEntropyLossDescriptor_t;
7+
8+
__C infiniStatus_t infiniopCreateCrossEntropyLossDescriptor(infiniopHandle_t handle,
9+
infiniopCrossEntropyLossDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t loss_desc,
11+
infiniopTensorDescriptor_t logits_desc,
12+
infiniopTensorDescriptor_t target_desc);
13+
14+
__C infiniStatus_t infiniopGetCrossEntropyLossWorkspaceSize(infiniopCrossEntropyLossDescriptor_t desc,
15+
size_t *size);
16+
17+
__C infiniStatus_t infiniopCrossEntropyLoss(infiniopCrossEntropyLossDescriptor_t desc,
18+
void *workspace,
19+
size_t workspace_size,
20+
void *loss,
21+
const void *logits,
22+
const void *target,
23+
void *stream);
24+
25+
__C infiniStatus_t infiniopDestroyCrossEntropyLossDescriptor(infiniopCrossEntropyLossDescriptor_t desc);
26+
27+
#endif // __INFINIOP_CROSS_ENTROPY_LOSS_API_H__

include/infiniop/ops/exp.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#ifndef __INFINIOP_EXP_API_H__
2+
#define __INFINIOP_EXP_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopExpDescriptor_t;
7+
8+
__C __export infiniStatus_t infiniopCreateExpDescriptor(infiniopHandle_t handle,
9+
infiniopExpDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t output,
11+
infiniopTensorDescriptor_t input);
12+
13+
__C __export infiniStatus_t infiniopGetExpWorkspaceSize(infiniopExpDescriptor_t desc, size_t *size);
14+
15+
__C __export infiniStatus_t infiniopExp(infiniopExpDescriptor_t desc,
16+
void *workspace,
17+
size_t workspace_size,
18+
void *output,
19+
const void *input,
20+
void *stream);
21+
22+
__C __export infiniStatus_t infiniopDestroyExpDescriptor(infiniopExpDescriptor_t desc);
23+
24+
#endif

include/infiniop/ops/gather.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#ifndef __INFINIOP_GATHER_API_H__
2+
#define __INFINIOP_GATHER_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopGatherDescriptor_t;
7+
8+
__C __export infiniStatus_t infiniopCreateGatherDescriptor(
9+
infiniopHandle_t handle,
10+
infiniopGatherDescriptor_t *desc_ptr,
11+
infiniopTensorDescriptor_t output_desc,
12+
infiniopTensorDescriptor_t input_desc,
13+
infiniopTensorDescriptor_t index_desc,
14+
size_t dim
15+
);
16+
17+
__C __export infiniStatus_t infiniopGetGatherWorkspaceSize(infiniopGatherDescriptor_t desc, size_t *size);
18+
19+
__C __export infiniStatus_t infiniopGather(
20+
infiniopGatherDescriptor_t desc,
21+
void *workspace,
22+
size_t workspace_size,
23+
void * output,
24+
const void * input,
25+
const void * index,
26+
void *stream
27+
);
28+
29+
__C __export infiniStatus_t infiniopDestroyGatherDescriptor(infiniopGatherDescriptor_t desc);
30+
31+
#endif

include/infiniop/ops/hardswish.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#ifndef __INFINIOP_HARDSWISH_API_H__
2+
#define __INFINIOP_HARDSWISH_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopHardswishDescriptor_t;
7+
8+
__C __export infiniStatus_t infiniopCreateHardswishDescriptor(infiniopHandle_t handle,
9+
infiniopHardswishDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t output,
11+
infiniopTensorDescriptor_t input);
12+
13+
__C __export infiniStatus_t infiniopGetHardswishWorkspaceSize(infiniopHardswishDescriptor_t desc, size_t *size);
14+
15+
__C __export infiniStatus_t infiniopHardswish(infiniopHardswishDescriptor_t desc,
16+
void *workspace,
17+
size_t workspace_size,
18+
void *output,
19+
const void *input,
20+
void *stream);
21+
22+
__C __export infiniStatus_t infiniopDestroyHardswishDescriptor(infiniopHardswishDescriptor_t desc);
23+
24+
#endif
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#ifndef __INFINIOP_INDEX_COPY_INPLACE_API_H__
2+
#define __INFINIOP_INDEX_COPY_INPLACE_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopIndexCopyInplaceDescriptor_t;
7+
8+
__C __export infiniStatus_t infiniopCreateIndexCopyInplaceDescriptor(
9+
infiniopHandle_t handle,
10+
infiniopIndexCopyInplaceDescriptor_t *desc_ptr,
11+
infiniopTensorDescriptor_t output_desc,
12+
infiniopTensorDescriptor_t input_desc,
13+
infiniopTensorDescriptor_t index_desc,
14+
size_t dim
15+
);
16+
17+
__C __export infiniStatus_t infiniopGetIndexCopyInplaceWorkspaceSize(infiniopIndexCopyInplaceDescriptor_t desc, size_t *size);
18+
19+
__C __export infiniStatus_t infiniopIndexCopyInplace(infiniopIndexCopyInplaceDescriptor_t desc,
20+
void *workspace,
21+
size_t workspace_size,
22+
void * output,
23+
const void * input,
24+
const void * index,
25+
void *stream
26+
);
27+
28+
__C __export infiniStatus_t infiniopDestroyIndexCopyInplaceDescriptor(infiniopIndexCopyInplaceDescriptor_t desc);
29+
30+
#endif
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#ifndef __INFINIOP_INTERPOLATE_NEAREST_H__
2+
#define __INFINIOP_INTERPOLATE_NEAREST_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
__C typedef struct InfiniopDescriptor *infiniopInterpolateNearestDescriptor_t;
7+
8+
__C infiniStatus_t infiniopCreateInterpolateNearestDescriptor(infiniopHandle_t handle,
9+
infiniopInterpolateNearestDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t output_desc,
11+
infiniopTensorDescriptor_t input_desc);
12+
13+
__C infiniStatus_t infiniopGetInterpolateNearestWorkspaceSize(infiniopInterpolateNearestDescriptor_t desc,
14+
size_t *size);
15+
16+
__C infiniStatus_t infiniopInterpolateNearest(infiniopInterpolateNearestDescriptor_t desc,
17+
void *workspace,
18+
size_t workspace_size,
19+
void *output,
20+
const void *input,
21+
void *stream);
22+
23+
__C infiniStatus_t infiniopDestroyInterpolateNearestDescriptor(infiniopInterpolateNearestDescriptor_t desc);
24+
25+
#endif // __INFINIOP_INTERPOLATE_NEAREST_H__

include/infiniop/ops/maxpool.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#ifndef __INFINIOP_MAX_POOL_H__
2+
#define __INFINIOP_MAX_POOL_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
__C typedef struct InfiniopDescriptor *infiniopMaxPoolDescriptor_t;
7+
8+
__C infiniStatus_t infiniopCreateMaxPoolDescriptor(infiniopHandle_t handle,
9+
infiniopMaxPoolDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t output_desc,
11+
infiniopTensorDescriptor_t input_desc,
12+
void *kernel_size,
13+
void *strides,
14+
void *pads,
15+
bool ceil_mode);
16+
17+
__C infiniStatus_t infiniopGetMaxPoolWorkspaceSize(infiniopMaxPoolDescriptor_t desc,
18+
size_t *size);
19+
20+
__C infiniStatus_t infiniopMaxPool(infiniopMaxPoolDescriptor_t desc,
21+
void *workspace,
22+
size_t workspace_size,
23+
void *output,
24+
const void *input,
25+
void *stream);
26+
27+
__C infiniStatus_t infiniopDestroyMaxPoolDescriptor(infiniopMaxPoolDescriptor_t desc);
28+
29+
#endif // __INFINIOP_MAX_POOL_H__

include/infiniop/ops/scatter.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#ifndef __INFINIOP_SCATTER_API_H__
2+
#define __INFINIOP_SCATTER_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopScatterDescriptor_t;
7+
8+
__C __export infiniStatus_t infiniopCreateScatterDescriptor(
9+
infiniopHandle_t handle,
10+
infiniopScatterDescriptor_t *desc_ptr,
11+
infiniopTensorDescriptor_t output_desc,
12+
infiniopTensorDescriptor_t input_desc,
13+
infiniopTensorDescriptor_t index_desc,
14+
size_t dim
15+
);
16+
17+
__C __export infiniStatus_t infiniopGetScatterWorkspaceSize(infiniopScatterDescriptor_t desc, size_t *size);
18+
19+
__C __export infiniStatus_t infiniopScatter(infiniopScatterDescriptor_t desc,
20+
void *workspace,
21+
size_t workspace_size,
22+
void * output,
23+
const void * input,
24+
const void * index,
25+
void *stream
26+
);
27+
28+
__C __export infiniStatus_t infiniopDestroyScatterDescriptor(infiniopScatterDescriptor_t desc);
29+
30+
#endif

0 commit comments

Comments
 (0)