Skip to content

Commit f44330d

Browse files
authored
Merge pull request #1103 from InfiniTensor/issue/1031_T1-1-40
【比赛2025秋】T1-1-40
2 parents 4af8f0e + 0c61433 commit f44330d

102 files changed

Lines changed: 7281 additions & 15 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/hypot.hpp

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+
class Hypot {
8+
public:
9+
using schema = void (*)(Tensor, Tensor, Tensor);
10+
11+
static void execute(Tensor output, Tensor input_a, Tensor input_b);
12+
static common::OpDispatcher<schema> &dispatcher();
13+
};
14+
15+
Tensor hypot(Tensor input_a, Tensor input_b);
16+
17+
void hypot_(Tensor output, Tensor input_a, Tensor input_b);
18+
} // namespace infinicore::op
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 IndexAdd {
9+
public:
10+
using schema = void (*)(Tensor, Tensor, int64_t, Tensor, Tensor, float);
11+
static void execute(Tensor output, Tensor input, int64_t dim, Tensor index, Tensor source, float alpha);
12+
13+
static common::OpDispatcher<schema> &dispatcher();
14+
};
15+
16+
Tensor index_add(Tensor input, int64_t dim, Tensor index, Tensor source, float alpha = 1.0f);
17+
void index_add_(Tensor output, Tensor input, int64_t dim, Tensor index, Tensor source, float alpha);
18+
19+
} // 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 IndexCopy {
9+
public:
10+
using schema = void (*)(Tensor, Tensor, int64_t, Tensor, Tensor);
11+
static void execute(Tensor output, Tensor input, int64_t dim, Tensor index, Tensor source);
12+
13+
static common::OpDispatcher<schema> &dispatcher();
14+
};
15+
Tensor index_copy(Tensor input, int64_t dim, Tensor index, Tensor source);
16+
void index_copy_(Tensor output, Tensor input, int64_t dim, Tensor index, Tensor source);
17+
18+
} // namespace infinicore::op
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 SmoothL1Loss {
9+
public:
10+
using schema = void (*)(Tensor, Tensor, Tensor, float, int64_t);
11+
12+
static void execute(Tensor output, Tensor input, Tensor target, float beta, int64_t reduction);
13+
static common::OpDispatcher<schema> &dispatcher();
14+
};
15+
16+
Tensor smooth_l1_loss(Tensor input, Tensor target, float beta = 1.0f, int64_t reduction = 1);
17+
void smooth_l1_loss_(Tensor output, Tensor input, Tensor target, float beta, int64_t reduction);
18+
19+
} // namespace infinicore::op

include/infinicore/ops/take.hpp

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 Take {
9+
public:
10+
using schema = void (*)(Tensor, Tensor, Tensor);
11+
12+
static void execute(Tensor output, Tensor input, Tensor indices);
13+
static common::OpDispatcher<schema> &dispatcher();
14+
};
15+
16+
Tensor take(Tensor input, Tensor indices);
17+
18+
void take_(Tensor output, Tensor input, Tensor indices);
19+
20+
} // namespace infinicore::op

include/infiniop.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
#include "infiniop/ops/gemm.h"
3333
#include "infiniop/ops/hardswish.h"
3434
#include "infiniop/ops/hardtanh.h"
35+
#include "infiniop/ops/hypot.h"
36+
#include "infiniop/ops/index_add.h"
37+
#include "infiniop/ops/index_copy.h"
3538
#include "infiniop/ops/inner.h"
3639
#include "infiniop/ops/int8_gemm.h"
3740
#include "infiniop/ops/kv_caching.h"
@@ -55,11 +58,13 @@
5558
#include "infiniop/ops/sigmoid.h"
5659
#include "infiniop/ops/silu.h"
5760
#include "infiniop/ops/silu_and_mul.h"
61+
#include "infiniop/ops/smooth_l1_loss.h"
5862
#include "infiniop/ops/softmax.h"
5963
#include "infiniop/ops/softplus.h"
6064
#include "infiniop/ops/sub.h"
6165
#include "infiniop/ops/sum.h"
6266
#include "infiniop/ops/swiglu.h"
67+
#include "infiniop/ops/take.h"
6368
#include "infiniop/ops/tan.h"
6469
#include "infiniop/ops/tanh.h"
6570
#include "infiniop/ops/tanhshrink.h"

