当前位置: 首页 > article >正文

Scade pragma: separate_io

概述

在 Scade 语言中,支持对用户自定义算子使用 separate_io pragma 进行修饰。其形式如:

function #pragma kcg separate_io #end 
 N(x: int8) returns (y,z: int8)
let 
  y = x;
  z = x;
tel

在上例中,算子N 就被 pragma #pragma kcg separate_io #end 修饰。该pragma 将影响 kcg 对算子输入参数和返回值列表的处理。输入参数在生成代码中,将不被包装在 Context 结构体中,而是以分离的输入参数的形式出现在生成代码中。类似地,输出流在生成代码中将不被包装在 Context 结构体中,而是以分离指针参数的形式存在。

上例对应的生成代码的函数签名如下

extern void N(kcg_int8 x, kcg_int8 *y, kcg_int8 *z);

其中 x 为输入流,y, z 为输出流。

作为对比,无 separate_io pragma 的形式:

function 
 N2(x: int8) returns (y,z: int8)
let
  y = x;
  z = x;
tel 

相应的生成代码的函数签名如下

typedef struct { kcg_int8 x; } inC_N2;

typedef struct {
  kcg_int8 y;
  kcg_int8 z;
} outC_N2;

extern void N2(inC_N2 *inC, outC_N2 *outC);

注意到,当无 separate_io pragma 时,输入被包装在 inC_N2 结构体中,输出被包装在 outC_N2 结构体中。

输出流仅有一项时的简化情况

当输出流仅有一项时,在使用 separate_io pragma 的情况下,生成代码会将输出流简化生成为 return 返回值,而不是作为指针参数。比如:

function #pragma kcg separate_io #end 
M (x: int8) returns (y: int8)
  y = x;

上例中,输出流仅有 y, 并且使用了 separate_io pragma。则生成代码的函数签名为:

extern kcg_int8 M(kcg_int8 x);

y 为函数 M 的返回值。


http://www.kler.cn/a/468373.html

相关文章:

  • element-ui 2的级联选择器,回显已存储的子选项名称
  • linux系统(ubuntu,uos等)连接鸿蒙next(mate60)设备
  • winform中使用panuon开源UI库的问题
  • Spring MVC实战指南:构建高效Web应用的架构与技巧(三)
  • LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 教程 (4)
  • HTML5 文件上传(File Upload)详解
  • 玩转阿里云服务器(三)- Spring项目集成FastDFS文件服务器
  • Mac-docker配置
  • wireshark超简单简单抓取自己网站的https包解密
  • Eureka Client 服务消费者(调用API接口)(使用OpenFeign)
  • 【蓝桥杯研究生组】第14届Java试题答案整理
  • pytorch中nn.Conv2d详解及参数设置原则
  • 基于SpringBoot的微信小程序民宿预约管理系统
  • MATLAB中binopdf函数用法
  • [Linux]进程间通信-信号量
  • 字玩FontPlayer开发笔记4 性能优化 首屏加载时间优化
  • 大模型微调---QLora微调实战
  • 浅谈棋牌游戏开发流程八:运维与数据分析
  • 顺序搜索介绍
  • DeepSeek:新版MoE语言模型技术报告
  • 重点资产指纹识别工具---P1finger
  • 【LeetCode】:最长乘积等价子数组【简单】
  • unity学习10:gameobject的材质和shader初步
  • Linux(Centos 7.6)命令详解:pwd
  • 【ArcGIS Pro二次开发实例教程】(1):图层的前置、后置
  • Image和Video在同一个Dataloader中交错加载联合训练