3,425 research outputs found
Enabling GPU Support for the COMPSs-Mobile Framework
Using the GPUs embedded in mobile devices allows for increasing the performance of the applications running on them while reducing the energy consumption of their execution. This article presents a task-based solution for adaptative, collaborative heterogeneous computing on mobile cloud environments. To implement our proposal, we extend the COMPSs-Mobile framework – an implementation of the COMPSs programming model for building mobile applications that offload part of the computation to the Cloud – to support offloading computation to GPUs through OpenCL. To evaluate our solution, we subject the prototype to three benchmark applications representing different application patterns.This work is partially supported by the Joint-Laboratory on Extreme Scale Computing (JLESC), by the European Union through the Horizon 2020 research and innovation programme under contract 687584 (TANGO Project), by the Spanish Goverment (TIN2015-65316-P, BES-2013-067167, EEBB-2016-11272, SEV-2011-00067) and the Generalitat de Catalunya (2014-SGR-1051).Peer ReviewedPostprint (author's final draft
GORDA: an open architecture for database replication
Database replication has been a common feature in database management systems (DBMSs) for a long time. In particular, asynchronous or lazy propagation of updates provides a simple yet efficient way of increasing performance and data availability and is widely available across the DBMS product spectrum. High end systems additionally offer sophisticated conflict resolution and data propagation options as well as, synchronous replication based on distributed locking and two-phase commit protocols. This paper presents GORDA architecture and programming interface (GAPI), that enables different replication strategies to be implemented once and deployed in multiple DBMSs. This is achieved by proposing a reflective interface to transaction processing instead of relying on-client interfaces or ad-hoc server extensions. The proposed approach is thus cost-effective, in enabling reuse of replication protocols or components in multiple DBMSs, as well as potentially efficient, as it allows close coupling with DBMS internals.(undefined
Redefining a Process Engine as a Microservice Platform
In recent years, microservice architectures have emerged as
an agile approach for scalable web applications on cloud environments.
As each microservice is developed and deployed independently, they can
be developed in the platform and programming language that best suite
their purposes, using a simple communication protocol, as REST APIs
or asynchronous event-based collaborations, to compose them. In this
paper, we argue that process engines provide an excellent platform to
develop microservices whose business logic involves complex work flows
or processes so that a Business Process language can be used as high level language to develop these services and a process engine to execute
it. We identify the requirements for integrating a process engine in a
microservice architecture and we propose how the communication and
deployment in a microservice architecture can be handled by the process
engine.Ministerio de Economía y Competitividad TIN2015-70560-R (BELI)Junta de Andalucía P12-TIC-1867 (COPAS)Junta de Andalucía P10-TIC-590
A Survey of Asynchronous Programming Using Coroutines in the Internet of Things and Embedded Systems
Many Internet of Things and embedded projects are event-driven, and therefore
require asynchronous and concurrent programming. Current proposals for C++20
suggest that coroutines will have native language support. It is timely to
survey the current use of coroutines in embedded systems development. This
paper investigates existing research which uses or describes coroutines on
resource-constrained platforms. The existing research is analysed with regard
to: software platform, hardware platform and capacity; use cases and intended
benefits; and the application programming interface design used for coroutines.
A systematic mapping study was performed, to select studies published between
2007 and 2018 which contained original research into the application of
coroutines on resource-constrained platforms. An initial set of 566 candidate
papers were reduced to only 35 after filters were applied, revealing the
following taxonomy. The C & C++ programming languages were used by 22 studies
out of 35. As regards hardware, 16 studies used 8- or 16-bit processors while
13 used 32-bit processors. The four most common use cases were concurrency (17
papers), network communication (15), sensor readings (9) and data flow (7). The
leading intended benefits were code style and simplicity (12 papers),
scheduling (9) and efficiency (8). A wide variety of techniques have been used
to implement coroutines, including native macros, additional tool chain steps,
new language features and non-portable assembly language. We conclude that
there is widespread demand for coroutines on resource-constrained devices. Our
findings suggest that there is significant demand for a formalised, stable,
well-supported implementation of coroutines in C++, designed with consideration
of the special needs of resource-constrained devices, and further that such an
implementation would bring benefits specific to such devices.Comment: 22 pages, 8 figures, to be published in ACM Transactions on Embedded
Computing Systems (TECS
Behavioral types in programming languages
A recent trend in programming language research is to use behav- ioral type theory to ensure various correctness properties of large- scale, communication-intensive systems. Behavioral types encompass concepts such as interfaces, communication protocols, contracts, and choreography. The successful application of behavioral types requires a solid understanding of several practical aspects, from their represen- tation in a concrete programming language, to their integration with other programming constructs such as methods and functions, to de- sign and monitoring methodologies that take behaviors into account. This survey provides an overview of the state of the art of these aspects, which we summarize as the pragmatics of behavioral types
Virtual Machine Support for Many-Core Architectures: Decoupling Abstract from Concrete Concurrency Models
The upcoming many-core architectures require software developers to exploit
concurrency to utilize available computational power. Today's high-level
language virtual machines (VMs), which are a cornerstone of software
development, do not provide sufficient abstraction for concurrency concepts. We
analyze concrete and abstract concurrency models and identify the challenges
they impose for VMs. To provide sufficient concurrency support in VMs, we
propose to integrate concurrency operations into VM instruction sets.
Since there will always be VMs optimized for special purposes, our goal is to
develop a methodology to design instruction sets with concurrency support.
Therefore, we also propose a list of trade-offs that have to be investigated to
advise the design of such instruction sets.
As a first experiment, we implemented one instruction set extension for
shared memory and one for non-shared memory concurrency. From our experimental
results, we derived a list of requirements for a full-grown experimental
environment for further research
- …