首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 140 毫秒
1.
DENNET是清华大学高性能计算所开发的一个机群系统并行程序调试环境.本文分析并行程序调试环境的现状和发展趋势;阐述调试环境对并行程序的干扰问题,指出降低乃至完全消除干扰是并行程序调试环境的一个重要研究方向,介绍了DENNET设计时采用的两种降低干扰的技术.  相似文献   

2.
确定性并行技术   总被引:1,自引:0,他引:1  
由于执行个体之间的同步、竞争和干扰,并行程序的执行存在着不确定性问题,即程序在相同输入下多次执行可能得到不同的结果.不确定性给并行程序在开发、调试、测试、容错和安全等方面都带来了挑战,严重降低了并行程序的可靠性,阻碍了并行程序的发展.确定性并行技术通过控制并行程序执行个体间的同步、竞争和干扰,使程序的执行结果仅依赖于输入.确定性并行技术能够从根本上解决了目前并行程序存在的诸多问题,提升了并行程序的可靠性,给并行程序的发展带来了新的机遇.文中调查、分析和比较了目前主流的确定性并行技术和方法,分析了弱内存一致性对确定性并行系统的影响,并对未来确定性并行技术的发展趋势做出了展望.  相似文献   

3.
一种基于检查点的并行程序调试器的设计与实现   总被引:4,自引:1,他引:4  
为支持大规模长时间运行并行程序的调试,有必要将检查点机制引入到并行程序调试器中,检查点设置与卷回应用中需要解决中途消息,孤儿消息和多米诺效应,活锁4个问题,并行程序调试中需要解决不确定性问题,提出的基于状态冻结的确定性检查点设置方法,可以避免检查点应用中孤儿消息和多米诺效应,活锁3个问题,通过消化记录的方法处理中途消息问题,采用记录/重放方法解决并行调试中的不确定性问题,基于状态冻结的确定性检查点设置方法,有效地解决了并行程序调试器和检查点结合时产生的诸多问题,该方法具有结构清晰,易于实现的优点,基于此技术,设计并实现了一个并行调试工具-DENNET。  相似文献   

4.
随着多核设备的普及,主流软件系统的构建模式已经由单线程串行转为多线程的并行方式.然而,由于并行程序的不确定性,使得调试并行程序错误要比串行程序的错误困难很多.因此,如何高效地调试并行程序错误成为了亟待解决的问题.对并行错误调试技术做了全面的研究与分析.在此基础上,进一步讨论了不同调试技术的优劣,也对并行调试技术可能的发展方向进行展望.  相似文献   

5.
与串行程序相比,并行程序调试会遇到新的问题。首先并行程序往往需要长时间运行,从而导致并行程序调试是一个尤其费时的过程;其次并行程序调试过程中,某一次调试出现的错误在下次调试的时候不一定出现,给错误跟踪带来了很大困难。本文针对这两个问题,设计和实现了一个中间件系统,在并行调试工具XMPI中使能BLCR检查点系统的。通过该中间件,在使用XMPI调试大型MPI并行程序的时候,减少调试阶段并行程序运行时间,并且可以更好跟踪并行程序错误,提高并行程序开发效率。  相似文献   

6.
介绍了为曙光机群系统设计实现的并行调试器DCDB。DCDB同时支持调试MPI或PVM、C或Fortran的并行应用程序,实现了记录/重放并行调试功能,支持循环调试,解决了并行调试时并行程序的不确定性问题。DCDB采用Client/server/Client结构,具有友好的图形用户界面,系统主要采用Java语言开发,具有良好的可移植性和可扩展性。  相似文献   

7.
并行程序在运行过程中会受到外部运行环境的干扰而出现错误,并行程序调试可以帮助用户发现并排除程序中存在的错误。只有对程序的运行进行监测才能获得调试数据,并对监测到的数据进行分析,以达到调试程序的目的。网格计算的提出推动了并行计算的发展,越来越多的应用程序在网格环境中运行。该文从以上两点出发,开发了一个网格应用程序的监测系统,可以用以调试网格上的应用程序。  相似文献   