include/infiniop/ops/hypot.h

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

include/infiniop/ops/index_add.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#ifndef __INFINIOP_INDEX_ADD_API_H__
2+
#define __INFINIOP_INDEX_ADD_API_H__
3+
#include "../operator_descriptor.h"
4+
#include <stdint.h>
5+
6+
typedef struct InfiniopDescriptor *infiniopIndexAddDescriptor_t;
7+
8+
__INFINI_C __export infiniStatus_t infiniopCreateIndexAddDescriptor(infiniopHandle_t handle,
9+
infiniopIndexAddDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t output,
11+
infiniopTensorDescriptor_t input,
12+
int64_t dim,
13+
infiniopTensorDescriptor_t index,
14+
infiniopTensorDescriptor_t source,
15+
float alpha);
16+
17+
__INFINI_C __export infiniStatus_t infiniopGetIndexAddWorkspaceSize(infiniopIndexAddDescriptor_t desc, size_t *size);
18+
__INFINI_C __export infiniStatus_t infiniopIndexAdd(infiniopIndexAddDescriptor_t desc,
19+
void *workspace,
20+
size_t workspace_size,
21+
void *output,
22+
const void *input,
23+
const void *index,
24+
const void *source,
25+
void *stream);
26+
27+
__INFINI_C __export infiniStatus_t infiniopDestroyIndexAddDescriptor(infiniopIndexAddDescriptor_t desc);
28+
29+
#endif

include/infiniop/ops/index_copy.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#ifndef __INFINIOP_INDEX_COPY_API_H__
2+
#define __INFINIOP_INDEX_COPY_API_H__
3+
#include "../operator_descriptor.h"
4+
#include <stdint.h>
5+
6+
typedef struct InfiniopDescriptor *infiniopIndexCopyDescriptor_t;
7+
8+
__INFINI_C __export infiniStatus_t infiniopCreateIndexCopyDescriptor(infiniopHandle_t handle,
9+
infiniopIndexCopyDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t output,
11+
infiniopTensorDescriptor_t input,
12+
int64_t dim,
13+
infiniopTensorDescriptor_t index,
14+
infiniopTensorDescriptor_t source);
15+
16+
__INFINI_C __export infiniStatus_t infiniopGetIndexCopyWorkspaceSize(infiniopIndexCopyDescriptor_t desc, size_t *size);
17+
__INFINI_C __export infiniStatus_t infiniopIndexCopy(infiniopIndexCopyDescriptor_t desc,
18+
void *workspace,
19+
size_t workspace_size,
20+
void *output,
21+
const void *input,
22+
const void *index,
23+
const void *source,
24+
void *stream);
25+
26+
__INFINI_C __export infiniStatus_t infiniopDestroyIndexCopyDescriptor(infiniopIndexCopyDescriptor_t desc);
27+
28+
#endif
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#ifndef __INFINIOP_SMOOTH_L1_LOSS_API_H__
2+
#define __INFINIOP_SMOOTH_L1_LOSS_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopSmoothL1LossDescriptor_t;
7+
__INFINI_C __export infiniStatus_t infiniopCreateSmoothL1LossDescriptor(infiniopHandle_t handle,
8+
infiniopSmoothL1LossDescriptor_t *desc_ptr,
9+
infiniopTensorDescriptor_t output,
10+
infiniopTensorDescriptor_t input,
11+
infiniopTensorDescriptor_t target,
12+
float beta,
13+
int reduction);
14+
15+
__INFINI_C __export infiniStatus_t infiniopGetSmoothL1LossWorkspaceSize(infiniopSmoothL1LossDescriptor_t desc, size_t *size);
16+
17+
__INFINI_C __export infiniStatus_t infiniopSmoothL1Loss(infiniopSmoothL1LossDescriptor_t desc,
18+
void *workspace,
19+
size_t workspace_size,
20+
void *output,
21+
const void *input,
22+
const void *target,
23+
void *stream);
24+
25+
__INFINI_C __export infiniStatus_t infiniopDestroySmoothL1LossDescriptor(infiniopSmoothL1LossDescriptor_t desc);
26+
27+
#endif // __INFINIOP_SMOOTH_L1_LOSS_API_H__

0 commit comments

Comments
 (0)