用于编写和调用ascendc算子
Project description
1 功能描述
由于在ascendc算子开发过程中运行算子比较复杂,为了简化算子的运行,将运行算子变成可以用python直接调用的函数。所以编写了此代码。
2 安装
- 请确保安装了 cann toolkit 与 官方算子包。
pip install l0n0lacl
source /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh
3 通过创建算子库来运行算子
3.1 通过命令创建算子库
3.1.1 命令介绍
l0n0lcreateopps -h
usage: l0n0lcreateopps [-h] [--跳过自定义算子] 目标目录
为所有算子创建函数:生成算子代码并支持跳过自定义算子
positional arguments:
目标目录 指定生成算子的目标目录路径(例如:'./operators/')
options:
-h, --help show this help message and exit
--跳过自定义算子, -s 若启用,跳过
3.1.2 创建算子库
l0n0lcreateopps ./opp
执行完毕后 opp就成为了算子库
3.2 调用算子实例
from l0n0lacl import *
import numpy as np
import opp
a = 张量(np.ones((2, 3)) * 2)
other = 张量(np.ones((2, 3)) * 3)
out = 张量(np.zeros([2, 3]))
opp.Add(a, other, 1.2, out)
print(out)
[[5.6 5.6 5.6]
[5.6 5.6 5.6]]
4 简单运行算子实例
4.1 先切换到cann环境,比如我的环境是:
source /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh
4.2 设置要用到的设备
export ASCEND_VISIBLE_DEVICES=0,1
4.3 运行算子
from l0n0lacl import *
import numpy as np
import ctypes
import time
设备.设置内存共享组([0, 1])
a = np.random.uniform(-2, -1, (1024))
a_out = np.zeros_like(a)
a = 张量(a)
a_out = 张量(a_out)
a.切换到设备(1)
# a_out.切换到设备(1)
fn = 算子运行器('Abs')
out = fn(a, a_out)
print(out[1])
fn = 算子运行器('InplaceAcos')
a = np.random.uniform(-1, 1, (2000,2000)).astype(np.float16)
print(a)
out = fn(a)
print(out[0])
fn = 算子运行器('AdaptiveAvgPool2d')
a = np.random.uniform(0, 100, (2, 100, 100)).astype(np.float32)
out = np.zeros((2, 3, 3), dtype=a.dtype)
a = 张量(a, 格式=张量格式.NCL)
out = 张量(out).变更格式(张量格式.NCL)
output = fn(a, [3, 3], out)
print(output[2])
fn = 算子运行器('Addmv')
s = np.ones(3, dtype=np.float32)
mat = np.random.uniform(-1, 1, (3, 40000)).astype(np.float32)
vec = np.random.uniform(-1, 1, 40000).astype(np.float32)
alpha = 1.2
beta = 标量(1.1)
out = np.zeros(3, dtype=np.float32)
output = fn(s, mat, vec, alpha, beta, out, ctypes.c_int8(1))
print(output[-2])
fn = 算子运行器('Any')
s = np.random.uniform(-1, -0.5, (3, 4))
out = np.zeros(3, dtype=np.bool_)
output = fn(s, [1], ctypes.c_bool(False), out)
print(output[-1])
4.3 算子查找顺序
如果 ${NO_VENDORS_OPP} != '1':
查找 ${ASCEND_OPP_PATH}/vendors目录(自己写的算子默认安装目录)
查找 ${ASCEND_HOME_PATH}/lib64/libopapi.so 支持的算子(也就是官方算子包)
NO_VENDORS_OPP如果不需要使用自定义算子, 可以添加此环境变量ASCEND_OPP_PATHcann自带环境变量 在(source /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh)时设置ASCEND_HOME_PATHcann自带环境变量在(source /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh)时设置
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
l0n0lacl-2.2.0.tar.gz
(18.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
l0n0lacl-2.2.0-py3-none-any.whl
(21.9 kB
view details)
File details
Details for the file l0n0lacl-2.2.0.tar.gz.
File metadata
- Download URL: l0n0lacl-2.2.0.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f6a29a744c8721d32de3d68b932c961ec8215cddba8710b7ead092e9bf71cc7
|
|
| MD5 |
f3ed512cc1659dd3c80e116aa306f60c
|
|
| BLAKE2b-256 |
1116477a5e944313b273ce9bcd36f1d22e52823a5c559174c4fdd3d90ccb8630
|
File details
Details for the file l0n0lacl-2.2.0-py3-none-any.whl.
File metadata
- Download URL: l0n0lacl-2.2.0-py3-none-any.whl
- Upload date:
- Size: 21.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0666a669f315f35b997e43e1bd169d999aca20170f259cb503253ef7acbddaae
|
|
| MD5 |
ccc03f0e0e8772bd72990ddcf2e154d7
|
|
| BLAKE2b-256 |
4b54f53e191f038b0d9b13a0ee61d93e6f8dd95137b50b39c607ba3687f5dc46
|