Hi, and welcome to this course on how to develop FPGA-accelerated cloud applications with SDAccel! I am Marco Santambrogio, Associate Professor at Politecnico di Milano and with Lorenzo Di Tucci I do have the pleasure of teaching you this class on “Developing FPGA-accelerated cloud applications with SDAccel”! This course is characterised by the fact that we are going to have few “hands-on” sessions. Today we are entering in a new era in which computing systems are no longer seen as monolithic, high performing, power angry, single core systems, an era in which reconfigurable device, such as FPGAs make it possible to have custom-designed high-density hardware in an electronic circuit, with the added bonus of having the possibility of changing it whenever there is the need, even while the whole application is still running. The more general purpose you are, the more flexible you are, the more kinds of programs and algorithms you are requested to execute on you underlying computing infrastructure and all of this is terrific, but there is no free food and this is happening, quite often, by loosing in efficiency. This course will present several scenarios where the workloads require more performance than can be obtained even by using the fastest CPUs. This scenario is turning cloud and data center architectures toward accelerated computing. Now, as far as it seems, within this context, the problem is being able to choose the right accelerator. And this is true because, there are several accelerators that can be used: examples are GPUs and FPGAs. On one hand, GPUs offer better parallel performance, more efficient computing and an easy to use programming model. On the other hand, FPGAs bring higher performance-per-watt, improved hardware acceleration performance, and lower inter-device latency. Moreover, when used in cloud infrastructures, the advantages introduced by extending these infrastructures with FPGAs technologies are even more clear. In the context of a cloud infrastructure FPGAs are essentially a systems-on-a-chip coupled with one or more host CPUs via a PCI Express connection. This scenario is basically turning the FPGA into a custom accelerator for the code running on the CPU. Now, this is extremely interesting and convenient because: - FPGA resource are ready to be used upon purchase and can be elastically scaled, - the ultra-large scale resource pool can meet the need for greater numbers of FPGA resources during the business peaks. - FPGAs are reconfigurable devices, therefore they can provide an ideal fit for the changing workloads of the modern data center. Now, considering all these advantages, why FPGAs have been only recently used in cloud infrastructure? It is because of the cost of doing FPGA engineering. FPGAs have been proven to be really effective, what was missing was a surrounding developing ecosystem, which is exactly where a significant portion of research is going right now! Within this course we are going to show you how to gain benefits by using Xilinx SDAccel to program Amazon EC2 F1 instances. We are going to do this through a working example of an algorithm used in computational biology. The huge amount of data they need to process and the complexity of these algorithms, raised the problem of increasing the amount of computational power needed to perform the computation. In this scenario, hardware accelerators revealed to be efficient in achieving a speed-up in the computation while, at the same time, saving power consumption. Among the algorithms used in computational biology, the Smith-Waterman algorithm is a dynamic programming algorithm, guaranteed to find the optimal local alignment between two strings that could be nucleotides or proteins. In the following classes we presented an analysis and successive FPGA-based hardware acceleration of the Smith-Waterman algorithm used to perform pairwise alignment of DNA sequences. This is exactly what this course is all about. This course is focusing on distributed, heterogeneous cloud infrastructures, providing you details on how to use Xilinx SDAccel, through working examples, to bring your solutions to life by using the Amazon EC2 F1 instances. This is it… so far! And once more, welcome to the “Developing FPGA-accelerated cloud applications with SDAccel” course!