Skip to content

Commit ee65934

Browse files
Merge pull request #1109 from InfiniTensor/issue/1031_T1-1-26
【比赛2025秋】T1-1-26
2 parents 69f8fed + de55c1e commit ee65934

88 files changed

Lines changed: 4837 additions & 262 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.
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+
#include <vector>
6+
7+
namespace infinicore::op {
8+
class BroadcastTo {
9+
public:
10+
// Schema: Output(y), Input(x)
11+
using schema = void (*)(Tensor, Tensor);
12+
static void execute(Tensor y, Tensor x);
13+
static common::OpDispatcher<schema> &dispatcher();
14+
};
15+
Tensor broadcast_to(Tensor x, const std::vector<int64_t> &shape);
16+
void broadcast_to_(Tensor y, Tensor x);
17+
18+
} // namespace infinicore::op
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#pragma once
2+
3+
#include "../device.hpp"
4+
#include "common/op.hpp"
5+
6+
namespace infinicore::op {
7+
8+
class HuberLoss {
9+
public:
10+
// Schema: output, input, target, delta, reduction
11+
using schema = void (*)(Tensor, Tensor, Tensor, float, int64_t);
12+
13+
static void execute(Tensor output, Tensor input, Tensor target, float delta, int64_t reduction);
14+
static common::OpDispatcher<schema> &dispatcher();
15+
};
16+
17+
// delta 默认为 1.0f,reduction 默认为 1 (MEAN)
18+
Tensor huber_loss(Tensor input, Tensor target, float delta = 1.0f, int64_t reduction = 1);
19+
void huber_loss_(Tensor output, Tensor input, Tensor target, float delta, int64_t reduction);
20+
21+
} // namespace infinicore::op
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#pragma once
2+
3+
#include "../device.hpp"
4+
#include "common/op.hpp"
5+
6+
namespace infinicore::op {
7+
8+
class Softplus {
9+
public:
10+
// 修改 1: Schema 增加 float beta, float threshold
11+
using schema = void (*)(Tensor, Tensor, float, float);
12+
static void execute(Tensor y, Tensor x, float beta, float threshold);
13+
static common::OpDispatcher<schema> &dispatcher();
14+
};
15+
// default: beta = 1.0, threshold = 20.0
16+
Tensor softplus(Tensor x, float beta = 1.0f, float threshold = 20.0f);
17+
18+
void softplus_(Tensor y, Tensor x, float beta = 1.0f, float threshold = 20.0f);
19+
20+
} // namespace infinicore::op
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 Softsign {
8+
public:
9+
using schema = void (*)(Tensor, Tensor);
10+
static void execute(Tensor y, Tensor x);
11+
static common::OpDispatcher<schema> &dispatcher();
12+
};
13+
// 返回新 Tensor 的函数接口
14+
Tensor softsign(Tensor x);
15+
void softsign_(Tensor y, Tensor x);
16+
} // namespace infinicore::op

