PS:巨量时间,不断踩坑,悲凉血泪史,总结成的小小见解。
如果各位觉得写的还行,劳请各位老师们点赞收藏一波!!各位老师的鼓励是我坚持写作的动力!!
我玩的就是真实!!!我玩的就是真实!!!我玩的就是真实!!!
这是个挺好的问题,以下解决方案仅代表个人见解,如果有更好的方案,希望大家不吝提出,共同学习
问:Ascend C核函数如何传入标量参数?
这个问题来源于论坛某位大佬提出的问题,本人在编写addcdiv的过程中也遇到这个问题
所以就想记录下个人思路

首先介绍下addcdiv算子,这个算子可厉害,几乎把矢量,标量算法API都用上

个人思路是把标量做在tilling接口内,定义为ND类型,然后再通过GM_ADDR接口也就是
__gm__ uin8_t* 向量传入,再进行相应的类型转换就可以了,详细的例子见下面
举例在XXX.json 中'input_desc'有一项value是标量
在op_kernel中同样以GM_ADDR的形式传入

使用下列代码进行转换
首先用reinterpret_cast<__gm__ half*>(value)将__gm__ uin8*_t 转换成 __gm__ half
再直接用*去取实际half 数值
接下来用static_cast将half类型转换成为float类型
PS:巨量时间,不断踩坑,悲凉血泪史,总结成的小小见解。
如果各位觉得写的还行,劳请各位老师们点赞收藏一波!!各位老师的鼓励是我坚持写作的动力!!
我玩的就是真实!!!我玩的就是真实!!!我玩的就是真实!!!
PS:巨量时间,不断踩坑,悲凉血泪史,总结成的小小见解。
如果各位觉得写的还行,劳请各位老师们点赞收藏一波!!各位老师的鼓励是我坚持写作的动力!!
我玩的就是真实!!!我玩的就是真实!!!我玩的就是真实!!!
这是个挺好的问题,以下解决方案仅代表个人见解,如果有更好的方案,希望大家不吝提出,共同学习
问:Ascend C核函数如何传入标量参数?
这个问题来源于论坛某位大佬提出的问题,本人在编写addcdiv的过程中也遇到这个问题
所以就想记录下个人思路
首先介绍下addcdiv算子,这个算子可厉害,几乎把矢量,标量算法API都用上
个人思路是把标量做在tilling接口内,定义为ND类型,然后再通过GM_ADDR接口也就是
__gm__ uin8_t* 向量传入,再进行相应的类型转换就可以了,详细的例子见下面
举例在XXX.json 中'input_desc'有一项value是标量
{ "name": "value", "param_type": "optional", "format": [ "ND" ], "type": [ "fp16" ] }在op_kernel中同样以GM_ADDR的形式传入
使用下列代码进行转换
首先用reinterpret_cast<__gm__ half*>(value)将__gm__ uin8*_t 转换成 __gm__ half
再直接用*去取实际half 数值
接下来用static_cast将half类型转换成为float类型
inputVal1 = *(reinterpret_cast<__gm__ half*>(value)); inputVal2 = static_cast<float>(inputVal1);PS:巨量时间,不断踩坑,悲凉血泪史,总结成的小小见解。
如果各位觉得写的还行,劳请各位老师们点赞收藏一波!!各位老师的鼓励是我坚持写作的动力!!
我玩的就是真实!!!我玩的就是真实!!!我玩的就是真实!!!