Skip to content

Commit f7b2511

Browse files
Merge pull request #1094 from InfiniTensor/issue/1031_T1-1-5
【比赛2025秋】T-1-5
2 parents ed61b51 + 2c289b9 commit f7b2511

100 files changed

Lines changed: 6413 additions & 129 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/infinicore/ops/acos.hpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#pragma once
2+
3+
#include "../device.hpp"
4+
#include "common/op.hpp"
5+
6+
namespace infinicore::op {
7+
class Acos {
8+
public:
9+
using schema = void (*)(Tensor, Tensor);
10+
static void execute(Tensor output, Tensor input);
11+
static common::OpDispatcher<schema> &dispatcher();
12+
};
13+
14+
Tensor acos(Tensor input);
15+
void acos_(Tensor output, Tensor input);
16+
} // namespace infinicore::op
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#pragma once
2+
3+
#include "../device.hpp"
4+
#include "common/op.hpp"
5+
6+
namespace infinicore::op {
7+
8+
class AdaptiveAvgPool1d {
9+
public:
10+
// Schema: execute(Output, Input)
11+
using schema = void (*)(Tensor, Tensor);
12+
static void execute(Tensor output, Tensor input);
13+
static common::OpDispatcher<schema> &dispatcher();
14+
};
15+
16+
Tensor adaptive_avg_pool1d(Tensor input, int64_t output_size);
17+
18+
} // namespace infinicore::op

include/infinicore/ops/addbmm.hpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#pragma once
2+
3+
#include "../device.hpp"
4+
#include "common/op.hpp"
5+
6+
namespace infinicore::op {
7+
8+
class Addbmm {
9+
public:
10+
using schema = void (*)(Tensor, Tensor, Tensor, Tensor, float, float);
11+
static void execute(Tensor output, Tensor input, Tensor batch1, Tensor batch2, float beta, float alpha);
12+
13+
static common::OpDispatcher<schema> &dispatcher();
14+
};
15+
Tensor addbmm(Tensor input, Tensor batch1, Tensor batch2, float beta = 1.0f, float alpha = 1.0f);
16+
17+
void addbmm_(Tensor output, Tensor input, Tensor batch1, Tensor batch2, float beta, float alpha);
18+
19+
} // namespace infinicore::op
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#pragma once
2+
3+
#include "../device.hpp"
4+
#include "common/op.hpp"
5+
#include <vector>
6+
7+
namespace infinicore::op {
8+
9+
class AffineGrid {
10+
public:
11+
using schema = void (*)(Tensor, Tensor, bool);
12+
static void execute(Tensor output, Tensor theta, bool align_corners);
13+
static common::OpDispatcher<schema> &dispatcher();
14+
};
15+
Tensor affine_grid(Tensor theta, const std::vector<int64_t> &size, bool align_corners = false);
16+
17+
} // namespace infinicore::op

include/infinicore/ops/floor.hpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#pragma once
2+
3+
#include "../device.hpp"
4+
#include "common/op.hpp"
5+
6+
namespace infinicore::op {
7+
class Floor {
8+
public:
9+
using schema = void (*)(Tensor, Tensor);
10+
static void execute(Tensor output, Tensor input);
11+
static common::OpDispatcher<schema> &dispatcher();
12+
};
13+
14+
Tensor floor(Tensor input);
15+
void floor_(Tensor output, Tensor input);
16+
} // namespace infinicore::op

include/infiniop.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22
#define __INFINIOP_API_H__
33

44
#include "infiniop/handle.h"
5+
#include "infiniop/ops/acos.h"
6+
#include "infiniop/ops/adaptive_avg_pool1d.h"
57
#include "infiniop/ops/adaptive_avg_pool3d.h"
68
#include "infiniop/ops/adaptive_max_pool1d.h"
79
#include "infiniop/ops/add.h"
810
#include "infiniop/ops/add_rms_norm.h"
11+
#include "infiniop/ops/addbmm.h"
912
#include "infiniop/ops/addcmul.h"
1013
#include "infiniop/ops/addr.h"
14+
#include "infiniop/ops/affine_grid.h"
1115
#include "infiniop/ops/all.h"
1216
#include "infiniop/ops/asin.h"
1317
#include "infiniop/ops/asinh.h"
@@ -26,6 +30,7 @@
2630
#include "infiniop/ops/embedding.h"
2731
#include "infiniop/ops/equal.h"
2832
#include "infiniop/ops/flash_attention.h"
33+
#include "infiniop/ops/floor.h"
2934
#include "infiniop/ops/fmin.h"
3035
#include "infiniop/ops/fmod.h"
3136
#include "infiniop/ops/gelu.h"