8.
Linux机群系统并行程序调试器的设计与实现   总被引:5,自引:0,他引:5  
介绍了在基于Linux的机群系统中,并行程序调试工具XBUSTER的设计与实现,包括调试器的基本结构及在实现时所涉及的一些关键技术。XBUSTER具有一般调试器的基本调试功能,可以调试用C/Fortran语言编写的PVM或MPI,对并行程序的各个进程能够单独或同时进行调试,并且能够实现进程的动态调试。该系统已在运行Linux系统的清华集群计算机系统上运行,具有较好的实用性。  相似文献   

9.
基于事件模型的可视化并行调试技术   总被引:3,自引:0,他引:3       下载免费PDF全文
并行程序存在资源竞争、时序紊乱、死锁等复杂问题,加上并行程序的不确定性,给调试带来了很大的困难.基于事件模型的可视化并行调试技术EVTPD(event—basedvisualizationtechniquesonparalleldebugging)为解决这些困难提供了一个途径.EVTPD的基本要素是事件监视与可视化重放.本文讨论了事件监视与可视化重放中的关键技术;事件描述、事件过滤、事件识别、时戳、记录重放、执行重放和视图定义,并且给出了一个基于工作站机群系统的并行调试器的结构.  相似文献   

10.
并行程序由于自身的复杂性使得并行程序的调试相比串行程序要困难的多,因此用可视化的性能分析工具来辅助并行程序的调试显得非常重要,以此来帮助程序员找到程序的性能瓶颈,为并行程序的优化提供指导和建议。本文在研究MPE性能分析机理的基础上,介绍了一种实用的MPI并行程序可视化性能分析方法,并用实例详细说明了并行程序实时可视化性能分析和事后可视化性能分析过程。  相似文献   

11.
Jason Gait 《Software》1985,15(6):539-554
This paper reports on an experimental debugger for concurrent programs. Design objectives include a showing of greatest usefulness when dealing with multiprocess interactions, creation of a simplified more approachable interface for programmers, allowance for the systematic organization (and limitation) of debugging information by programmers, reflection of a natural view of concurrency, and portability. The design responds to a perceived need for debugging techniques applicable in systems of concurrent, communicating, asynchronous processes. During debugging sessions, a user is able to dynamically explore interprocess synchronization points, parallel actions and deadlock situations. The programmer interface is based on a transparent window multiplexer providing a set of windows for each concurrent process. The window manager interactively maps interesting windows to programmer-specified viewscreen locations, while relegating temporarily uninteresting windows to the background. In implementing a debugger for concurrent programs, a principal concern is the probe effect, or the possibility that the debugger itself masks synchronization errors in the program being debugged. For the examples explored, the probe effect was not observed to limit the localization of implanted synchronization errors.  相似文献   

12.
Tools that observe and manipulate the run-time behavior of parallel and distributed systems are essential for developing and maintaining these systems. Sometimes users would even need to use several tools at the same time in order to have a higher functionality at their disposal. Today, tools developed independently by different vendors are, however, not able to interoperate. Interoperability not only allows concurrent use of tools, but also can lead to an added value for the user. A debugger interoperating with a checkpointing system, for example, can provide a debugging environment where the debugged program can be reset to any previous state, thus speeding up cyclic debugging for long running programs.Using this example scenario, we derive requirements that should be met by the tools' software infrastructure in order to enable interoperability. A review of existing infrastructures shows that these requirements are only partially met today. In an ongoing research effort, support for all of the requirements is built into the OMIS compliant on-line monitoring system OCM.  相似文献   

13.
Facilities for debugging FORTRAN-DVM and C-DVM programs are described. The following approach is used to debug a DVM program. At the first stage, the program is debugged as an ordinary sequential program with the help of conventional debugging facilities. At the second stage, the program is executed on the same computer in a special mode of checking DVM directives. At the third stage, the program can be executed in a special mode when intermediate results of parallel execution are compared with reference results (e.g., those obtained during a sequential execution).  相似文献   

14.
Pothier  G. Tanter  E. 《Software, IEEE》2009,26(6):78-85
This article presents TOD (trace oriented debugger), a prototype scalable omniscient debugger for Java, which aims at making omniscient debugging practical, at last. Omniscient debuggers, also known as back-in-time or reversible debuggers, record the whole history, or execution trace, of a debugged program and let the user freely explore it. This approach combines the advantages of both log-based (past activity is never lost) and breakpoint based debugging (interactive navigation, step-by-step execution, and complete stack inspection). Omniscient debuggers simulate step-by-step execution both forward and backward, avoiding having to rerun the whole program many times to pinpoint the bug's root cause. More importantly, they make it possible to navigate through the history of a program by following causal links, so questions that would otherwise require a significant effort can be answered instantly for instance, "When was variable x assigned a null value?" or "What was the state of object o when it was passed as an argument to method foo?".  相似文献   

