and fault-tolerance mechanisms do not support offloading computation onto other peers in the Fog since they do not consider the possibility of losing data values because of the unavailability of one peer.
• Title: Enabling GPU support for the COMPSs-Mobile framework [70]
Authors: F. Lordan, R. M. Badia and W. Hwu
Workshop: 4th Workshop on Accelerator Programming Using Directives (WACCPD) Workshop date: November, 2017
Workshop location: Denver, Colorado, United States of America
Proceedings:Accelerator Programming Using Directives. WACCPD 2017. Lecture Notes in Computer Science, vol. 10732, pp. 83-102
Editors: S. Chandrasekaranand G. Juckeland Publisher: Springer International Publishing Date of publication: January, 2018
DOI: 10.1007/978-3-319-74896-2_5
This article proposes an extension of the programming model that allows applications to benefit from GPUs and other accelerators embedded on the mobile device to improve their performance. For that purpose, developers have to implement the task as an OpenCL kernel and use a new annotation to let the runtime know of the implementation existence. The article describes all the necessary mechanisms so that the runtime manages the content of the device memory and submits the kernel executions transparently to the developer.
Pending for submission
• Title: Multi-objective Self-adaptation of Task-based Application Execution in Elastic Dis- tributed Computing Infrastructures
Authors: F. Lordan, P. Álvarez, J. Ejarque, R. Sirvent and R. M. Badia
This article will describe the system designed and implemented for scheduling task exe- cutions on the available resources and provisioning the necessary resources dynamically. The policies defined in the article take into account application-level information to achieve multiple objectives related to the timespan of the execution, its energy consumption and its economic cost. In practice, the policies try to minimize one of the three parameters while meeting boundaries for the other two parameters. For instance, the policies could try to minimize the energy consumption of the application while guaranteeing that the application ends in less than one hour and spends less than 3e.
1.4
Thesis Organization
After introducing the topic of the thesis and exposing the motivation behind it and its contribu- tions, this first part of the dissertation continues contextualizing the work and provides some
background information about Android in Chapter 2. Chapter 3 analyses the state of the art on programming models for parallel computing and, more specifically, for mobile cloud computing. The rest of the dissertation is divided into four parts. Part II, entitled General Proposal, explains the solution proposed to ease the development of applications through one single chapter (Chapter 4) describing the programming model and giving an overview of the runtime system that supports it.
In Parts III (“Exploitation of Local Computing Resources”, Chapters 5- 6) and IV (“Exploita- tion of Remote Computing Resources”, Chapters 7- 9) the dissertation delves into the exploitation of the available resources. On the one hand, the former details the mechanisms used for running tasks on the computational resources embedded on the mobile device. Chapter 5 describes how the runtime uses the cores of the CPU of the mobile device, while Chapter 6 discusses how the prototype benefits from the computing devices embedded on the mobile other than the CPU, such as GPUs, through OpenCL.
On the other hand, Part IV describes how the runtime exploits remote resources. Chapter 7 details the mechanisms to offload task, share data and tolerate network disruptions. Chapter 8 explains the securing of the network communications with mutual authentication and message integrity and secrecy by means of GSSAPI. Chapter 9 describes the system for scheduling tasks on the remote workers to allow the owner of the infrastructure to control the operational expenses of running tasks there.
Finally, the fifth and last part of the dissertation, entitled Conclusion, wraps up the disserta- tion with one single chapter that lays out the conclusions extracted from the presented work and introduces possible directions to continue the research.
C
H A P T E R2
BACKGROUND: A
NDROIDA
ndroid is an open-source platform designed primarily for touchscreen mobile devices that offers support at all levels of the software stack, from operating system functionalities to sample applications. Android was initially developed by Android, Inc., a company founded by Andy Rubin, Rich Miner, Nick Sears and Chris White to develop "smarter mobile devices that are more aware of its owner location and preferences". In July 2005, Google acquired Android, Inc. planning to enter the mobile phone market, and in November 2007 founded the Open Handset Alliance, a consortium along with other technology companies, with the goal to create open standards for mobile devices. Since then, the Open Handset Alliance has been the developer of the Android platform.2.1
Software Architecture
A user of an Android device sees the whole platform as a set of software application (apps) that enacts some functionalities through the mobile hardware device. Despite Android already provides some built-in applications implementing basic features like a phone dialer, an SMS client, a contacts manager, an email reader or a web browser; most of the applications are developed by third-party organizations that publish them on on-line Application stores, such as Google Play.
To ease the development of these applications, the platform offers the Application framework: a set of pre-installed blocks of software that are likely to be reused by various applications that manage the basic functions of the mobile. Thus, it reduces not only the complexity of the application code, but also their size by eliminating repetitive code. Some of the most important
blocks contained in this layer are:
• Package Manager: a database that keeps track of all the applications currently installed on the device and allows them to interact with each other
• Window Manager: manages the many windows that comprise an application: notification bar, main application window or any sub-window defined in it
• View System: contains common UI-related elements such as tabs, buttons, icons, text- boxes, labels, ...
• Resource Manager: manages all the non-source code entities that compose the applica- tion: text strings, images, media content, interface layouts, ...
• Package Manager: a database that keeps track of all the applications currently installed on the device and allows them to interact with each other
• Activity Manager: coordinates and supports the navigation across different screens of applications
• Content Providers: set of databases that allow applications to store and share structured data across applications
• Location Manager: provides applications with location and movement information ob- tained through GPS, sorrounding Wi-Fi networks or cell tower information
• Notification Manager: manages the information placed on the notification bar
• Telephony Manager: manages all voice phone calls
Developers often use operations that are hardware-specific or performance-sensitive: calls to the operating system, surface management, media reproduction, rendering of web (webkit) and graphics (OpenGL), database operations (SQLite), security (SSL), etc. For that purpose the Application framework leverages on a set of system libraries, usually written in C or C++, optimized for the harware capabilities of the device. These libraries, also known as native libraries, comprise the library layer of the software stack. The implementation/tuning of these high-performing libraries is responsibility of the mobile vendor and may not be included on all devices.
In addition to these system libraries, the layer also includes the Android Runtime (ART) [2], which supports the writting and execution of Android applications. Android applications are written in the Java programming language. This component of the framework contains a set of reusable Java building blocks that include the basic software implementations of data structures, concurrency mechanisms, file and network IO, applications lifecycle management, webservices interaction and testing. Although programmers code in Java, Android applications do not run