Skip to content

Commit 9db1b6c

Browse files
Merge pull request #1111 from InfiniTensor/issue/1031_T1-1-49
【比赛2025秋】T1-1-49
2 parents ee65934 + 774d8f8 commit 9db1b6c

111 files changed

Lines changed: 6074 additions & 773 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: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#pragma once
2+
3+
#include "../device.hpp"
4+
#include "common/op.hpp"
5+
6+
namespace infinicore::op {
7+
8+
class LogSoftmax {
9+
public:
10+
// Schema signature: output(out), input, dim
11+
using schema = void (*)(Tensor, Tensor, int64_t);
12+
13+
static void execute(Tensor output, Tensor input, int64_t dim);
14+
static common::OpDispatcher<schema> &dispatcher();
15+
};
16+
17+
// Functional API: Returns the result tensor
18+
Tensor log_softmax(Tensor input, int64_t dim);
19+
20+
// In-place/Output-provided API
21+
void log_softmax_(Tensor output, Tensor input, int64_t dim);
22+
23+
} // 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 LogAddExp {
9+
public:
10+
using schema = void (*)(Tensor, Tensor, Tensor);
11+
static void execute(Tensor c, Tensor a, Tensor b);
12+
static common::OpDispatcher<schema> &dispatcher();
13+
};
14+
15+
Tensor logaddexp(Tensor a, Tensor b);
16+
void logaddexp_(Tensor c, Tensor a, Tensor b);
17+
18+
} // 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 LogAddExp2 {
9+
public:
10+
using schema = void (*)(Tensor, Tensor, Tensor);
11+
static void execute(Tensor c, Tensor a, Tensor b);
12+
static common::OpDispatcher<schema> &dispatcher();
13+
};
14+
15+
Tensor logaddexp2(Tensor a, Tensor b);
16+
void logaddexp2_(Tensor c, Tensor a, Tensor b);
17+
18+
} // namespace infinicore::op
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#pragma once
2+
3+
#include "../device.hpp"
4+
#include "common/op.hpp"
5+
6+
namespace infinicore::op {
7+
8+
class TripletMarginWithDistanceLoss {
9+
public:
10+
// Schema signature: output(out), anchor, positive, negative, margin, swap, reduction
11+
using schema = void (*)(Tensor, Tensor, Tensor, Tensor, double, bool, int64_t);
12+
13+
static void execute(Tensor output, Tensor anchor, Tensor positive, Tensor negative, double margin, bool swap, int64_t reduction);
14+
static common::OpDispatcher<schema> &dispatcher();
15+
};
16+
17+
// Functional API: Returns the result tensor
18+
// margin default 1.0, swap default false, reduction default 1 (Mean) typically
19+
Tensor triplet_margin_with_distance_loss(Tensor anchor, Tensor positive, Tensor negative, double margin = 1.0, bool swap = false, int64_t reduction = 1);
20+
21+
// In-place/Output-provided API
22+
void triplet_margin_with_distance_loss_(Tensor output, Tensor anchor, Tensor positive, Tensor negative, double margin, bool swap, int64_t reduction);
23+
24+
} // namespace infinicore::op
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#pragma once
2+
3+
#include "../device.hpp"
4+
#include "common/op.hpp"
5+
#include <vector>
6+
7+
namespace infinicore::op {
8+
9+
class UpsampleNearest {
10+
public:
11+
// Schema signature: output(out), input
12+
// Note: Scales are inferred from output.shape / input.shape
13+
using schema = void (*)(Tensor, Tensor);
14+
15+
static void execute(Tensor output, Tensor input);
16+
static common::OpDispatcher<schema> &dispatcher();
17+
};
18+
19+
// Functional API: Returns the result tensor
20+
// Requires output_size to calculate the shape of the result tensor
21+
Tensor upsample_nearest(Tensor input, const std::vector<int64_t> &output_size);
22+
23+
// In-place/Output-provided API
24+
void upsample_nearest_(Tensor output, Tensor input);
25+
26+
} // namespace infinicore::op

include/infiniop.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@
5252
#include "infiniop/ops/layer_norm.h"
5353
#include "infiniop/ops/ldexp.h"
5454
#include "infiniop/ops/lerp.h"
55-
#include "infiniop/ops/logsoftmax.h"
55+
#include "infiniop/ops/log_softmax.h"
56+
#include "infiniop/ops/logaddexp.h"
57+
#include "infiniop/ops/logaddexp2.h"
5658
#include "infiniop/ops/lp_norm.h"
5759
#include "infiniop/ops/masked_select.h"
5860
#include "infiniop/ops/mul.h"
@@ -88,7 +90,9 @@
8890
#include "infiniop/ops/topkrouter.h"
8991
#include "infiniop/ops/topksoftmax.h"
9092
#include "infiniop/ops/triplet_margin_loss.h"
93+
#include "infiniop/ops/triplet_margin_with_distance_loss.h"
9194
#include "infiniop/ops/upsample_bilinear.h"
95+
#include "infiniop/ops/upsample_nearest.h"
9296
#include "infiniop/ops/var.h"
9397
#include "infiniop/ops/var_mean.h"
9498
#include "infiniop/ops/zeros.h"
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
1-
#ifndef __INFINIOP_LOGSOFTMAX_API_H__
2-
#define __INFINIOP_LOGSOFTMAX_API_H__
1+
#ifndef __INFINIOP_LOG_SOFTMAX_API_H__
2+
#define __INFINIOP_LOG_SOFTMAX_API_H__
33

