A Survey on Hardware and Software Support for Thread Level Parallelism
为了支持不断增长的大规模并行性,功能组件以及当前处理器的能力正在改变并继续这样做。当今的计算机构建在多个处理核心上,运行由大量线程组成的应用程序,这使得运行时线程管理成为一个复杂的过程。此外,每个核可以支持多个并发线程执行。因此,硬件和软件支持线程是越来越需要提高峰值性能容量,整体系统吞吐量,因此一直是许多研究的主题。本文调查,许多建议或目前可用的解决方案,执行,分布和管理线程的硬件和软件。当前应用的性质是多种多样的。为了提高系统性能,并不是所有的编程模型都适合利用多核处理器内置的大规模并行性。由于硬件的异构性,混合编程模型(它结合了共享和分布式模型的特点)目前已成为非常有前途的。在本文中,首先,我们已经给出了一个概述线程,线程机制及其在执行过程中的管理问题。接下来,我们讨论了不同的并行编程模型,考虑到他们的显式线程支持。我们还回顾了编程模型对共享内存,分布式内存和异构性的支持。执行时的硬件支持对系统的性能非常关键,因此也存在或已经提出了不同类型的线程硬件支持,主要基于广泛使用的编程模型。我们还进一步讨论了软件对线程的支持,主要是增加运行时的确定性行为。最后,我们通过讨论与线程管理相关的一些常见问题来总结本文。
2016-04-06 cs.PL
Programmatic Control of a Compiler for Generating High-performance Spatial Hardware
这篇方法论论文讨论了空间架构上的高性能高生产力编程。空间架构对于执行并行算法是有效的,但是对于高性能编程,生产率低并且验证是痛苦的。我们表明,编码和验证是空间架构广泛采用的最大障碍。我们提出了一种新的编程方法,T2S(时间到空间),以消除这一障碍。程序员指定时间定义和空间映射。时间定义定义了要计算的功能,而空间映射定义了如何分解功能并将分解的部分映射到空间架构上。规范精确地控制编译器实际实现映射中指定的循环和数据转换。该规范是面向循环嵌套和矩阵的,因此适合于编译器进行自动静态验证。许多通用的,战略循环和数据优化可以系统地表达。因此,高性能与高生产力的预期:与高性能编程在今天的高级综合(HLS)语言或硬件描述语言(HDL),工程工作的编码和验证预计将减少从几个月到几个小时,减少2或3个数量级。
2017-12-13 cs.PL
Extending programs with debug-related features, with application to hardware development
可重构硬件(如FPGA)的容量和可编程性多年来一直在稳步提高,但它们并不容易提供任何监控或调试运行程序的机制。这种机制需要写入程序本身。与CPU编程相比,这是使用临时方法和原始工具完成的。这使得可重构硬件的编程和调试变得复杂。我们介绍程序托管的可指导性(PhD),程序的扩展,在运行时解释方向命令,使调试,监控和分析。通常在硬件开发中,这些特性在编译时就被固定下来了。我们提出了一种语言的指导命令,指定其语义方面的一个简单的控制器,是嵌入式程序,并实现了一个原型,用于指导网络程序在硬件上运行。我们表明,这种方法提供了显着的灵活性,对硬件利用率和性能的影响较低。
2017-05-28 cs.PL
Bridging the Knowledge Void: Inference-time Acquisition of Unfamiliar Programming Languages for Coding Tasks
State Key Laboratory for Novel Software Technology, Nanjing University, China(新型软件技术国家重点实验室,南京大学,中国);National Institute of Healthcare Data Science, Nanjing University, China(健康数据科学国家研究院,南京大学,中国)
本文提出ILA-agent框架,通过推理时动态交互获取不熟悉编程语言,提升编码任务性能。
2026-01-16 cs.AI cs.CL cs.LG
Hardware/Software Co-Assurance using the Rust Programming Language and ACL2
Rust程序设计语言作为一种现代的、类型安全的、内存安全的、潜在的可形式化分析的程序设计语言,已经引起了人们的极大兴趣和使用。我们对Rust的兴趣源于它作为硬件/软件共同保证语言的潜力,并应用于自动驾驶汽车等关键系统。我们报告了Rust作为高级合成(HLS)语言的首次使用。大多数现有的HLS语言都是C的子集。基于Rust的HLS为硬件和软件实现带来了一种现代的、类型安全的、内存安全的表达式语言,具有很高的保证。为了研究Rust作为HLS的适用性,我们精心制作了一个Rust子集,灵感来自Russinoff的Restricted Rummic C(RAC),我们将其命名为Restricted Rummic Rust或RAR。在我们的第一个RAR工具链实现中,我们简单地将RAR源代码转换为RAC。通过这样做,我们利用了一些现有的硬件/软件共同保证工具,以最少的时间和精力投资。在本文中,我们描述了RAR Rust子集,详细介绍了我们的原型RAR工具链,并描述了实现和验证的几个代表性的算法和数据结构编写的RAR,使用ACL 2定理证明进行的正确性证明。
2022-05-24 cs.LO cs.PL
Opportunities and Challenges for Circuit Board Level Hardware Description Languages
板级硬件描述语言(HDL)是提高电子设计自动化和抽象水平的一种方法。这些系统借用了程序设计语言的概念,如生成器和类型系统,但也必须考虑到人为因素来设计,以服务于现有的硬件工程师。在这项工作中,我们看一个最近的原型系统,并讨论开放的问题,从基本模型,通过可用的接口。
2020-11-16 cs.PL
Neuromorphic Programming: Emerging Directions for Brain-Inspired Hardware
CogniGron Center(CogniGron中心);Bernoulli Institute(伯努利研究所);University of Groningen(格罗宁根大学);KTH Royal Institute of Technology(瑞典皇家理工学院)
本文分析神经形态计算语境下的编程问题,挑战传统编程范式,提出贴合神经形态硬件物理特性的编程框架,围绕五项基本特征展开研究,倡导未被充分利用的技术并呼吁构建更丰富的抽象层以释放这类硬件的潜力。
2024-10-15 cs.AI cs.DC cs.ET
Comparative Studies of Six Programming Languages
比较程序设计语言是软件工程师讨论的一个常见话题。为了跟上不断变化的编程范式、硬件发展等,每年都有多种程序设计语言被设计、指定和实现。本文对六种程序设计语言:C++、PHP、C#、Java、Python、VB进行了比较研究;从可重用性、可靠性、可移植性、编译器和工具的可用性、可读性效率、熟悉度和表现力。
2015-04-02 cs.PL
Function Interface Models for Hardware Compilation: Types, Signatures, Protocols
从用高级程序设计语言(硬件编译)编写的行为规范中合成数字电路的门级描述的问题已经研究了很长时间,但还没有一个明确的解决方案。这篇文章的论点主要是方法论的,带来了一个由编程语言理论的最新发展所告知的观点。我们认为,硬件编译成为一个有用的和成熟的技术的方式的主要障碍之一是缺乏一个定义良好的函数接口模型,即一个规范的方式,函数与参数进行通信。我们讨论了这个问题的后果,并提出了一个解决方案的基础上,在程序设计语言理论的新发展。最后,我们提出了一个原型实现和一些例子说明我们的原则。
2009-07-04 cs.AR cs.PL
Connecting the Dots: Computer Systems Education using a Functional Hardware Description Language
功能硬件描述语言使学生能够获得计算机系统的工作理解,并看到抽象的层次如何配合在一起。通过模拟电路,数字设计就像编程一样成为一个活生生的话题,而不仅仅是一组需要记忆的惰性事实。讨论了20多年来通过函数式编程教学计算机系统的经验。
2013-01-22 cs.CY cs.PL
Transparent Compiler and Runtime Specializations for Accelerating Managed Languages on FPGAs
近年来,异构计算已经成为增加计算机数量的重要途径。通过结合图形处理单元(GPU)和现场可编程门阵列(FPGA)等各种硬件设备,提高性能和能效。这种趋势背后的原理是,应用程序的不同部分可以从主CPU卸载到不同的设备,这些设备可以作为协处理器有效地执行这些部分。FPGA是最广泛使用的协处理器的子集,由于其灵活的硬件和节能特性,通常用于加速特定的工作负载。这些特性使它们在从低功耗嵌入式系统到高端数据中心和云基础设施的广泛计算系统中普遍存在。然而,这些硬件特性是以可编程性为代价的。使用高级程序设计语言(例如,Java、Python等)需要熟悉硬件描述语言(例如,VHDL、Verilog)或最近的异构编程模型(例如,OpenCL,HLS),以利用协处理器?容量并调整其应用程序的性能。目前,上述异构编程模型仅支持从编译语言(如C和C++)编译。因此,异构协处理器到托管程序设计语言(例如Java、Python)的软件生态系统的透明集成不是无缝的。在本文中,我们重新考虑了我们遇到的工程权衡,在透明度和编译开销方面,同时将FPGA集成到高级托管程序设计语言中。我们提出了一种新的方法,使运行时代码专业化技术的无缝和高性能的Java程序在FPGA上执行。所提出的解决方案是原型的Java程序设计语言和TornadoVM的上下文中,一个开源的Java执行异构硬件的编程框架。最后,我们评估了针对FPGA执行的…
2020-10-30 cs.PL
Quingo: A Programming Framework for Heterogeneous Quantum-Classical Computing with NISQ Features
噪声中尺度量子(NISQ)系统的控制复杂性不断增加,强调了将量子硬件与量子软件集成的必要性。在将异构量子经典计算(HQCC)算法映射到NISQ硬件上执行时,我们观察到量子编程语言(QPL)中的一些不满意之处,包括难以映射到硬件,表达能力有限以及违反直觉的代码。此外,有噪声的量子比特需要重复进行量子实验,这些实验明确地操作低级配置,例如操作的脉冲和定时。该要求超出了大多数现有QPL的范围或能力。我们总结了三种执行模型来描述现有QPL的量子经典相互作用。基于改进的HQCC模型,我们提出了Quingo框架来集成和管理量子经典软件和硬件,以提供HQCC应用程序的可编程性,并将其映射到NISQ硬件。我们提出了一个六阶段的量子程序生命周期模型匹配的改进HQCC模型,这是由一个运行时系统实现。我们还提出了Quingo编程语言,这是一种外部特定领域的语言,突出了基于定时器的定时控制和不透明操作定义,可用于描述量子实验。我们相信,Quingo框架有助于澄清未来HQC CC系统设计中的关键技术。
2021-08-07 cs.PL quant-ph
A novel datatype architecture support for programming languages
从程序员的角度来看,程序设计语言级的数据库具有简单的描述,而在硬件内部,庞大的机器码负责描述类型特征。数据类型架构设计是一种将编程特性与硬件设计相匹配的新方法。根据程序设计语言的重要数据类型(SDT),提出并实现了一种新的基于数据类型的代码缩减器(TYPELINE)结构。TYPELINE使用TEU处理各种SDT操作。这种结构设计减少了机器码的数量,提高了执行速度,同时也提高了一定的并行度。这是因为该体系结构支持并行执行抽象数据类型的某些操作。此外,它确保使用所提出的类型转换单元来维护数据类型特征和整个应用级规范。该框架包括编译器级执行模式识别和存储管理单元,通过ISA支持减少堆内存中对象的读写。这种节能架构与面向对象的程序设计语言完全兼容,并且在组合模式下,它可以处理关于并行TYPELINE架构支持的复杂C++数据结构。
2014-02-01 cs.PL
C-for-Metal: High Performance SIMD Programming on Intel GPUs
SIMT执行模型通常用于通用GPU开发。CUDA和OpenCL开发人员编写标量代码,由编译器和硬件隐式并行化。然而,在英特尔GPU上,这种抽象具有深刻的性能影响,因为底层ISA是SIMD,并且无法充分利用重要的硬件功能。为了缩小这一性能差距,我们引入了C-For-Metal(CM),这是一种显式SIMD编程框架,旨在在英特尔GPU上提供接近最佳性能。CM程序设计语言及其向量/矩阵类型提供了一个直观的界面来利用底层硬件功能,允许细粒度寄存器管理、SIMD大小控制和跨通道数据共享。实验结果表明,来自不同领域的CM应用程序的性能优于最知名的基于SIMT的OpenCL实现,在最新的英特尔GPU上实现高达2.7倍的加速。
2021-01-26 cs.DC cs.PL
QCoder Benchmark: Bridging Language Generation and Quantum Hardware through Simulator-Based Feedback
National Institute of Advanced Industrial Science and Technology (AIST)(国家先进工业科学与技术研究院);Yokohama National University(Yokohama国立大学);CyberAgent, Inc.(CyberAgent公司);DENSO CORPORATION(DENSO公司);The University of Tokyo(东京大学);Keio University(庆应义塾大学);NTT DATA GROUP Corporation(NTT DATA集团公司);Miletos inc.(Miletos公司);University of Tsukuba(筑波大学)
针对量子编程中 LLM 与硬件交互的空白,提出基于模拟器反馈的 QCoder Benchmark,通过领域指标与真实竞赛代码评估模型,实验表明推理模型 o3 准确率达 78%,远超 GPT-4o 与人类平均水平。
2025-11-01 cs.CL cs.PL quant-ph
Rascal: From Algebraic Specification to Meta-Programming
代数规范在通过使规范可执行来弥合规范和编程之间的差距方面有着悠久的传统。在设计、实现和使用基于代数规范和术语重写(即Asf和Asf+Sdf)的规范形式主义方面积累了丰富的经验,我们现在专注于使用代数规范中的最佳概念,并将其集成到一种新的程序设计语言中:Rascal。这种语言对于非专家来说很容易学习,但也可以扩展到非常大的元编程应用程序。我们解释Rascal的代数根及其主要应用领域:软件分析,软件转换,以及特定领域语言的设计和实现。模型驱动工程(MDE)领域中的一些示例应用程序的描述来说明这一点。
2011-06-30 cs.PL cs.SE
$Q|SI\rangle$: A Quantum Programming Environment
介绍了一个量子程序设计环境$Q|SI\rangle$。它是一个嵌入.Net语言的平台,支持使用$\mathbf{while}$语言的量子扩展进行量子编程。该平台的框架包括一个量子$\mathbf{while}$语言的编译器和一套用于模拟量子计算、优化量子线路以及分析和验证量子程序的工具。在整个文件中,使用$Q|SI\rangle$模拟量子行为的经典平台与组件的组合进行了演示。可扩展的框架允许用户在平台上编程定制功能。编译器是$Q|SI\rangle$的核心,它在量子硬件和量子软件之间架起了一座桥梁。内置的分解算法使通用的量子计算在现有的量子硬件上。
2017-10-26 cs.PL quant-ph
Process-Oriented Parallel Programming with an Application to Data-Intensive Computing
我们介绍面向过程的编程作为一个自然的扩展面向对象的编程并行计算。它基于这样的观察:面向对象语言的每个类都可以实例化为一个进程,可以通过远程指针访问。进程指针的引入不需要语法扩展,用编程对象标识进程,并使进程能够通过执行远程方法简单地交换信息。面向过程的编程是一种高级语言,可以替代多线程、MPI和当前用于并行计算的许多其他语言、环境和工具。它只使用现有语言(如C++和Python)的最小语法扩展来实现自然的基于对象的并行性,因此有可能导致并行编程的广泛采用。我们实现了一个原型系统运行进程使用C++与MPI,并使用它来计算一个大型的三维傅立叶变换的计算机集群上建立的商品硬件组件。三维傅立叶变换是具有复杂数据访问模式的数据密集型应用程序的原型。面向进程的代码只有几百行,通过实现大规模并行和最大化硬件利用率来实现非常高的数据吞吐量。
2014-07-21 cs.DC cs.PL
Noise-aware Verification and Synthesis of Quantum Programs
Institute of Science and Technology in Austria (ISTA)(奥地利科学与技术研究所)
本文针对真实有噪声硬件上的量子程序,开发噪声感知量子霍尔逻辑,实现特定硬件量子程序的有界验证与噪声最优无循环量子程序综合,经IBM Qiskit评估,发现经典概率分支是量子编程最优的必要条件。
2026-10-21 cs.FL cs.LO cs.PL
Rule-based High-level Hardware-RTL Synthesis of Algorithms, Virtualizing Machines, and Communication Protocols with FPGAs based on Concurrent Communicating Sequential Processes and the ConPro Synthesis Framework
虚拟化是对细节的抽象。算法和程序设计语言也提供了抽象。硬件和嵌入式系统的虚拟化在异构环境和网络中变得越来越重要,例如,分布式和材料集成传感器网络。通过引入直接在片上硬件中实现的虚拟化层,可以统一和唯一地访问各种硬件和低级协议的通信和数据处理。今天的硬件设计仍然是组件驱动的(如电路板),而不是将算法作为抽象层直接转换为硬件设计。程序和协议是算法,因此不要像传统的高级综合设计流程那样将它们作为设备处理!具有主导和复杂控制路径的复杂反应系统在SoC设计中发挥着越来越重要的作用。对并发性的主要贡献出现在控制路径级别。本文深入介绍了SoC设计方法,使用最高级别的综合ConPro编译器框架和面向过程的程序设计语言,提供了一个编程模型的基础上并发执行和通信的顺序进程(CCSP)与广泛的一组进程间通信原语。电路是在算法层面上建模和编程的,比组件驱动的设计更方便和自然。扩展的案例研究的智能通信协议路由器和先进的基于堆栈的处理器提供了一个可编程的虚拟化层显示和评估。两者一起用作部署在高密度传感器-致动器-网络中的智能节点架构,例如,用于材料集成智能系统。
2023-02-06 cs.AR cs.DC cs.PL
QCOR: A Language Extension Specification for the Heterogeneous Quantum-Classical Model of Computation
量子计算是一种新兴的计算范式,它利用量子力学的定律来执行基本的逻辑运算。现有的量子计算编程模型在设计时考虑了容错硬件,设想了独立的应用程序。然而,近期的量子计算机容易受到噪声的影响,这限制了它们的独立实用性。为了更好地利用有噪声的量子设备的有限计算强度,已经提出了混合算法,由此量子计算机以异构方式与它们的经典对应物一起使用。这种{ \it工作方式}需要一种编程模型和一种高级程序设计语言,在单一源代码范例中原生地无缝支持异构量子经典硬件架构。由于缺乏这样的模型,我们引入了一个语言扩展规范,称为QCOR,使单源量子经典编程。使用QCOR库和基于指令的语言扩展编写的程序可以编译为功能混合二进制可执行文件。在定义了QCOR的编程模型、内存模型和执行模型之后,我们讨论了QCOR如何实现变分、迭代和前馈量子计算。QCOR以与硬件无关的异构方式实现量子经典计算,并努力构建高性能计算(HPC)的最佳实践。开发语言中的高抽象级别旨在加速熟悉经典HPC的研究人员采用量子计算。
2019-09-05 cs.PL quant-ph
Qrisp: A Framework for Compilable High-Level Programming of Gate-Based Quantum Computers
针对量子计算高级编程抽象不足的问题,提出Qrisp框架,通过经典范式启发的编程抽象实现可编译至电路级的量子编程,提升编译效率并降低量子资源需求。
2024-06-20 cs.PL quant-ph
Programming Discrete Physical Systems
可以在计算机上执行的每个算法至少在原则上可以在硬件中实现,即通过离散的物理系统实现。问题是,到目前为止,还没有一种程序设计语言可以用来构造性地描述物理系统。然而,这种工具对于复杂系统的紧凑描述和自动化生产是必不可少的。本文介绍了一种程序设计语言--阿克顿代数,它为离散物理系统的完整描述提供了基础。该方法起源于发现,每个离散的物理系统减少到一个时空拓扑网络的节点,如果删除的功能和度量属性。下一个发现是,存在一个同胚之间的拓扑网络和一个序列的符号表示的程序,通过该程序可以重建原来的节点网络。为Akton-Algebra提供功能将其转变为流控制的通用数据处理语言,通过引入时钟控制和寻址,可以进一步将其转换为经典的程序设计语言。为Akton-Algebra提供度量,即组件的形状和大小,使其成为一种新颖的硬件系统构造语言。
2010-05-06 cs.PL physics.class-ph q-bio.MN
Closing the Performance Gap with Modern C++
在通往Exascale的道路上,程序员面临着越来越大的挑战,即必须从同一代码库支持多种硬件架构。与此同时,随着硬件架构变得越来越多样化,代码的可移植性和性能越来越难以实现。当今的异构系统通常包括两个或更多个完全不同且不兼容的硬件执行模型,诸如GPGPU、SIMD向量单元和通用核,其常规上必须使用表示非重叠编程模型的单独工具链来编程。最近工业界和更广泛的社区对C++语言的兴趣复苏,在并发和并行领域激发了大量的标准化建议和技术规范。这包括最近越来越多的讨论,围绕需要一个统一的,更高层次的抽象和编程模型的并行性在C++标准的目标异构和分布式计算。这种抽象应该与现有的、已经标准化的语言和库功能完美融合,但也应该足够通用,以支持未来的硬件开发。在本文中,我们提出了这样一个更高层次的编程抽象的并行性在C++,其目的是使代码和性能的可移植性在广泛的体系结构和各种类型的并行性的结果。我们提出并比较从运行著名的STREAM基准移植到我们的更高级别的C++抽象与相应的结果从运行它本机获得的性能数据。我们表明,我们的抽象,使性能至少一样好的可比基线基准,同时提供一个统一的编程API的所有比较的目标体系结构。
2022-05-30 cs.DC cs.PL
MCBeth: A Measurement Based Quantum Programming Language
基于门的量子程序设计语言无处不在,但基于测量的语言目前只存在于纸上。这项工作介绍了MCBeth,量子程序设计语言,它允许程序员直接表示,编程和模拟基于测量和集群状态计算的测量演算的基础上。虽然MCBeth程序旨在直接在硬件上执行,但为了利用当前的机器,我们还提供了一个编译器来编译基于门的指令。我们认为,与基于门的量子计算相比,基于测量的量子计算在实现常见的量子算法和分布式量子计算方面具有明显的优势。
2022-06-25 cs.PL quant-ph
OpenQL : A Portable Quantum Programming Framework for Quantum Accelerators
随着量子算法解决棘手的经典问题的潜力,量子计算正在迅速发展,更多的算法正在开发和优化。使用高级语言表达这些量子算法,并使其在量子处理器上可执行,同时抽象出硬件细节是一项具有挑战性的任务。首先,量子编程语言应该提供一个直观的编程接口来描述这些算法。然后,编译器必须将程序转换为量子线路,优化它并将其映射到目标量子处理器,以考虑硬件约束,例如支持的量子操作,量子位连接性和控制电子器件限制。在本文中,我们提出了一个名为OpenQL的量子编程框架,它包括一个高级量子编程语言及其相关的量子编译器。我们介绍了OpenQL的编程接口,我们描述了编译器的不同层,以及我们如何在不同的量子位技术上提供可移植性。我们的实验表明,OpenQL允许在两种不同的量子比特技术上执行相同的高级算法,即超导量子比特和Si-Spin量子比特。除了可执行代码外,OpenQL还生成一个中间量子汇编代码(cQASM),它与技术无关,可以使用QX模拟器进行模拟。
2020-05-27 cs.PL cs.SE quant-ph
Catroid: A Mobile Visual Programming System for Children
Catroid是一个免费开源的可视化程序设计语言、编程环境、图像处理程序和网站。Catroid允许8岁以上的临时用户和首次用户仅使用Android手机或平板电脑开发自己的动画和游戏。Catroid还允许通过蓝牙无线控制外部硬件,如Lego Mindstorms机器人,蓝牙Arduino板,以及Parrot的流行和廉价的AR.Drone四轴飞行器。
2012-04-28 cs.CY cs.HC cs.PL
A Compilation Target for Probabilistic Programming Languages
University of Oxford(牛津大学)
通过创造性地使用标准化的操作系统功能,包括进程、分叉、互斥和共享存储器,可以用任何程序设计语言来实现诸如用于概率编程的顺序蒙特卡罗和粒子马尔可夫链蒙特卡罗的前向推理技术。利用这一点,我们已经定义,开发和测试的概率程序设计语言中间表示语言,我们称之为概率C,它本身可以被编译成机器码的标准编译器和链接到操作系统库产生一个有效的,可扩展的,便携式的概率编程编译目标。这为优化概率编程系统开辟了一条新的硬件和系统研究路径。
2014-07-10 cs.AI cs.PL stat.ML
GUPPY: Pythonic Quantum-Classical Programming
本文介绍 Guppy,一种嵌入 Python 的领域特定语言,用于以 Pythonic 语法编写高级混合量子程序,支持复杂控制流,并可在真实量子硬件上运行。
2025-10-14 cs.PL cs.SE quant-ph