Field Programmable Gate Arrays (FPGAs) have the potential to accelerate specific HPC codes. However even with the advent of High Level Synthesis (HLS), which enables FPGA programmers to write code in C or C++, programming such devices still requires considerable expertise. Much of this is due to the fact that these architectures are founded on dataflow rather than the Von Neumann abstraction of CPUs or GPUs. Thus programming FPGAs via imperative languages is not optimal and can result in very significant performance differences between the first and final versions of algorithms on dataflow architectures with the steps in between often not obvious and requiring considerable expertise. In this position paper we argue that languages built upon dataflow principals should be exploited to enable fast by construction codes for FPGAs, and this is akin to the programmer adopting the abstraction of developing a bespoke dataflow machine specialised for their application. It is our belief that much can be learnt from the generation of dataflow languages that gained popularity in the 1970s and 1980s around programming general purpose dataflow machines, and we introduce Lucent which is a modern derivative of Lucid, and used as a vehicle to explore this hypothesis. The idea behind Lucent is to provide high programmer productivity and performance for FPGAs by giving developers the most suitable language level abstractions. The focus of Lucent is very much to support the acceleration of HPC kernels, rather than the embedded electronics and circuit level, and we provide a brief overview of the language driven by examples.
翻译:外地可编程门阵列(FPGAs)有可能加速特定的 HPC 代码。 然而,即使高级合成(HLS)的出现,使FPGA程序程序员能够以C或C+++写入代码,编程这类设备仍然需要相当的专业知识。这在很大程度上是由于这些结构是建立在数据流而不是Von Neumann抽取CPU或GPU的数据流机器基础上的。因此,通过必备语言编程 FPGAs 程序不是最佳的,它可能造成数据流结构的第一版和最后版本之间在性能上的巨大差异,其步骤往往不明显,需要相当的专业知识。在本立场文件中,我们争辩说,应当利用数据流本位上建立的语言,以便快速通过FPGAs 的建筑代码来创建代码。这与程序员采用抽象的开发一个专门化的数据流机器不是最佳语言,因此我们认为,从数据流语言的生成中可以学到很多东西,而这种语言在1970年代和1980年代在编程通用数据流机器中越来越受欢迎,而我们向Lucent 提供了一种现代的快速的图像。