Skip to content

Commit 2c3ccd3

Browse files
lengmuzhaxiPanZezhong1725
authored andcommitted
issue/1031 merge T1-1-26
1 parent 9ead056 commit 2c3ccd3

84 files changed

Lines changed: 4663 additions & 148 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

include/infinicore/ops/linear.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "common/op.hpp"
44
#include <optional>
55

6+
67
namespace infinicore::op {
78

89
Tensor linear(Tensor input, Tensor weight, std::optional<Tensor> bias);
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: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@
7373
#include "infiniop/ops/silu_and_mul.h"
7474
#include "infiniop/ops/smooth_l1_loss.h"
7575
#include "infiniop/ops/softmax.h"
76-
#include "infiniop/ops/softplus.h"
7776
#include "infiniop/ops/sub.h"
7877
#include "infiniop/ops/sum.h"
7978
#include "infiniop/ops/swiglu.h"
@@ -89,5 +88,9 @@
8988
#include "infiniop/ops/var.h"
9089
#include "infiniop/ops/var_mean.h"
9190
#include "infiniop/ops/zeros.h"
91+
#include "infiniop/ops/broadcast_to.h"
92+
#include "infiniop/ops/softplus.h"
93+
#include "infiniop/ops/softsign.h"
94+
#include "infiniop/ops/huber_loss.h"
9295
#include "infiniop/tensor_descriptor.h"
9396
#endif // __INFINIOP_API_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+
__C __export infiniStatus_t infiniopCreateBroadcastToDescriptor(infiniopHandle_t handle,
9+
infiniopBroadcastToDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t y,
11+
infiniopTensorDescriptor_t x);
12+
13+
__C __export infiniStatus_t infiniopGetBroadcastToWorkspaceSize(infiniopBroadcastToDescriptor_t desc, size_t *size);
14+
15+
__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+
__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+
__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+
__C __export infiniStatus_t infiniopGetHuberLossWorkspaceSize(infiniopHuberLossDescriptor_t desc, size_t *size);
17+
18+
__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+
__C __export infiniStatus_t infiniopDestroyHuberLossDescriptor(infiniopHuberLossDescriptor_t desc);
27+
28+
#endif // __INFINIOP_HUBER_LOSS_API_H__

include/infiniop/ops/softplus.h

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,32 @@
1-
#ifndef __INFINIOP_SOFTPLUS_API_H__
2-
#define __INFINIOP_SOFTPLUS_API_H__
1+
#ifndef __INFINIOP_OPS_SOFTPLUS_API_H__
2+
#define __INFINIOP_OPS_SOFTPLUS_API_H__
3+
#include "../tensor_descriptor.h"
34

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

6-
typedef struct InfiniopDescriptor *infiniopSoftplusDescriptor_t;
6+
typedef struct InfiniopSoftplusDescriptor *infiniopSoftplusDescriptor_t;
7+
__C __export infiniStatus_t infiniopCreateSoftplusDescriptor(
8+
infiniopHandle_t handle,
9+
infiniopSoftplusDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t y_desc,
11+
infiniopTensorDescriptor_t x_desc,
12+
float beta,
13+
float threshold
14+
);
715

8-
__INFINI_C __export infiniStatus_t infiniopCreateSoftplusDescriptor(infiniopHandle_t handle,
9-
infiniopSoftplusDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y,
11-
infiniopTensorDescriptor_t x);
16+
__C __export infiniStatus_t infiniopGetSoftplusWorkspaceSize(
17+
infiniopSoftplusDescriptor_t desc,
18+
size_t *size);
1219

13-
__INFINI_C __export infiniStatus_t infiniopGetSoftplusWorkspaceSize(infiniopSoftplusDescriptor_t desc, size_t *size);
20+
__C __export infiniStatus_t infiniopSoftplus(
21+
infiniopSoftplusDescriptor_t desc,
22+
void *workspace,
23+
size_t workspace_size,
24+
void *y,
25+
const void *x,
26+
void *stream);
1427

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);
28+
__C __export infiniStatus_t infiniopDestroySoftplusDescriptor(
29+
infiniopSoftplusDescriptor_t desc);
2130

22-
__INFINI_C __export infiniStatus_t infiniopDestroySoftplusDescriptor(infiniopSoftplusDescriptor_t desc);
2331

24-
#endif
32+
#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+
__C __export infiniStatus_t infiniopCreateSoftsignDescriptor(infiniopHandle_t handle,
10+
infiniopSoftsignDescriptor_t *desc_ptr,
11+
infiniopTensorDescriptor_t y,
12+
infiniopTensorDescriptor_t x);
13+
14+
__C __export infiniStatus_t infiniopGetSoftsignWorkspaceSize(infiniopSoftsignDescriptor_t desc, size_t *size);
15+
16+
__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+
__C __export infiniStatus_t infiniopDestroySoftsignDescriptor(infiniopSoftsignDescriptor_t desc);
24+
25+
#endif

0 commit comments

Comments
 (0)