include/infiniop.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "infiniop/ops/attention.h"
2020
#include "infiniop/ops/avg_pool1d.h"
2121
#include "infiniop/ops/binary_cross_entropy_with_logits.h"
22+
#include "infiniop/ops/broadcast_to.h"
2223
#include "infiniop/ops/causal_softmax.h"
2324
#include "infiniop/ops/cdist.h"
2425
#include "infiniop/ops/clip.h"
@@ -40,6 +41,7 @@
4041
#include "infiniop/ops/gemm.h"
4142
#include "infiniop/ops/hardswish.h"
4243
#include "infiniop/ops/hardtanh.h"
44+
#include "infiniop/ops/huber_loss.h"
4345
#include "infiniop/ops/hypot.h"
4446
#include "infiniop/ops/index_add.h"
4547
#include "infiniop/ops/index_copy.h"
@@ -74,6 +76,7 @@
7476
#include "infiniop/ops/smooth_l1_loss.h"
7577
#include "infiniop/ops/softmax.h"
7678
#include "infiniop/ops/softplus.h"
79+
#include "infiniop/ops/softsign.h"
7780
#include "infiniop/ops/sub.h"
7881
#include "infiniop/ops/sum.h"
7982
#include "infiniop/ops/swiglu.h"
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#ifndef __INFINIOP_BROADCAST_TO_API_H__
2+
#define __INFINIOP_BROADCAST_TO_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopBroadcastToDescriptor_t;
7+
8+
__INFINI_C __export infiniStatus_t infiniopCreateBroadcastToDescriptor(infiniopHandle_t handle,
9+
infiniopBroadcastToDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t y,
11+
infiniopTensorDescriptor_t x);
12+
13+
__INFINI_C __export infiniStatus_t infiniopGetBroadcastToWorkspaceSize(infiniopBroadcastToDescriptor_t desc, size_t *size);
14+
15+
__INFINI_C __export infiniStatus_t infiniopBroadcastTo(infiniopBroadcastToDescriptor_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 infiniopDestroyBroadcastToDescriptor(infiniopBroadcastToDescriptor_t desc);
23+
24+
#endif

include/infiniop/ops/huber_loss.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#ifndef __INFINIOP_HUBER_LOSS_API_H__
2+
#define __INFINIOP_HUBER_LOSS_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopHuberLossDescriptor_t;
7+
8+
__INFINI_C __export infiniStatus_t infiniopCreateHuberLossDescriptor(infiniopHandle_t handle,
9+
infiniopHuberLossDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t output,
11+
infiniopTensorDescriptor_t input,
12+
infiniopTensorDescriptor_t target,
13+
float delta,
14+
int reduction);
15+
16+
__INFINI_C __export infiniStatus_t infiniopGetHuberLossWorkspaceSize(infiniopHuberLossDescriptor_t desc, size_t *size);
17+
18+
__INFINI_C __export infiniStatus_t infiniopHuberLoss(infiniopHuberLossDescriptor_t desc,
19+
void *workspace,
20+
size_t workspace_size,
21+
void *output,
22+
const void *input,
23+
const void *target,
24+
void *stream);
25+
26+
__INFINI_C __export infiniStatus_t infiniopDestroyHuberLossDescriptor(infiniopHuberLossDescriptor_t desc);
27+
28+
#endif // __INFINIOP_HUBER_LOSS_API_H__

include/infiniop/ops/softplus.h

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,29 @@
1-
#ifndef __INFINIOP_SOFTPLUS_API_H__
2-
#define __INFINIOP_SOFTPLUS_API_H__
3-
4-
#include "../operator_descriptor.h"
1+
#ifndef __INFINIOP_OPS_SOFTPLUS_API_H__
2+
#define __INFINIOP_OPS_SOFTPLUS_API_H__
3+
#include "../tensor_descriptor.h"
54

65
typedef struct InfiniopDescriptor *infiniopSoftplusDescriptor_t;
6+
__INFINI_C __export infiniStatus_t infiniopCreateSoftplusDescriptor(
7+
infiniopHandle_t handle,
8+
infiniopSoftplusDescriptor_t *desc_ptr,
9+
infiniopTensorDescriptor_t y_desc,
10+
infiniopTensorDescriptor_t x_desc,
11+
float beta,
12+
float threshold);
713

8-
__INFINI_C __export infiniStatus_t infiniopCreateSoftplusDescriptor(infiniopHandle_t handle,
9-
infiniopSoftplusDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y,
11-
infiniopTensorDescriptor_t x);
12-
13-
__INFINI_C __export infiniStatus_t infiniopGetSoftplusWorkspaceSize(infiniopSoftplusDescriptor_t desc, size_t *size);
14+
__INFINI_C __export infiniStatus_t infiniopGetSoftplusWorkspaceSize(
15+
infiniopSoftplusDescriptor_t desc,
16+
size_t *size);
1417

15-
__INFINI_C __export infiniStatus_t infiniopSoftplus(infiniopSoftplusDescriptor_t desc,
16-
void *workspace,
17-
size_t workspace_size,
18-
void *y,
19-
const void *x,
20-
void *stream);
18+
__INFINI_C __export infiniStatus_t infiniopSoftplus(
19+
infiniopSoftplusDescriptor_t desc,
20+
void *workspace,
21+
size_t workspace_size,
22+
void *y,
23+
const void *x,
24+
void *stream);
2125

22-
__INFINI_C __export infiniStatus_t infiniopDestroySoftplusDescriptor(infiniopSoftplusDescriptor_t desc);
26+
__INFINI_C __export infiniStatus_t infiniopDestroySoftplusDescriptor(
27+
infiniopSoftplusDescriptor_t desc);
2328

24-
#endif
29+
#endif // __INFINIOP_OPS_SOFTPLUS_API_H__

include/infiniop/ops/softsign.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
#ifndef __INFINIOP_SOFTSIGN_API_H__
3+
#define __INFINIOP_SOFTSIGN_API_H__
4+
5+
#include "../operator_descriptor.h"
6+
7+
typedef struct InfiniopDescriptor *infiniopSoftsignDescriptor_t;
8+
9+
__INFINI_C __export infiniStatus_t infiniopCreateSoftsignDescriptor(infiniopHandle_t handle,
10+
infiniopSoftsignDescriptor_t *desc_ptr,
11+
infiniopTensorDescriptor_t y,
12+
infiniopTensorDescriptor_t x);
13+
14+
__INFINI_C __export infiniStatus_t infiniopGetSoftsignWorkspaceSize(infiniopSoftsignDescriptor_t desc, size_t *size);
15+
16+
__INFINI_C __export infiniStatus_t infiniopSoftsign(infiniopSoftsignDescriptor_t desc,
17+
void *workspace,
18+
size_t workspace_size,
19+
void *y,
20+
const void *x,
21+
void *stream);
22+
23+
__INFINI_C __export infiniStatus_t infiniopDestroySoftsignDescriptor(infiniopSoftsignDescriptor_t desc);
24+
25+
#endif

python/infinicore/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
from infinicore.ops.binary_cross_entropy_with_logits import (
6565
binary_cross_entropy_with_logits,
6666
)
67+
from infinicore.ops.broadcast_to import broadcast_to
6768
from infinicore.ops.cat import cat
6869
from infinicore.ops.cdist import cdist
6970
from infinicore.ops.cross_entropy import cross_entropy
@@ -215,6 +216,7 @@
215216
"index_add",
216217
"take",
217218
"ones",
219+
"broadcast_to",
218220
"strided_empty",
219221
"strided_from_blob",
220222
"zeros",

0 commit comments

Comments
 (0)