15.
MPDG是为高性能并行巨型机系统设计的调试工具,其设计指导思想是:1.采用Client/Server结构,实现系统的可移植性,具体表现为将用户界面,并行调试管理与调试监控服务分离,调试监控采用目标系统支持的调试器;2.以同一的使用方式支持多种并行程序设计模式应用,针对共享内存的并行目标应用(如OpenMP程序)和基.于水息传递的分布式目标应用(如PVM或MPI程序),提供风格完全一致的调试手段;3.实现图形用户界面,MPDG的GUI分为3级,即主界面,进程集,单个进程,进程集控制特别适合具有相同执行流和用户视图的并行进程的调试。  相似文献   

16.
R. S. Side  G. C. Shoja 《Software》1994,24(5):507-525
Developing a distributed debugger is much more complex than developing a sequential debugger. This added complexity is mainly due to the non-determinism of events that communication delays introduce into distributed systems. We explore the problems that one must address when designing a distributed program debugger and then describe our design and implementation of DPD (distributed program debugger). Problems addressed include non-determinism of events, finding consistent system states, setting breakpoints, recording events, and checkpointing. Important features of DPD include dynamic roll back and replay, as well as a graphical user interface. DPD has been tested successfully in debugging distributed programs within a distributed facility called REM (remote execution manager).  相似文献   

17.
Program debugging is an important part of the domain expertise required for intelligent tutoring systems that teach programming languages. This article explores the process by which student programs can be automatically debugged in order to increase the instructional capabilities of these systems. The research presented provides a methodology and implementation for the diagnosis and correction of nontrivial recursive programs. In this approach, recursive programs are debugged by repairing induction proofs in the Boyer-Moore logic. The induction proofs constructed and debugged assert the computational équivalence of student programs to correct exemplar solutions. Exemplar solutions not only specify correct implementations but also provide correct code to replace buggy student code. Bugs in student code are repaired with heuristics that attempt to minimize the scope of repair. The automated debugging of student code is greatly complicated by the tremendous variability that arises in student solutions to nontrivial tasks. This variability can be coped with, and debugging performance improved, by explicit reasoning about computational semantics during the debugging process. This article supports these claims by discussing the design, implementation, and evaluation of Talus, an automatic debugger for LISP programs, and by examining related work in automated program debugging. Talus relies on its abilities to reason about computational semantics to perform algorithm recognition, infer code teleology, and to automatically detect and correct nonsyntactic errors in student programs written in a restricted, but nontrivial, subset of LISP. Solutions can vary significantly in algorithm, functional decomposition, role of variables, data flow, control flow, values returned by functions, LISP primitives used, and identifiers used. Solutions can consist of multiple functions, each containing multiple bugs. Empiricial evaluation demonstrates that Talus achieves high performance in debugging widely varying student solutions to challenging tasks.  相似文献   

18.
Program errors are hard to find because of the cause-effect gap between the instant when an error occurs and when the error becomes apparent to the programmer. Although debugging techniques such as conditional and data breakpoints help in finding errors in simple cases, they fail to effectively bridge the cause-effect gap in many situations. This paper proposes two debuggers that provide programmers with an instant error alert by continuously checking inter-object relationships while the debugged program is running. We call such tool a dynamic query-based debugger. To speed up dynamic query evaluation, our debugger implemented in portable Java uses a combination of program instrumentation, load-time code generation, query optimization, and incremental reevaluation. Experiments and a query cost model show that selection queries are efficient in most cases, while more costly join queries are practical when query evaluations are infrequent or query domains are small. To enable query-based debugging in the middle of program execution in a portable way, our debugger performs efficient Java class file instrumentation. We call such debugger an on-the-fly debugger. Though the on-the-fly debugger has a higher overhead than a dynamic query-based debugger, it offers additional interactive power and flexibility while maintaining complete portability.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号