Heterogeneous computing is one of the most important computational solutions to meet rapidly increasing demands on system performance. It typically allows the main flow of applications to be executed on a CPU while the most computationally intensive tasks are assigned to one or more accelerators, such as GPUs and FPGAs. We have observed that the refactoring of systems for execution on such platforms is highly desired but also difficult to perform, mainly due the inherent increase in software complexity, and, in many cases, lack of expertise. After exploration, we have identified a current need for a systematic approach that supports engineers in the refactoring process -- from CPU-centric applications to software that is executed on heterogeneous platforms. In this paper, we introduce a decision framework that assists engineers in the task of refactoring software to incorporate heterogeneous platforms. It covers the software engineering lifecycle through five steps, consisting of questions to be answered in order to successfully address aspects that are relevant for the refactoring procedure. The framework has emerged as a result from discussions with multiple industrial partners that are at different levels of maturity in adopting heterogeneous computing. We evaluate the feasibility of the framework in two ways. First, we capture the practitioner's impressions, concerns and suggestions through a questionnaire. Then, we conduct a case study showing the step-by-step application of the framework using a computer vision application in the automotive domain. Finally, we discuss the role of the framework and its integration with a typical software engineering process.
翻译:电子计算是满足系统性能快速增长需求的最重要计算方法之一,它通常允许在CPU上执行应用程序的主要流动,而计算上最密集的任务则分配给一个或多个加速器,如GPUs和FPGAs。我们注意到,在这类平台上执行系统的重新设置非常可取,但也很难进行,主要是因为软件复杂性的内在增加,而且在许多情况下缺乏专门知识。在探索之后,我们发现目前需要一种系统的方法,支持重构过程中的工程师 -- -- 从以CPU为中心的领域应用程序到在不同平台上执行的软件。在本文件中,我们引入一个决定框架,协助工程师执行重构软件的任务,以纳入各种平台。我们通过五个步骤来涵盖软件工程生命周期,其中包括需要回答的问题,以便成功地解决与重构程序相关的方面。这个框架的出现是由于与多个工业伙伴的讨论,这些伙伴在采用不同成熟程度的计算过程中,从CPU中心域应用程序到不同程度的工程设计程序。我们用两种方法来评估框架的可行性,我们用一个过程来分析后期框架,我们用一个步骤来分析一个框架的印象,我们用两种方法来分析一个过程,通过一个步骤来分析一个框架的一体化。