44
#include "../operator_descriptor.h"
55

66
typedef struct InfiniopDescriptor *infiniopLogSoftmaxDescriptor_t;
77

88
__INFINI_C __export infiniStatus_t infiniopCreateLogSoftmaxDescriptor(infiniopHandle_t handle,
9-
infiniopLogSoftmaxDescriptor_t *desc_ptr,
10-
infiniopTensorDescriptor_t y_desc,
11-
infiniopTensorDescriptor_t x_desc);
9+
infiniopLogSoftmaxDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t output,
11+
infiniopTensorDescriptor_t input,
12+
int dim);
1213

1314
__INFINI_C __export infiniStatus_t infiniopGetLogSoftmaxWorkspaceSize(infiniopLogSoftmaxDescriptor_t desc, size_t *size);
1415

1516
__INFINI_C __export infiniStatus_t infiniopLogSoftmax(infiniopLogSoftmaxDescriptor_t desc,
1617
void *workspace,
1718
size_t workspace_size,
18-
void *y,
19-
const void *x,
19+
void *output,
20+
const void *input,
2021
void *stream);
2122

2223
__INFINI_C __export infiniStatus_t infiniopDestroyLogSoftmaxDescriptor(infiniopLogSoftmaxDescriptor_t desc);
2324

24-
#endif
25+
#endif // __INFINIOP_LOG_SOFTMAX_API_H__

include/infiniop/ops/logaddexp.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#ifndef __INFINIOP_LOGADDEXP_API_H__
2+
#define __INFINIOP_LOGADDEXP_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopLogAddExpDescriptor_t;
7+
8+
__INFINI_C __export infiniStatus_t infiniopCreateLogAddExpDescriptor(infiniopHandle_t handle,
9+
infiniopLogAddExpDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t c,
11+
infiniopTensorDescriptor_t a,
12+
infiniopTensorDescriptor_t b);
13+
14+
__INFINI_C __export infiniStatus_t infiniopGetLogAddExpWorkspaceSize(infiniopLogAddExpDescriptor_t desc, size_t *size);
15+
16+
__INFINI_C __export infiniStatus_t infiniopLogAddExp(infiniopLogAddExpDescriptor_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+
__INFINI_C __export infiniStatus_t infiniopDestroyLogAddExpDescriptor(infiniopLogAddExpDescriptor_t desc);
25+
26+
#endif // __INFINIOP_LOGADDEXP_API_H__

include/infiniop/ops/logaddexp2.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#ifndef __INFINIOP_LOGADDEXP2_API_H__
2+
#define __INFINIOP_LOGADDEXP2_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopLogAddExp2Descriptor_t;
7+
8+
__INFINI_C __export infiniStatus_t infiniopCreateLogAddExp2Descriptor(infiniopHandle_t handle,
9+
infiniopLogAddExp2Descriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t c,
11+
infiniopTensorDescriptor_t a,
12+
infiniopTensorDescriptor_t b);
13+
14+
__INFINI_C __export infiniStatus_t infiniopGetLogAddExp2WorkspaceSize(infiniopLogAddExp2Descriptor_t desc, size_t *size);
15+
16+
__INFINI_C __export infiniStatus_t infiniopLogAddExp2(infiniopLogAddExp2Descriptor_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+
__INFINI_C __export infiniStatus_t infiniopDestroyLogAddExp2Descriptor(infiniopLogAddExp2Descriptor_t desc);
25+
26+
#endif // __INFINIOP_LOGADDEXP2_API_H__
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#ifndef __INFINIOP_TRIPLET_MARGIN_WITH_DISTANCE_LOSS_API_H__
2+
#define __INFINIOP_TRIPLET_MARGIN_WITH_DISTANCE_LOSS_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopTripletMarginWithDistanceLossDescriptor_t;
7+
8+
__INFINI_C __export infiniStatus_t infiniopCreateTripletMarginWithDistanceLossDescriptor(
9+
infiniopHandle_t handle,
10+
infiniopTripletMarginWithDistanceLossDescriptor_t *desc_ptr,
11+
infiniopTensorDescriptor_t output,
12+
infiniopTensorDescriptor_t anchor,
13+
infiniopTensorDescriptor_t positive,
14+
infiniopTensorDescriptor_t negative,
15+
float margin,
16+
int swap,
17+
int reduction);
18+
__INFINI_C __export infiniStatus_t infiniopGetTripletMarginWithDistanceLossWorkspaceSize(
19+
infiniopTripletMarginWithDistanceLossDescriptor_t desc,
20+
size_t *size);
21+
__INFINI_C __export infiniStatus_t infiniopTripletMarginWithDistanceLoss(infiniopTripletMarginWithDistanceLossDescriptor_t desc,
22+
void *workspace,
23+
size_t workspace_size,
24+
void *output,
25+
const void *anchor,
26+
const void *positive,
27+
const void *negative,
28+
void *stream);
29+
30+
__INFINI_C __export infiniStatus_t infiniopDestroyTripletMarginWithDistanceLossDescriptor(
31+
infiniopTripletMarginWithDistanceLossDescriptor_t desc);
32+
#endif // __INFINIOP_TRIPLET_MARGIN_WITH_DISTANCE_LOSS_API_H__

0 commit comments

Comments
 (0)