  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.
