388,455 research outputs found

    Teaching Parallel Programming Using Java

    Full text link
    This paper presents an overview of the "Applied Parallel Computing" course taught to final year Software Engineering undergraduate students in Spring 2014 at NUST, Pakistan. The main objective of the course was to introduce practical parallel programming tools and techniques for shared and distributed memory concurrent systems. A unique aspect of the course was that Java was used as the principle programming language. The course was divided into three sections. The first section covered parallel programming techniques for shared memory systems that include multicore and Symmetric Multi-Processor (SMP) systems. In this section, Java threads was taught as a viable programming API for such systems. The second section was dedicated to parallel programming tools meant for distributed memory systems including clusters and network of computers. We used MPJ Express-a Java MPI library-for conducting programming assignments and lab work for this section. The third and the final section covered advanced topics including the MapReduce programming model using Hadoop and the General Purpose Computing on Graphics Processing Units (GPGPU).Comment: 8 Pages, 6 figures, MPJ Express, MPI Java, Teaching Parallel Programmin

    A Generic Software Modeling Framework for Building Heterogeneous Distributed and Parallel Software Systems

    Get PDF
    Heterogeneous distributed and parallel computing environments are highly dependent on hardware and communication protocols. The result is significant difficulty in software reuse, portability across platforms, interoperability, and an increased overall development effort. A new systems engineering approach is needed for parallel processing systems in heterogeneous environments. The generic modeling framework de-emphasizes platform- specific development while exploiting software reuse (and platform-specific capabilities) with a simple, well defined, and easily integrated set of abstractions providing a high level of heterogeneous interoperability

    Adapting Quality Assurance to Adaptive Systems: The Scenario Coevolution Paradigm

    Full text link
    From formal and practical analysis, we identify new challenges that self-adaptive systems pose to the process of quality assurance. When tackling these, the effort spent on various tasks in the process of software engineering is naturally re-distributed. We claim that all steps related to testing need to become self-adaptive to match the capabilities of the self-adaptive system-under-test. Otherwise, the adaptive system's behavior might elude traditional variants of quality assurance. We thus propose the paradigm of scenario coevolution, which describes a pool of test cases and other constraints on system behavior that evolves in parallel to the (in part autonomous) development of behavior in the system-under-test. Scenario coevolution offers a simple structure for the organization of adaptive testing that allows for both human-controlled and autonomous intervention, supporting software engineering for adaptive systems on a procedural as well as technical level.Comment: 17 pages, published at ISOLA 201

    Software systems for operation, control, and monitoring of the EBEX instrument

    Full text link
    We present the hardware and software systems implementing autonomous operation, distributed real-time monitoring, and control for the EBEX instrument. EBEX is a NASA-funded balloon-borne microwave polarimeter designed for a 14 day Antarctic flight that circumnavigates the pole. To meet its science goals the EBEX instrument autonomously executes several tasks in parallel: it collects attitude data and maintains pointing control in order to adhere to an observing schedule; tunes and operates up to 1920 TES bolometers and 120 SQUID amplifiers controlled by as many as 30 embedded computers; coordinates and dispatches jobs across an onboard computer network to manage this detector readout system; logs over 3~GiB/hour of science and housekeeping data to an onboard disk storage array; responds to a variety of commands and exogenous events; and downlinks multiple heterogeneous data streams representing a selected subset of the total logged data. Most of the systems implementing these functions have been tested during a recent engineering flight of the payload, and have proven to meet the target requirements. The EBEX ground segment couples uplink and downlink hardware to a client-server software stack, enabling real-time monitoring and command responsibility to be distributed across the public internet or other standard computer networks. Using the emerging dirfile standard as a uniform intermediate data format, a variety of front end programs provide access to different components and views of the downlinked data products. This distributed architecture was demonstrated operating across multiple widely dispersed sites prior to and during the EBEX engineering flight.Comment: 11 pages, to appear in Proceedings of SPIE Astronomical Telescopes and Instrumentation 2010; adjusted metadata for arXiv submissio

    Performance analysis integration in the Uintah software development cycle

    Get PDF
    ManuscriptThe increasing complexity of high-performance computing environments and programming methodologies presents challenges for empirical performance evaluation. Evolving parallel and distributed systems require performance technology that can be flexibly configured to observe different events and associated performance data of interest. It must also be possible to integrate performance evaluation techniques with the programming paradigms and software engineering methods. This is particularly important for tracking performance on parallel software projects involving many code teams over many stages of development. This paper describes the integration of the TAU and XPARE tools in the Uintah Computational Framework (UCF). Discussed is the use of performance mapping techniques to associate low-level performance data to higher levels of abstraction in UCF and the use of performance regression testing to provides a historical portfolio of the evolution of application performance. A scalability study shows the benefits of integrating performance technology in building large-scale parallel applications

    Паралельні та розподілені обчислення. Вибрані розділи

    Get PDF
    Викладено засоби мови програмування Ада для розробки програмного забезпечення для паралельних та розподілених систем. Мова використовується як базова в кредитному модулі “Паралельні та розподілені обчислення”. Розглянуто засоби програмування для паралельних систем зі спільною пам’яттю: семафори, atomic-змінні, бар’єри, захищені типи. Наведено матеріал про можливості мови Ада для програмування для паралельних систем зі локальною пам’яттю: механізм рандеву. Розглянуті засоби мови Ада для програмування в розподілених комп’ютерних системах: сокети, виклик віддалених процедур (RPC). Наведено приклади застосування мови для створення програмного забезпечення паралельних системах є різною структурною організацією. Для студентів освітньої програми «Комп’ютерні системи та мере-жі» за спеціальністю 123 «Комп’ютерна інженерія», які вивчають проектування програмного забезпечення для паралельних комп’ютерних систем, а також буде корисним під час виконання курсових проектів, бакалаврських робіт та магістерських дисертацій, в яких використовуються паралельні комп’ютерні системи.Ada programming language tools for software development for parallel and distributed systems are described. The language is used as a base in the credit module "Parallel and distributed computing". Programming tools for parallel systems with shared memory are considered: semaphores, atomic variables, barriers, protected types. Here is material on the possibilities of the Hell language for programming for parallel systems with local memory: the rendezvous mechanism. Ada tools for programming in distributed computer systems are considered: sockets, remote procedure call (RPC). Examples of the use of language to create software for parallel systems are different structural organization. For students of the educational program "Computer Systems and Networks" in the specialty 123 "Computer Engineering", who study the design of software for parallel computer systems, and will be useful during the course projects, bachelor's theses and master's theses, which use parallel computer systems

    Advanced software integration: The case for ITV facilities

    Get PDF
    The array of technologies and methodologies involved in the development and integration of avionics software has moved almost as rapidly as computer technology itself. Future avionics systems involve major advances and risks in the following areas: (1) Complexity; (2) Connectivity; (3) Security; (4) Duration; and (5) Software engineering. From an architectural standpoint, the systems will be much more distributed, involve session-based user interfaces, and have the layered architectures typified in the layers of abstraction concepts popular in networking. Typified in the NASA Space Station Freedom will be the highly distributed nature of software development itself. Systems composed of independent components developed in parallel must be bound by rigid standards and interfaces, the clean requirements and specifications. Avionics software provides a challenge in that it can not be flight tested until the first time it literally flies. It is the binding of requirements for such an integration environment into the advances and risks of future avionics systems that form the basis of the presented concept and the basic Integration, Test, and Verification concept within the development and integration life cycle of Space Station Mission and Avionics systems
    corecore