Trends in hardware, the prevalence of the cloud, and the rise of highly demanding applications have ushered an era of specialization that quickly changes how data is processed at scale. These changes are likely to continue and accelerate in the next years as new technologies are adopted and deployed: smart NICs, smart storage, smart memory, disaggregated storage, disaggregated memory, specialized accelerators (GPUS, TPUs, FPGAs), and a wealth of ASICs specifically created to deal with computationally expensive tasks (e.g., cryptography or compression). In this tutorial, we focus on data processing on FPGAs, a technology that has received less attention than, e.g., TPUs or GPUs but that is, however, increasingly being deployed in the cloud for data processing tasks due to the architectural flexibility of FPGAs, along with their ability to process data at line rate, something not possible with other types of processors or accelerators. In the tutorial, we will cover what FPGAs are, their characteristics, their advantages and disadvantages, as well as examples from deployments in the industry and how they are used in various data processing tasks. We will introduce FPGA programming with high-level languages and describe hardware and software resources available to researchers. The tutorial includes case studies borrowed from research done in collaboration with companies that illustrate the potential of FPGAs in data processing and how software and hardware are evolving to take advantage of the possibilities offered by FPGAs. The use cases include: (1) approximated nearest neighbor search, which is relevant to databases and machine learning, (2) remote disaggregated memory, showing how the cloud architecture is evolving and demonstrating the potential for operator offloading and line rate data processing, and (3) recommendation system as an application with tight latency constraints.
翻译:硬件发展趋势、云计算的普及以及高需求应用的兴起,开启了一个快速改变大规模数据处理方式的专业化时代。随着智能网卡、智能存储、智能内存、分解式存储、分解式内存、专用加速器(GPU、TPU、FPGA)以及专为处理计算密集型任务(如密码学或压缩)而定制的大量ASIC等新技术的采用和部署,这些变化在未来几年可能会持续并加速。在本教程中,我们聚焦于FPGA上的数据处理——这一技术相较于TPU或GPU受到的关注较少,但由于FPGA在架构上的灵活性及其在线速下处理数据的能力(这是其他处理器或加速器无法实现的),它正越来越多地被部署在云端用于数据处理任务。我们将涵盖FPGA的定义、特性、优缺点,以及工业部署实例和它们如何应用于各种数据处理任务。我们将介绍使用高级语言进行FPGA编程的方法,并描述研究人员可用的硬件和软件资源。本教程包含从与公司合作的研究中借鉴的案例研究,这些案例展示了FPGA在数据处理中的潜力,以及软件和硬件如何发展以利用FPGA提供的可能性。使用案例包括:(1) 近似最近邻搜索(与数据库和机器学习相关),(2) 远程分解式内存(展示云架构的演变,并展示操作卸载和线速数据处理的潜力),以及(3) 作为具有严格延迟约束的应用的推荐系统。