Skip to content

Commit 5f3bc57

Browse files
authored
Merge branch 'main' into issue/500
2 parents 8855b5f + a3c5f3a commit 5f3bc57

66 files changed

Lines changed: 6441 additions & 149 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

include/infinicore/tensor.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ struct TensorMetaData {
2727
infiniopTensorDescriptor_t desc;
2828

2929
TensorMetaData(const Shape &shape, const Strides &strides, const DataType &dtype);
30+
~TensorMetaData();
3031
};
3132

3233
struct TensorData {
@@ -121,6 +122,10 @@ class TensorImpl : public std::enable_shared_from_this<TensorImpl> {
121122

122123
std::string info() const;
123124

125+
void debug(const std::string &filename) const;
126+
127+
void debug() const;
128+
124129
///
125130
/// Data Transfer APIs
126131
///

include/infiniop.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "infiniop/ops/attention.h"
77
#include "infiniop/ops/causal_softmax.h"
88
#include "infiniop/ops/clip.h"
9+
#include "infiniop/ops/logsoftmax.h"
910
#include "infiniop/ops/conv.h"
1011
#include "infiniop/ops/dequantize_awq.h"
1112
#include "infiniop/ops/gemm.h"
@@ -19,6 +20,8 @@
1920
#include "infiniop/ops/sub.h"
2021
#include "infiniop/ops/swiglu.h"
2122
#include "infiniop/ops/topkrouter.h"
23+
#include "infiniop/ops/topksoftmax.h"
24+
#include "infiniop/ops/sigmoid.h"
2225
#include "infiniop/tensor_descriptor.h"
2326

2427
#endif // __INFINIOP_API_H__

include/infiniop/ops/logsoftmax.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#ifndef __INFINIOP_LOGSOFTMAX_API_H__
2+
#define __INFINIOP_LOGSOFTMAX_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopLogSoftmaxDescriptor_t;
7+
8+
__C __export infiniStatus_t infiniopCreateLogSoftmaxDescriptor(infiniopHandle_t handle,
9+
infiniopLogSoftmaxDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t y_desc,
11+
infiniopTensorDescriptor_t x_desc);
12+
13+
__C __export infiniStatus_t infiniopGetLogSoftmaxWorkspaceSize(infiniopLogSoftmaxDescriptor_t desc, size_t *size);
14+
15+
__C __export infiniStatus_t infiniopLogSoftmax(infiniopLogSoftmaxDescriptor_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 infiniopDestroyLogSoftmaxDescriptor(infiniopLogSoftmaxDescriptor_t desc);
23+
24+
#endif

include/infiniop/ops/sigmoid.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#ifndef __INFINIOP_SIGMOID_API_H__
2+
#define __INFINIOP_SIGMOID_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopSigmoidDescriptor_t;
7+
8+
__C __export infiniStatus_t infiniopCreateSigmoidDescriptor(infiniopHandle_t handle,
9+
infiniopSigmoidDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t y,
11+
infiniopTensorDescriptor_t x);
12+
13+
__C __export infiniStatus_t infiniopGetSigmoidWorkspaceSize(infiniopSigmoidDescriptor_t desc, size_t *size);
14+
15+
__C __export infiniStatus_t infiniopSigmoid(infiniopSigmoidDescriptor_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 infiniopDestroySigmoidDescriptor(infiniopSigmoidDescriptor_t desc);
23+
24+
#endif

include/infiniop/ops/topkrouter.h

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,23 @@
55

66
typedef struct InfiniopDescriptor *infiniopTopkrouterDescriptor_t;
77

8-
__C __export infiniStatus_t infiniopCreateTopkrouterDescriptor(
9-
infiniopHandle_t handle,
10-
infiniopTopkrouterDescriptor_t *desc_ptr,
11-
infiniopTensorDescriptor_t x_desc,
12-
infiniopTensorDescriptor_t correction_bias_desc);
8+
__C __export infiniStatus_t infiniopCreateTopkrouterDescriptor(infiniopHandle_t handle,
9+
infiniopTopkrouterDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t x_desc,
11+
infiniopTensorDescriptor_t correction_bias_desc);
1312

1413
__C __export infiniStatus_t infiniopGetTopkrouterWorkspaceSize(infiniopTopkrouterDescriptor_t desc, size_t *size);
1514

16-
__C __export infiniStatus_t infiniopTopkrouter(infiniopTopkrouterDescriptor_t desc, void *workspace, size_t workspace_size,
17-
void *values, void *indices, void *x, void *correction_bias, float routed_scaling_factor, size_t topk, void *stream);
15+
__C __export infiniStatus_t infiniopTopkrouter(infiniopTopkrouterDescriptor_t desc,
16+
void *workspace,
17+
size_t workspace_size,
18+
void *values,
19+
void *indices,
20+
const void *x,
21+
const void *correction_bias,
22+
const float routed_scaling_factor,
23+
const size_t topk,
24+
void *stream);
1825

1926
__C __export infiniStatus_t infiniopDestroyTopkrouterDescriptor(infiniopTopkrouterDescriptor_t desc);
2027

include/infiniop/ops/topksoftmax.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#ifndef __INFINIOP_TOPKSOFTMAX_API_H__
2+
#define __INFINIOP_TOPKSOFTMAX_API_H__
3+
4+
#include "../operator_descriptor.h"
5+
6+
typedef struct InfiniopDescriptor *infiniopTopksoftmaxDescriptor_t;
7+
8+
__C __export infiniStatus_t infiniopCreateTopksoftmaxDescriptor(infiniopHandle_t handle,
9+
infiniopTopksoftmaxDescriptor_t *desc_ptr,
10+
infiniopTensorDescriptor_t x_desc);
11+
12+
__C __export infiniStatus_t infiniopGetTopksoftmaxWorkspaceSize(infiniopTopksoftmaxDescriptor_t desc, size_t *size);
13+
14+
__C __export infiniStatus_t infiniopTopksoftmax(infiniopTopksoftmaxDescriptor_t desc,
15+
void *workspace,
16+
size_t workspace_size,
17+
void *values,
18+
void *indices,
19+
const void *x,
20+
const size_t topk,
21+
const int norm,
22+
void *stream);
23+
24+
__C __export infiniStatus_t infiniopDestroyTopksoftmaxDescriptor(infiniopTopksoftmaxDescriptor_t desc);
25+
26+
#endif

python/infinicore/tensor.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,17 @@ def permute(self, dims):
7575
def view(self, shape):
7676
return Tensor(self._underlying.view(shape))
7777

78+
def debug(self, filename=None):
79+
"""Print tensor data or save to file for debugging
80+
81+
Args:
82+
filename: Optional filename to save raw binary data. If None, prints to stdout.
83+
"""
84+
if filename is None:
85+
self._underlying.debug()
86+
else:
87+
self._underlying.debug(filename)
88+
7889

7990
def empty(size, *, dtype=None, device=None, pin_memory=False):
8091
return Tensor(

scripts/python_test.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ def run_tests(args):
1717
"causal_softmax.py",
1818
"clip.py",
1919
"gemm.py",
20+
"logsoftmax.py",
2021
"mul.py",
2122
"random_sample.py",
2223
"rearrange.py",
@@ -25,6 +26,9 @@ def run_tests(args):
2526
"sub.py",
2627
"swiglu.py",
2728
"softplus.py",
29+
"sigmoid.py",
30+
"topkrouter.py",
31+
"topksoftmax.py",
2832
]:
2933
result = subprocess.run(
3034
f"python {test} {args} --debug", text=True, encoding="utf-8", shell=True

0 commit comments

Comments
 (0)