include/infiniop/ops/acos.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#ifndef __INFINIOP_ACOS_API_H__
2+
#define __INFINIOP_ACOS_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopAcosDescriptor_t;
7+
8+
__INFINI_C __export infiniStatus_t infiniopCreateAcosDescriptor(infiniopHandle_t handle,
9+
infiniopAcosDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t y,
11+
infiniopTensorDescriptor_t x);
12+
13+
__INFINI_C __export infiniStatus_t infiniopGetAcosWorkspaceSize(infiniopAcosDescriptor_t desc, size_t *size);
14+
15+
__INFINI_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+
__INFINI_C __export infiniStatus_t infiniopDestroyAcosDescriptor(infiniopAcosDescriptor_t desc);
23+
24+
#endif
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#ifndef __INFINIOP_ADAPTIVE_AVG_POOL1D_API_H__
2+
#define __INFINIOP_ADAPTIVE_AVG_POOL1D_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
// 定义算子描述符类型
7+
typedef struct InfiniopDescriptor *infiniopAdaptiveAvgPool1dDescriptor_t;
8+
9+
// 1. 创建算子描述符
10+
__INFINI_C __export infiniStatus_t infiniopCreateAdaptiveAvgPool1dDescriptor(
11+
infiniopHandle_t handle,
12+
infiniopAdaptiveAvgPool1dDescriptor_t *desc_ptr,
13+
infiniopTensorDescriptor_t out_desc,
14+
infiniopTensorDescriptor_t input_desc);
15+
16+
// 2. 获取 Workspace 大小
17+
__INFINI_C __export infiniStatus_t infiniopGetAdaptiveAvgPool1dWorkspaceSize(
18+
infiniopAdaptiveAvgPool1dDescriptor_t desc,
19+
size_t *size);
20+
21+
// 3. 执行计算
22+
__INFINI_C __export infiniStatus_t infiniopAdaptiveAvgPool1d(
23+
infiniopAdaptiveAvgPool1dDescriptor_t desc,
24+
void *workspace,
25+
size_t workspace_size,
26+
void *output,
27+
const void *input,
28+
void *stream);
29+
30+
// 4. 销毁描述符
31+
__INFINI_C __export infiniStatus_t infiniopDestroyAdaptiveAvgPool1dDescriptor(
32+
infiniopAdaptiveAvgPool1dDescriptor_t desc);
33+
34+
#endif // __INFINIOP_ADAPTIVE_AVG_POOL1D_API_H__

include/infiniop/ops/addbmm.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#ifndef __INFINIOP_ADDBMM_API_H__
2+
#define __INFINIOP_ADDBMM_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopAddbmmDescriptor_t;
7+
8+
__INFINI_C __export infiniStatus_t infiniopCreateAddbmmDescriptor(infiniopHandle_t handle,
9+
infiniopAddbmmDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t out_desc,
11+
infiniopTensorDescriptor_t input_desc,
12+
infiniopTensorDescriptor_t batch1_desc,
13+
infiniopTensorDescriptor_t batch2_desc,
14+
float alpha,
15+
float beta);
16+
17+
__INFINI_C __export infiniStatus_t infiniopGetAddbmmWorkspaceSize(infiniopAddbmmDescriptor_t desc, size_t *size);
18+
19+
__INFINI_C __export infiniStatus_t infiniopAddbmm(infiniopAddbmmDescriptor_t desc,
20+
void *workspace,
21+
size_t workspace_size,
22+
void *output,
23+
const void *input,
24+
const void *batch1,
25+
const void *batch2,
26+
void *stream);
27+
28+
__INFINI_C __export infiniStatus_t infiniopDestroyAddbmmDescriptor(infiniopAddbmmDescriptor_t desc);
29+
30+
#endif // __INFINIOP_ADDBMM_API_H__

include/infiniop/ops/affine_grid.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#ifndef __INFINIOP_AFFINE_GRID_API_H__
2+
#define __INFINIOP_AFFINE_GRID_API_H__
3+
#include "../operator_descriptor.h"
4+
#include <stdint.h>
5+
6+
typedef struct InfiniopDescriptor *infiniopAffineGridDescriptor_t;
7+
8+
__INFINI_C __export infiniStatus_t infiniopCreateAffineGridDescriptor(infiniopHandle_t handle,
9+
infiniopAffineGridDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t output_desc,
11+
infiniopTensorDescriptor_t input_desc,
12+
uint8_t align_corners);
13+
14+
__INFINI_C __export infiniStatus_t infiniopGetAffineGridWorkspaceSize(infiniopAffineGridDescriptor_t desc, size_t *size);
15+
16+
__INFINI_C __export infiniStatus_t infiniopAffineGrid(infiniopAffineGridDescriptor_t desc,
17+
void *workspace,
18+
size_t workspace_size,
19+
void *output,
20+
const void *input,
21+
void *stream);
22+
23+
__INFINI_C __export infiniStatus_t infiniopDestroyAffineGridDescriptor(infiniopAffineGridDescriptor_t desc);
24+
25+
#endif // __INFINIOP_AFFINE_GRID_API_H__

0 commit comments

Comments
 (0)