37 research outputs found

    High-level compiler analysis for OpenMP

    Get PDF
    Nowadays, applications from dissimilar domains, such as high-performance computing and high-integrity systems, require levels of performance that can only be achieved by means of sophisticated heterogeneous architectures. However, the complex nature of such architectures hinders the production of efficient code at acceptable levels of time and cost. Moreover, the need for exploiting parallelism adds complications of its own (e.g., deadlocks, race conditions,...). In this context, compiler analysis is fundamental for optimizing parallel programs. There is however a trade-off between complexity and profit: low complexity analyses (e.g., reaching definitions) provide information that may be insufficient for many relevant transformations, and complex analyses based on mathematical representations (e.g., polyhedral model) give accurate results at a high computational cost. A range of parallel programming models providing different levels of programmability, performance and portability enable the exploitation of current architectures. However, OpenMP has proved many advantages over its competitors: 1) it delivers levels of performance comparable to highly tunable models such as CUDA and MPI, and better robustness than low level libraries such as Pthreads; 2) the extensions included in the latest specification meet the characteristics of current heterogeneous architectures (i.e., the coupling of a host processor to one or more accelerators, and the capability of expressing fine-grained, both structured and unstructured, and highly-dynamic task parallelism); 3) OpenMP is widely implemented by several chip (e.g., Kalray MPPA, Intel) and compiler (e.g., GNU, Intel) vendors; and 4) although currently the model lacks resiliency and reliability mechanisms, many works, including this thesis, pursue their introduction in the specification. This thesis addresses the study of compiler analysis techniques for OpenMP with two main purposes: 1) enhance the programmability and reliability of OpenMP, and 2) prove OpenMP as a suitable model to exploit parallelism in safety-critical domains. Particularly, the thesis focuses on the tasking model because it offers the flexibility to tackle the parallelization of algorithms with load imbalance, recursiveness and uncountable loop based kernels. Additionally, current works have proved the time-predictability of this model, shortening the distance towards its introduction in safety-critical domains. To enable the analysis of applications using the OpenMP tasking model, the first contribution of this thesis is the extension of a set of classic compiler techniques with support for OpenMP. As a basis for including reliability mechanisms, the second contribution consists of the development of a series of algorithms to statically detect situations involving OpenMP tasks, which may lead to a loss of performance, non-deterministic results or run-time failures. A well-known problem of parallel processing related to compilers is the static scheduling of a program represented by a directed graph. Although the literature is extensive in static scheduling techniques, the work related to the generation of the task graph at compile-time is very scant. Compilers are limited by the knowledge they can extract, which depends on the application and the programming model. The third contribution of this thesis is the generation of a predicated task dependency graph for OpenMP that can be interpreted by the runtime in such a way that the cost of solving dependences is reduced to the minimum. With the previous contributions as a basis for determining the functional safety of OpenMP, the final contribution of this thesis is the adaptation of OpenMP to the safety-critical domain considering two directions: 1) indicating how OpenMP can be safely used in such a domain, and 2) integrating OpenMP into Ada, a language widely used in the safety-critical domain.Actualment, aplicacions de dominis diversos com la computaci贸 d'altes prestacions i els sistemes d'alta integritat, requereixen nivells de rendiment assolibles nom茅s mitjan莽ant arquitectures heterog猫nies sofisticades. No obstant, la natura complexa d'aquestes dificulta la producci贸 de codi eficient en un temps i cost acceptables. A m茅s, la necessitat d鈥檈xplotar paral路lelisme introdueix complicacions en s铆 mateixa (p. ex. bloqueig mutu, condicions de carrera,...). En aquest context, l'an脿lisi de compiladors 茅s fonamental per optimitzar programes paral路lels. Existeix per貌 un equilibri entre complexitat i beneficis: la informaci贸 obtinguda amb an脿lisis simples (p. ex. definicions abastables) pot ser insuficient per moltes transformacions rellevants, i an脿lisis complexos basats en models matem脿tics (p. ex. model poli猫dric) faciliten resultats acurats a un alt cost computacional. Existeixen molts models de programaci贸 paral路lela que proporcionen diferents nivells de programabilitat, rendiment i portabilitat per l'explotaci贸 de les arquitectures actuals. En aquest marc, OpenMP ha demostrat molts avantatges respecte dels seus competidors: 1) el seu nivell de rendiment 茅s comparable a models molt ajustables com CUDA i MPI, i proporciona m茅s robustesa que llibreries de baix nivell com Pthreads; 2) les extensions que inclou la darrera especificaci贸 satisfan les caracter铆stiques de les actuals arquitectures heterog猫nies (茅s a dir, l鈥檃coblament d鈥檜n processador principal i un o m茅s acceleradors, i la capacitat d'expressar paral路lelisme de tasques de gra fi, ja sigui estructurat o sense estructura; 3) OpenMP 茅s 脿mpliament implementat per venedors de xips (p. ex. Kalray MPPA, Intel) i compiladors (p. ex. GNU, Intel); i 4) tot i que el model actual manca de mecanismes de resili猫ncia i fiabilitat, molts treballs, incloent aquesta tesi, busquen la seva introducci贸 a l'especificaci贸. Aquesta tesi adre莽a l'estudi de t猫cniques d鈥檃n脿lisi de compiladors amb dos objectius: 1) millorar la programabilitat i la fiabilitat de OpenMP, i 2) provar que OpenMP 茅s un model adequat per explotar paral路lelisme en sistemes cr铆tics. En particular, la tesi es centra en el model de tasques per qu猫 aquest ofereix la flexibilitat per abordar aplicacions amb problemes de balanceig de c脿rrega, recursivitat i bucles incomptables. A m茅s, treballs recents han provat la predictibilitat en q眉esti贸 de temps del model, escur莽ant la dist脿ncia cap a la seva introducci贸 en sistemes cr铆tics. Per a poder analitzar aplicacions que utilitzen el model de tasques d鈥橭penMP, la primera contribuci贸 d鈥檃questa tesi consisteix en l鈥檈xtensi贸 d'un conjunt de t猫cniques cl脿ssiques de compilaci贸 per suportar OpenMP. Com a base per incloure mecanismes de fiabilitat, la segona contribuci贸 consisteix en el desenvolupament duna s猫rie d'algorismes per detectar de forma est脿tica situacions que involucren tasques d鈥橭penMP, i que poden conduir a una p猫rdua de rendiment, resultats no deterministes, o fallades en temps d鈥檈xecuci贸. Un problema ben conegut del processament paral路lel relacionat amb els compiladors 茅s la planificaci贸 est脿tica d鈥檜n programa representat mitjan莽ant un graf dirigit. Tot i que la literatura sobre planificaci贸 est脿tica 茅s extensa, aquella relacionada amb la generaci贸 del graf en temps de compilaci贸 茅s molt escassa. Els compiladors estan limitats pel coneixement que poden extreure, que dep猫n de l鈥檃plicaci贸 i del model de programaci贸. La tercera contribuci贸 de la tesi 茅s la generaci贸 d鈥檜n graf de depend猫ncies enriquit que pot ser interpretat pel sistema en temps d鈥檈xecuci贸 de manera que el cost de resoldre les depend猫ncies sigui m铆nim. Amb les anteriors contribucions com a base per a determinar la seguretat funcional de OpenMP, la darrera contribuci贸 de la tesi consisteix en adaptar OpenMP a sistemes cr铆tics, explorant dues direccions: 1) indicar com OpenMP es pot utilitzar de forma segura en un domini com, i 2) integrar OpenMP en Ada, un llenguatge molt utilitzat en el domini de seguretat.Postprint (published version

    Management of concurrency in a reliable object-oriented computing system

    Get PDF
    PhD ThesisModern computing systems support concurrency as a means of increasing the performance of the system. However, the potential for increased performance is not without its problems. For example, lost updates and inconsistent retrieval are but two of the possible consequences of unconstrained concurrency. Many concurrency control techniques have been designed to combat these problems; this thesis considers the applicability of some of these techniques in the context of a reliable object-oriented system supporting atomic actions. The object-oriented programming paradigm is one approach to handling the inherent complexity of modern computer programs. By modeling entities from the real world as objects which have well-defined interfaces, the interactions in the system can be carefully controlled. By structuring sequences of such interactions as atomic actions, then the consistency of the system is assured. Objects are encapsulated entities such that their internal representation is not externally visible. This thesis postulates that this encapsulation should also include the capability for an object to be responsible for its own concurrency control. Given this latter assumption, this thesis explores the means by which the property of type-inheritance possessed by object-oriented languages can be exploited to allow programmers to explicitly control the level of concurrency an object supports. In particular, a object-oriented concurrency controller based upon the technique of two-phase locking is described and implemented using type-inheritance. The thesis also shows how this inheritance-based approach is highly flexible such that the basic concurrency control capabilities can be adopted unchanged or overridden with more type-specific concurrency control if requiredUK Science and Engineering Research Council, Serc/Alve

    State-of-the-art Assessment For Simulated Forces

    Get PDF
    Summary of the review of the state of the art in simulated forces conducted to support the research objectives of Research and Development for Intelligent Simulated Forces

    A Foundation for Development of Programming Languages for Real-Time Systems

    Get PDF
    Applications of real-time systems have grown considerably in both diversity and popularity, and the demand for real-time software has never been higher. In contrast, the choice of programming languages used to develop these systems has mostly remained limited to decades-old languages, namely Ada and C/C++, and more recently real-time Java. We postulate that the main reason for this mono-culture is the difficulty of developing new programming languages for real-time systems, due to their strict correctness requirements. Wang et al. argue that implementing even general-purpose languages is not easy, and is the source of many problems in today's languages. They propose the Micro Virtual Machine as a minimal abstraction layer to relieve the challenges of implementing a managed language, and design a micro VM specification named Mu. Compared to conventional language VMs, a micro VM is minimal and low-level. This makes micro VM an appealing idea towards creating a platform for development of programming languages for real-time systems, as it allows supporting a wide range of languages, aligned with the huge diversity of real-time systems. It also makes correct implementation and formal verification of the platform easier, which is vital for many real-time systems. Prior to this thesis, the only concrete micro VM specification was [Mu, 2018]. However,Mu is not designed for real-time systems and lacks some of the essential features. My thesis is that a real-time-enabled micro virtual machine is capable of providing an efficient and usable foundation for development of program-ming languages, suitable for building real-time software. The first high-level contribution of this thesis is the design of RTMu, a micro VM instance aiming at programming languages for real-time systems. We build on the Mu specification and propose a set of modifications to its abstractions over concurrency and memory management to make it suitable for real-time systems. The second contribution is the affirmation of the implementability of the RTMu's abstractions. For this purpose, we build a high-performance implementation of the RTMu specification, based-on a high-performance implementation of Mu. The third contribution is the design of a real-time extension to RPython, to make it a fully-featured language for real-time systems, named RT-RPython. We implement RT-RPython on top of RTMu and evaluate its performance through the CollisionDetection benchmark suite. This thesis is a proof of concept for establishing the use of micro VMs to build new high-quality programming languages for real-time systems. It also provides empirical demonstration of performance and predictability for micro VMs in the real-time domain. We believe that RTMu can help in tackling the current lack of diversity in programming languages for real-time systems

    Reference Model for Interoperability of Autonomous Systems

    Get PDF
    This thesis proposes a reference model to describe the components of an Un-manned Air, Ground, Surface, or Underwater System (UxS), and the use of a single Interoperability Building Block to command, control, and get feedback from such vehicles. The importance and advantages of such a reference model, with a standard nomenclature and taxonomy, is shown. We overview the concepts of interoperability and some efforts to achieve common refer-ence models in other areas. We then present an overview of existing un-manned systems, their history, characteristics, classification, and missions. The concept of Interoperability Building Blocks (IBB) is introduced to describe standards, protocols, data models, and frameworks, and a large set of these are analyzed. A new and powerful reference model for UxS, named RAMP, is proposed, that describes the various components that a UxS may have. It is a hierarchical model with four levels, that describes the vehicle components, the datalink, and the ground segment. The reference model is validated by showing how it can be applied in various projects the author worked on. An example is given on how a single standard was capable of controlling a set of heterogeneous UAVs, USVs, and UGVs
    corecore