Skip to content

Commit b4f5bfa

Browse files
committed
Add InfiniCore asum, blas_amax, blas_amin, blas_dot and nrm2 wrappers
1 parent 9da0b53 commit b4f5bfa

33 files changed

Lines changed: 1236 additions & 0 deletions

include/infinicore/ops.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@
66
#include "ops/addcmul.hpp"
77
#include "ops/asin.hpp"
88
#include "ops/asinh.hpp"
9+
#include "ops/asum.hpp"
910
#include "ops/atanh.hpp"
1011
#include "ops/attention.hpp"
1112
#include "ops/avg_pool1d.hpp"
1213
#include "ops/baddbmm.hpp"
1314
#include "ops/bilinear.hpp"
1415
#include "ops/binary_cross_entropy_with_logits.hpp"
16+
#include "ops/blas_amax.hpp"
17+
#include "ops/blas_amin.hpp"
18+
#include "ops/blas_dot.hpp"
1519
#include "ops/causal_softmax.hpp"
1620
#include "ops/cdist.hpp"
1721
#include "ops/conv2d.hpp"
@@ -28,6 +32,7 @@
2832
#include "ops/layer_norm.hpp"
2933
#include "ops/linear.hpp"
3034
#include "ops/matmul.hpp"
35+
#include "ops/nrm2.hpp"
3136
#include "ops/ones.hpp"
3237
#include "ops/paged_attention.hpp"
3338
#include "ops/paged_attention_prefill.hpp"

include/infinicore/ops/asum.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+
8+
class Asum {
9+
public:
10+
using schema = void (*)(Tensor, Tensor);
11+
static void execute(Tensor result, Tensor x);
12+
static common::OpDispatcher<schema> &dispatcher();
13+
};
14+
15+
Tensor asum(Tensor x);
16+
void asum_(Tensor result, Tensor x);
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 BlasAmax {
9+
public:
10+
using schema = void (*)(Tensor, Tensor);
11+
static void execute(Tensor result, Tensor x);
12+
static common::OpDispatcher<schema> &dispatcher();
13+
};
14+
15+
Tensor blas_amax(Tensor x);
16+
void blas_amax_(Tensor result, Tensor x);
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 BlasAmin {
9+
public:
10+
using schema = void (*)(Tensor, Tensor);
11+
static void execute(Tensor result, Tensor x);
12+
static common::OpDispatcher<schema> &dispatcher();
13+
};
14+
15+
Tensor blas_amin(Tensor x);
16+
void blas_amin_(Tensor result, Tensor x);
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 BlasDot {
9+
public:
10+
using schema = void (*)(Tensor, Tensor, Tensor);
11+
static void execute(Tensor result, Tensor x, Tensor y);
12+
static common::OpDispatcher<schema> &dispatcher();
13+
};
14+
15+
Tensor blas_dot(Tensor x, Tensor y);
16+
void blas_dot_(Tensor result, Tensor x, Tensor y);
17+
18+
} // namespace infinicore::op

include/infinicore/ops/nrm2.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+
8+
class Nrm2 {
9+
public:
10+
using schema = void (*)(Tensor, Tensor);
11+
static void execute(Tensor result, Tensor x);
12+
static common::OpDispatcher<schema> &dispatcher();
13+
};
14+
15+
Tensor nrm2(Tensor x);
16+
void nrm2_(Tensor result, Tensor x);
17+
18+
} // namespace infinicore::op

python/infinicore/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,14 @@
5858
from infinicore.ops.argwhere import argwhere
5959
from infinicore.ops.asin import asin
6060
from infinicore.ops.asinh import asinh
61+
from infinicore.ops.asum import asum
6162
from infinicore.ops.atanh import atanh
6263
from infinicore.ops.attention import attention
6364
from infinicore.ops.baddbmm import baddbmm
6465
from infinicore.ops.bilinear import bilinear
66+
from infinicore.ops.blas_amax import blas_amax
67+
from infinicore.ops.blas_amin import blas_amin
68+
from infinicore.ops.blas_dot import blas_dot
6569
from infinicore.ops.binary_cross_entropy_with_logits import (
6670
binary_cross_entropy_with_logits,
6771
)
@@ -102,6 +106,7 @@
102106
from infinicore.ops.mha_varlen import mha_varlen
103107
from infinicore.ops.mul import mul
104108
from infinicore.ops.narrow import narrow
109+
from infinicore.ops.nrm2 import nrm2
105110
from infinicore.ops.paged_attention import paged_attention
106111
from infinicore.ops.paged_attention_prefill import paged_attention_prefill
107112
from infinicore.ops.paged_caching import paged_caching
@@ -185,6 +190,10 @@
185190
"add_rms_norm",
186191
"argwhere",
187192
"asin",
193+
"asum",
194+
"blas_amax",
195+
"blas_amin",
196+
"blas_dot",
188197
"acos",
189198
"addbmm",
190199
"floor",
@@ -210,6 +219,7 @@
210219
"dist",
211220
"logdet",
212221
"narrow",
222+
"nrm2",
213223
"ldexp",
214224
"lerp",
215225
"kthvalue",

python/infinicore/ops/asum.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from infinicore.lib import _infinicore
2+
from infinicore.tensor import Tensor
3+
4+
5+
def asum(x: Tensor, *, out=None):
6+
if out is None:
7+
return Tensor(_infinicore.asum(x._underlying))
8+
9+
_infinicore.asum_(out._underlying, x._underlying)
10+
return out

python/infinicore/ops/blas_amax.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from infinicore.lib import _infinicore
2+
from infinicore.tensor import Tensor
3+
4+
5+
def blas_amax(x: Tensor, *, out=None):
6+
if out is None:
7+
return Tensor(_infinicore.blas_amax(x._underlying))
8+
9+
_infinicore.blas_amax_(out._underlying, x._underlying)
10+
return out

python/infinicore/ops/blas_amin.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from infinicore.lib import _infinicore
2+
from infinicore.tensor import Tensor
3+
4+
5+
def blas_amin(x: Tensor, *, out=None):
6+
if out is None:
7+
return Tensor(_infinicore.blas_amin(x._underlying))
8+
9+
_infinicore.blas_amin_(out._underlying, x._underlying)
10+
return out

0 commit comments

Comments
 (0)