  After years of using Graphics Processing Units (GPUs) to accelerate
scientific applications in fields as varied as tomography, computer vision,
climate modeling, digital forensics, geospatial databases, particle physics,
radio astronomy, and localization microscopy, we noticed a number of technical,
socio-technical, and non-technical challenges that Research Software Engineers
(RSEs) may run into. While some of these challenges, such as managing different
programming languages within a project, or having to deal with different memory
spaces, are common to all software projects involving GPUs, others are more
typical of scientific software projects. Among these challenges we include
changing resolutions or scales, maintaining an application over time and making
it sustainable, and evaluating both the obtained results and the achieved
performance. %In this paper, we present the challenges and lessons learned from
research software engineering GPU applications.
