Topic
Software portability
About: Software portability is a research topic. Over the lifetime, 8987 publications have been published within this topic receiving 164922 citations. The topic is also known as: portability.
Papers published on a yearly basis
Papers
More filters
••
11 Sep 1991TL;DR: It is believed that a compiler-integrated approach will provide a significant increase in the efficiency of several existing testing tools and allow program mutation to be effectively used to test commercial software systems.
Abstract: A method for integrating support for program mutation into a compiler is presented. The method is both efficient and sufficiently powerful to support program mutation software testing. Moreover, existing research suggests that this approach appears to be essential for the cost-effective application of program mutation to testing large commercial software systems. It is believed that a compiler-integrated approach will provide a significant increase in the efficiency of several existing testing tools and allow program mutation to be effectively used to test commercial software systems. >
74 citations
••
01 Apr 2012TL;DR: This paper presents the skeleton library Muesli, which not only simplifies parallel programming but also allows to write a single application that may be executed on a variety of parallel machines ranging from simple multi-core processors with shared memory to clusters of multi-and many- core processors with distributed memory as well as multi-GPU systems and GPU clusters.
Abstract: Due to the lack of high-level abstractions, developers of parallel applications have to deal with low-level details such as coordinating threads or synchronising processes. Thus, parallel programming still remains a difficult and error-prone task. In order to shield the user from these low-level details, algorithmic skeletons have been proposed. They encapsulate typical parallel programming patterns and have emerged to be an efficient approach to simplifying the development of parallel applications. In this paper, we present our skeleton library Muesli, which not only simplifies parallel programming. Additionally, it allows to write a single application that may be executed on a variety of parallel machines ranging from simple multi-core processors with shared memory to clusters of multi-and many-core processors with distributed memory as well as multi-GPU systems and GPU clusters. The level of platform independence is not reached by other existing approaches, that simplify parallel programming. Internally, the skeletons are based on MPI, OpenMP and CUDA. We demonstrate portability and efficiency of our approach by providing experimental results.
74 citations
••
TL;DR: A shared nonuniform access memory model is developed which simplifies parallel programming while at the same time providing for portability across both distributed- and shared-memory machines.
Abstract: We describe the design philosophy, structure, and supporting tool kits of the NWChem computational chemistry package. The primary purpose of this effort was to develop efficient parallel algorithms for a broad range of methods commonly used in computational chemistry. To facilitate this, we developed a shared nonuniform access memory model which simplifies parallel programming while at the same time providing for portability across both distributed- and shared-memory machines. In addition to this specific focus on parallelization, a substantial effort has been made to simplify the general problem of large-scale software development, which is common to many research groups. We find that this simplification can be achieved through judicious use of ideas from the computer science field of software engineering in the design and implementation of the program with minimal extra effort on the part of the chemist. © 1995 John Wiley & Sons, Inc.
74 citations
•
01 Jan 2010TL;DR: This paper investigates the specificity of code optimizations to accelerator architecture and the severity of lack of performance portability, and achieves functional protability, allowing to reduce the development time of kernels.
Abstract: Accelerator processors allow energy-efficient computation at high performance, especially for computationintensive applications. There exists a plethora of different accelerator architectures, such as GPUs and the Cell Broadband Engine. Each accelerator has its own programming language, but the recently introduced OpenCL language unifies accelerator programming languages. Hereby, OpenCL achieves functional protability, allowing to reduce the development time of kernels. Functional portability however has limited value without performance portability: the possibility to re-use optimized kernels with good performance. This paper investigates the specificity of code optimizations to accelerator architecture and the severity of lack of performance portability.
74 citations
••
01 Jan 2004TL;DR: Non-functional aspects of software development should be treated as requirements to be dealt with from the earliest stages of the software development process, and then throughout the entire life cycle.
Abstract: Software developers are constantly under pressure to deliver code on time and on budget. As a result, many projects focus on delivering functionalities at the expense of meeting non-functional requirements such as reliability, security, maintainability, portability, accuracy, among others. As software complexity grows and clients demand higher and higher quality software, non-functional properties can no longer be considered to be of secondary importance. Many systems fail or fall into disuse precisely because of inadequacies in these properties. These nonfunctional aspects have been treated as properties or attributes after the fact. While these properties have always been a concern among software engineering researchers, early work have tended to view them as properties or attributes of the finished software product to be evaluated and measured. Recent work offer the complementary view that they should be treated as requirements to be dealt with from the earliest stages of the software development process [6][7], and then throughout the entire life cycle.
74 citations