一、核函数开发
核函数(Kernel Function)是Ascend C算子设备侧实现的入口。在核函数中,需要为在一个核上执行的代码规定要进行的数据访问和计算操作,当核函数被调用时,多个核都执行相同的核函数代码,具有相同的参数,并行执行。
核函数的定义为:
extern "C" __global__ __aicore__ void add_custom(__gm__ uint8_t* x, __gm__ uint8_t* y, __gm__ uint8_t* z);
Kernel直调工程体验
cd ~/samples/operator/AddCustomSample/KernelLaunch/
cp -r AddKernelInvocationNeo/ test
cd test/
bash run.sh -r cpu -v Ascend310P1
观察结果
用MobaXTerm左侧的文件栏打开~/samples/operator/AddCustomSample/KernelLaunch/test/scripts/gen_data.py
修改其中代码:
input_x = np.random.uniform(1,10,[8,2048]).astype(np.float16)
golden = np.sinh(input_x).astype(np.float16)
保存
再打开add_custom.cpp
修改其中compute()函数,把“Add(xxxxxxxxxxxxxxxxx)”那一行注释掉,改成sinh的计算逻辑,用xLocal当输入,zLocal当输出,改完后保存。
测试方式:
bash run.sh -r cpu -v Ascend310P1
输出“test pass”即为修改成功。
cd ~ /samples/operator/AddCustomSample/FrameworkLaunch/AddCustom
bash build.sh
cd build_out
./custom_opp_ubuntu_aarch64.run
cd ~/samples/samples/operator/AddCustomSample/FrameworkLaunch/AclNNInvocation
bash run.sh
标签:__,函数,训练营,Ascend,cd,samples,算子,np,AddCustomSample From: https://www.cnblogs.com/Euyq123/p/18295929