Monoidal Streams for Dataflow Programming
我们介绍monoidal流:一个推广的因果流函数monoidal范畴。就像流为纯函数的Cullow编程提供语义一样,Monoidal流为Cullow编程提供了语义,而Cullow编程则使用了由对称Monoidal范畴表示的过程理论。同时,monoidal流形成反馈monoidal类别,其可用于解释信号流图。作为一个例子,我们研究了一个随机的Bronchlow语言。
2022-02-04 cs.LO cs.PL math.CT
A Type System for the Automatic Distribution of Higher-order Synchronous Dataflow Programs
我们解决了分布式系统的设计与同步并行程序设计语言。由于模块化设计需要处理架构和功能的模块化,我们的第一个贡献是扩展现有的同步低程序设计语言与原语允许分布式架构的描述和本地化的一些表达式到一些处理器。我们还提出了一个分布式语义形式化的同步程序的分布式执行。我们的第二个贡献是提供一个类型系统,以推断本地化的非注释值的类型推断的手段,并确保在编译时,分布的一致性。我们的第三个贡献是提供了一个类型导向的投影操作,以自动获得,从一个集中式的程序,本地程序将由每个计算资源执行。类型系统和自动分配机制已在现有的同步数据流程序设计语言的编译器中完全实现。
2012-11-12 cs.PL
Reactive Imperative Programming with Dataflow Constraints
数据流语言为动态应用程序中指定对象之间的约束提供了自然支持,其中程序需要有效地对环境的变化做出反应。研究人员长期以来一直在研究如何通过将它们嵌入到过程语言中来利用Challow-constraints。然而,以前的混合命令式/并行系统需要语法扩展或专门的数据类型库来将命令式程序绑定到并行求解器。在本文中,我们提出了一种新的方法,顺利地结合了这两种范式,而不会给程序员带来不必要的负担。在我们的框架中,程序员可以定义主机命令式语言的普通命令,这些命令强制执行存储在“反应式”内存位置中的对象之间的约束。反应对象可以是宿主语言中的任何合法类型,包括基本数据类型、指针、数组和结构。约束在每次输入内存位置改变时自动重新执行,让程序表现得像电子表格,其中某些变量的值取决于其他变量的值。通过改变宿主语言的基本操作的语义来读取和修改对象,从而透明地处理约束求解机制。我们提供了一个正式的语义和描述我们的技术到C/C++的一个具体实施例,展示了如何有效地实现它在传统的平台上使用现成的编译器。我们讨论了相关的应用反应的情况下,包括增量计算,观察者设计模式,和数据结构修复。我们的实现的性能相比,特设问题特定的变化传播算法和以语言为中心的方法,如自调整计算和主体/观察者通信机制,表明所提出的方法是有效的,在实践中。
2011-04-12 cs.PL
SpaDA: A Spatial Dataflow Architecture Programming Language
Noéda Research(诺埃达研究);Lawrence Livermore National Laboratory(劳伦斯利弗莫尔国家实验室);ETH Zurich(苏黎世联邦理工学院)
SpaDA为空间数据流架构提供高阶编程接口,通过抽象低层细节,实现对数据布局、数据流模式和异步操作的精确控制,使复杂并行模式在更少代码下实现高性能计算。
2026-04-27 cs.DC cs.PL
Suki: Choreographed Distributed Dataflow in Rust
针对现有分布式数据流编程模型难以兼顾全局优化与细粒度放置控制的问题,提出嵌入式Rust DSL Suki采用阶段式编程实现显式放置的流数据流,结合trait系统支持类型安全的云资源映射,实现零开销编译。
2024-06-20 cs.DC cs.PL
Dataflow matrix machines as programmable, dynamically expandable, self-referential generalized recurrent neural networks
数据流矩阵机是循环神经网络的一个强大的推广。它们使用多种类型的线性流和多种类型的神经元,包括高阶神经元,这些神经元在网络运行时动态更新描述网络权重和拓扑的矩阵。看起来,矩阵机器的能力足以让它们成为一个方便的通用编程平台。本文探讨了在这种情况下出现的一些有用的编程习惯用法和结构。
2018-06-21 cs.NE cs.PL
Honey: A dataflow programming language for the processing, featurization and analysis of multivariate, asynchronous and non-uniformly sampled scalar symbolic time sequences
我们介绍蜂蜜;一种新的专用程序设计语言,旨在促进多变量、异步和非均匀采样的符号和标量时间序列的处理。在编译时,Honey程序被转换为静态流程图,然后由虚拟机执行。Honey最显着的特点是:(1)Honey引入了一种新的,高效的,不易出错的范式,用于以命令式编程的思维方式从文本输入定义递归过程流程图。Honey的专业,高级和简洁的语法允许快速,轻松地编写,阅读和维护大型标量符号时间序列数据集的复杂处理。(2)Honey保证程序将在静态或实时流数据集上类似地执行。(3)Honey的IDE包括一个交互式可视化工具,允许交互式探索中间和最终输出。这种组合可以实现复杂程序的快速增量原型设计、调试、监控和维护。(4)在大数据集(大于可用内存)的情况下,可以执行Honey程序来处理输入greetings。(5)已编译程序的图形结构提供了几个期望的属性,包括分布式和/或并行执行、存储器优化和程序结构可视化。(6)Honey包含通过各种研究项目开发的常见和新颖运算符的大型库。Honey的开源C++实现以及Honey IDE和交互式数据可视化工具都是公开的。
2016-09-11 cs.PL
Dataflow Analysis With Prophecy and History Variables
利用状态机细化证明的概念,我们使用预言变量,预测未来程序执行的信息,使向后的递归分析的前向推理。从与静态程序分析结果相同的格中提取预言和历史变量(来自程序动态执行的概念),我们要求分析结果同时满足基本程序设计语言的操作语义中的卡诺方程和迁移关系。这种方法消除了显式的抽象和具体化功能,并促进了分析和程序执行之间的更直接的连接,与具体的执行和增强的操作语义的分析结果之间的互模拟关系的形式的连接。我们提出了几个经典的Escherlow分析与这种方法(活变量,非常繁忙的表达式,定义的变量,并达到定义),以及证明,强调这种方法可以实现更精简的推理。据我们所知,我们是第一个使用预言变量进行预测分析的。
2020-07-23 cs.PL
A model of stochastic memoization and name generation in probabilistic programming: categorical semantics via monads on presheaf categories
本文为概率编程中的随机记忆化与名称生成提供了操作与范畴语义,通过预层范畴上的新概率单子,首次为不可数类型的常量伯努利函数构建了验证数据流变换的随机记忆化模型。
2023-11-21 cs.PL
Dato: A Task-Based Programming Model for Dataflow Accelerators
Cornell University(康奈尔大学);UC Merced(加州大学默塞德分校);UCLA(加州大学洛杉矶分校);Shanghai Jiao Tong University(上海交通大学)
Dato提出一种嵌入Python的基于任务的编程模型,将通信和分片作为一等类型,在数据流加速器上实现高利用率和低开发负担,在NPU和FPGA上分别达到84%利用率和98%峰值性能。
2025-09-08 cs.AR cs.LG cs.PL
Programming In-Storage Computing with Located, Stateful Dataflow
UCLA(加州大学洛杉矶分校)
Epic提出基于NVMe的存储内计算编程范式,通过位置类型、数据流和keep原语统一管理数据驻留与生命周期,实现有状态数据流,平均比最强ISC系统快1.6倍,比主机基线快4.2倍,代码量减少14倍。
2026-09-21 cs.AR cs.PL
Secure-by-design smart contract based on dataflow implementations
本文针对区块链智能合约的重入等攻击问题,提出采用数据流编程范式与领域特定语言(DSLs)实现设计即安全的智能合约开发方案,为缓解合约漏洞风险提供新研究方向。
2023-10-04 cs.PL cs.SI
Dataflow Matrix Machines as a Model of Computations with Linear Streams
HERE North America LLC(HERE 北美有限责任公司);Boston College(波士顿学院)
我们概述了递归神经网络的图灵完全推广和作为一个编程平台的鲁棒矩阵机。我们描述了向量空间的有限前缀树的数值叶,使我们能够结合表达能力的低矩阵机器与简单的传统递归神经网络。
2017-05-03 cs.LG cs.NE cs.PL
Dataflow Matrix Machines and V-values: a Bridge between Programs and Neural Nets
1)数据流矩阵机(DMM)通过用线性流(支持线性组合的流)替换数字流来推广神经网络,允许激活函数的任意输入和输出,具有有限动态可变活动部分的可数大小网络能够无限增长,以及非常有表现力的自引用机制。2)DMM适用于通用编程,同时保留了递归神经网络的关键属性:程序通过实数矩阵表示,并且这些矩阵的连续变化会在相关程序中产生任意小的变化。3)V值空间(基于嵌套映射的类向量元素)特别有用,使DMM具有可变激活函数并方便地表示传统的数据结构。
2018-05-23 cs.NE cs.PL
Lifting C Semantics for Dataflow Optimization
C是编程的通用语言,几乎任何设备都可以使用C编程。然而,对诸如多核CPU和GPU之类的现代异构体系结构进行编程需要显式地表达并行性以及诸如存储层次结构之类的设备特定属性。产生的代码通常很难理解,调试和修改不同的架构。我们建议将C程序提升到一个参数化的简化表示,它适合于静态的以数据为中心的分析,并能够自动生成高性能的代码生成。我们将编写代码与针对不同硬件的优化分开:简单、可移植的C源代码用于生成高效的专用版本,只需单击一个按钮。我们的方法可以识别并行时,没有其他编译器可以,并优于一个定制的并行版本的科学代理应用程序高达21%。
2022-05-24 cs.DC cs.PF cs.PL
Precise Dataflow Analysis of Event-Driven Applications
事件驱动编程广泛用于实现用户界面、Web应用程序和非阻塞I/O。事件驱动程序被组织为事件处理程序的集合,其执行由事件触发。传统的静态分析技术无法精确地推理事件驱动代码,因为它们保守地假设事件处理程序可以以任何顺序执行。本文提出了一个自动转换过程间有限分布子集(IFDS)的问题,过程间分布式环境(IDE)的问题作为一个通用的解决方案,以获得精确的静态分析的事件驱动的应用程序,在这两种形式的问题可以解决现有的实现。我们的贡献是展示如何提高分析精度,自动丰富前者的状态信息的事件处理程序过滤掉不可行的路径。我们证明了我们的转换的正确性和报告的实验证明的概念实现的一个子集的JavaScript。
2019-10-28 cs.PL
Stateful Dataflow Multigraphs: A Data-Centric Model for Performance Portability on Heterogeneous Architectures
加速器在高性能计算中的普遍存在已经使编程的复杂性超出了普通领域科学家的技能范围。为了在未来保持性能的可移植性,必须将特定于体系结构的编程范式与底层的科学计算解耦。我们提出了有状态数据流multiGraph(SDFG),一个以数据为中心的中间表示,使分离程序定义从其优化。通过将细粒度的数据依赖性与高级控制流相结合,SDFG既具有表达能力,又适合程序转换,例如平铺和双缓冲。通过使用可扩展的模式匹配、图形重写和图形用户界面,在交互式过程中将这些转换应用于SDFG。我们在CPU,GPU和FPGA上展示了各种图案的SDFG-从基本的计算内核到图形分析。我们表明,SDFG提供了具有竞争力的性能,允许领域科学家自然地开发应用程序,并将其移植到接近峰值硬件性能,而无需修改原始的科学代码。
2020-01-02 cs.DC cs.PF cs.PL
Benchmarking LLM Code Generation for Audio Programming with Visual Dataflow Languages
Columbia University(哥伦比亚大学);Barnard College, Columbia University(巴纳德学院,哥伦比亚大学);Eastlake High School(伊斯特莱克高中)
本文基准评测了LLM在音频可视化编程语言中通过元编程和JSON直接节点生成两种表示层级的代码生成表现,发现元编程在代码形式良好时语义正确性更高,且提示加入随机性与循环可提升生成代码复杂度。
2024-09-01 cs.AI cs.CL cs.PL
TAPA: A Scalable Task-Parallel Dataflow Programming Framework for Modern FPGAs with Co-Optimization of HLS and Physical Design
本文提出TAPA端到端框架,通过提供便捷API表达任务间通信、在HLS中引入粗粒度布图规划及HBM优化技术,将C++数据流程序编译为高频FPGA加速器,在43个设计中将平均频率提升102%且无吞吐量损失。
2022-09-06 cs.AR cs.DC cs.PF
Recursive Function Definitions in Static Dataflow Graphs and their Implementation in TensorFlow
Columbia University(哥伦比亚大学);Harokopio University of Athens(雅典哈罗科皮奥大学);University of Athens(雅典大学)
本文提出在 TensorFlow 等静态数据流系统中支持递归函数的方法,通过两个数据流操作和 tagging 机制将递归定义转为可分布式高效执行的静态图,并验证其与自动微分兼容。
2024-10-26 cs.LG cs.PL
Enabling Dataflow Optimization for Quantum Programs
我们提出了一个IR的量子计算,直接暴露量子和经典的数据依赖性的优化的目的。量子优化中间表示(QIRO)由两种方言组成,一种是输入方言,另一种是专门为实现量子经典协同优化而定制的方言。前者采用了可能更直观的内存语义(量子操作作为副作用),后者使用值语义(操作消耗和产生状态)。至关重要的是,这直接在IR中编码了BLOCKLOW,允许利用BLOCKLOW分析进行大量优化。我们讨论如何将现有的量子编程语言映射到输入方言,以及如何将所得的IR降低到优化方言。我们提出了一个基于MLIR的原型实现,其中包括几个量子特定的优化通道。我们的基准测试表明,即使通过静态优化,资源需求也有可能得到显着改善。与运行时的电路优化相比,这是在编译时只产生很小的常量开销的情况下实现的,这使得这成为应用程序规模的量子程序优化的一种引人注目的方法。
2021-08-14 cs.ET cs.PL quant-ph
Formal Semantics and Type System for Vega Data Transformations
Charles University(查理大学)
本文为 Vega 数据可视化语言定义了基于图的操作语义,并为其核心数据变换语言设计了类型系统,能够捕获常见错误并保证类型安全性。
2026-06-16 cs.PL
Hexcute: A Compiler Framework for Automating Layout Synthesis in GPU Programs
University of Toronto(多伦多大学);NVIDIA(英伟达);Vector Institute(向量研究所)
Hexcute是一种自动布局合成的编译器框架,通过类型推断算法实现高效GPU程序编译,显著提升性能并减少代码量。
2026-01-28 cs.AI cs.LG cs.PL
Density-Based Semantics for Reactive Probabilistic Programming
针对概率同步语言仅对已调度方程定义语义的局限,提出两种与调度无关的基于密度函数流的语义(共迭代与关系语义),并利用关系语义证明了状态空间模型优化推理所需程序变换的正确性。
2023-09-07 cs.PL
TensorFlow Eager: A Multi-Stage, Python-Embedded DSL for Machine Learning
Google Brain(谷歌大脑)
TensorFlow Eager是一种多阶段的Python嵌入式领域特定语言,用于硬件加速的机器学习,适用于交互式研究和生产。TensorFlow Eager扩展的TensorFlow要求用户将计算表示为递归图;这允许编译器优化并简化部署,但阻碍了快速原型和运行时动态性。TensorFlow Eager消除了这些可用性成本,同时又不牺牲图形带来的好处:它为TensorFlow提供了一个命令式前端,可以立即执行操作,并提供了一个JIT跟踪器,可以将由TensorFlow操作组成的Python函数转换为可执行的递归图。因此,TensorFlow Eager提供了一个多阶段编程模型,可以在单个包中轻松地在命令式执行和分段执行之间进行插值。
2019-02-27 cs.LG cs.PL
Probabilistic Programming with Exact Conditions
本文提出精确条件化范式,对比似然评分,在离散和高斯概率下用CD范畴给出语义,建立范畴与编程语言的对应。
2023-12-28 cs.LO cs.PL math.PR
Statically Bounded-Memory Delayed Sampling for Probabilistic Streams
概率程序设计语言帮助开发人员执行贝叶斯推理。这些语言为概率建模和自动推理提供了编程结构和工具。先前的工作引入了概率程序设计语言ProbZelus,以将概率编程功能扩展到无界数据流。这项工作表明,延迟采样推理算法可以扩展到工作在流上下文中。ProbZelus表明,虽然延迟采样可以有效地部署在某些程序上,但取决于所考虑的概率模型,延迟采样不能保证在程序执行过程中使用有限的内存量。在本文中,我们提出的条件下,延迟采样将在有限的内存中执行的概率程序的执行。这两个条件是延迟采样核心运算的两个基本性质:$m$消耗性质和不可分离路径性质。当且仅当一个程序满足$m$消耗和不可分离路径属性时,它才在延迟采样下在有界内存中执行。我们提出了一个静态分析,抽象这些属性,以健全地确保任何程序,通过分析满足这些属性,从而在有限的内存下执行延迟采样。
2021-12-13 cs.PL
JANUS: Fast and Flexible Deep Learning via Symbolic Graph Execution of Imperative Programs
Seoul National University(首尔国立大学)
深度神经网络的快速发展要求深度学习(DL)框架不仅要满足快速执行大型计算的要求,还要支持简单的编程模型,以快速实现和试验复杂的网络结构。然而,现有的框架无法同时在这两个部门中表现出色,导致优化性能和提高可用性的努力出现分歧。本文介绍了JANUS,一个系统,它结合了双方的优势,透明地转换成一个有效的可执行的符号化图的命令式DL程序编写的Python,事实上的脚本语言DL。JANUS可以将Python的各种动态特性,包括动态控制流、动态类型和不纯函数,转换为符号化的递归图的元素。实验表明,JANUS可以实现快速DL训练,利用基于符号图的DL框架所施加的技术,同时保持命令式DL框架的简单和灵活的可编程性在同一时间。
2019-03-11 cs.LG cs.PL
Automatic differentiation in ML: Where we are and where we should be going
Mila(Mila(魁北克人工智能研究所));Google Brain(谷歌大脑)
我们回顾了机器学习(ML)中数组编程的自动微分(AD)的现状,包括用于AD的不同方法,如操作符重载(OO)和源转换(ST),基于图的程序中间表示和源语言。基于这些见解,我们引入了一个新的基于图的中间表示(IR),其目的是有效地支持数组编程的全通用AD。与ML框架中现有的XML编程表示不同,我们的IR自然支持函数调用,高阶函数和递归,使ML模型更容易实现。表示闭包的能力使我们能够使用ST执行AD而无需磁带,使生成的衍生(伴随)程序能够使用函数语言编译器的工具进行提前优化,并实现高阶导数。最后,我们介绍了一个名为Myia的概念证明编译器工具链,它使用Python的一个子集作为前端。
2019-01-02 cs.LG cs.PL stat.ML
Neural Networks in Imandra: Matrix Representation as a Verification Choice
随着神经网络在越来越多的安全关键应用中的部署,对神经网络的形式化验证工具的需求已经增加。矩阵是形式化神经网络必不可少的数据结构。函数式程序设计语言鼓励采用不同的方法来定义矩阵。此功能已在不同的应用程序中成功利用。我们要问的问题是,这些想法是否以及如何应用于神经网络验证。函数式程序设计语言Imandra结合了函数式程序设计语言的语法和自动定理证明器的功能。使用Imandra的这两个关键特性,我们探讨了矩阵的不同实现如何影响神经网络验证的自动化。
2022-07-15 cs.LO cs.PL