Hi! And welcome to this new class. During the last classes we gained some knowledge on how to implement our design on an FPGA by using Xilinx SDAccel and on how to optimize it to meet our requirements and performance. Today, this class is aimed at providing a global comprehension of the F1 development process. This is not meant to be a fully explanatory class covering all the necessary information, but it is more an introductory class to introduce you to the Amazon F1 instances. Each of the topics covered in this class will be expanded and covered in details in the Developing FPGA-accelerated cloud applications with SDAccel course. But first things first. Amazon F1 is an elastic cloud compute combining x86 CPUs and Xilinx FPGAs to create and run accelerated applications The FPGA serves as a high-performance acceleration compute resource to the x86 CPU. F1 instances come pre-loaded with all the necessary development tools to create optimized and programmed FPGAs. The F1 instances are easy to program and come with everything needed to develop, simulate, debug, and compile hardware accelerators. At the end of the day, programming and FPGA on an F1 instance means that we do have to create an Amazon FPGA Image (AFI), and we are going to see soon how to do it. If you are asking yourselves why you may want to use the AWS F1 Cloud Compute Platform, well the answer is quite simple, and it is because there are several benefits in using the AWS F1 instances: - By using the F1 instances you will make your FPGA accelerated applications available to a huge community of developers, and to millions of potential AWS end-users who will be able to tap into a broad marketplace of acceleration-ready apps. - Amazon is providing dedicated and large amounts of FPGA logic with elasticity to scale to multiple FPGAs. - You won't have to use your own machine to design and develop your system. - Amazon simplifies the development process by providing cloud-based FPGA development tools and the interesting thing is that this has not to be done on an F1 instance but on an Amazon EC2 instance. - Amazon provides a Marketplace for FPGA applications, giving more choice, secure and easy access to millions of AWS users. - Programming FPGAs, as we know, requires dedicated tools compilers and debuggers. Amazon simplifies the development process by providing cloud-based FPGA development tools effectively democratizing the FPGA programming process. Now, first of all, in order to be able of accessing and using Amazon F1 instances, you have to setup an AWS account or login if you already have one at aws.amazon.com Once logged in, we do have to start to develop our design to create the Amazon FPGA Image. The Amazon FPGA Image can be created by accessing the AWS Hardware Development Kit, which provides access to the necessary tools, scripts and files. The AWS EC2 FPGA Hardware and Software Development Kits, as the names are suggesting, include two parts: - The Development workflows for developing Amazon FPGA Image (AFI) with the Hardware Development Kit or the GUI workflow, which is allowing developers to work in a GUI mode using Vivado IP Integrator - and Software Development Kit for using AFIs on FPGA-enabled EC2 instances. Now, within this context we may be willing of using/accessing a pre installed instance with all the necessary tools, instead of having to install them ourselves... and this exactly what Amazon did by creating an FPGA Amazon Machine Image. The AMI is a sort of a golden instance, where FPGA development tools and run time tools required to develop and use custom FPGAs for hardware acceleration have been pre-installed. To build an Amazon FPGA Image we can start from RTL custom design, by using Verilog, or VHDL, by using the Amazon FPGA Hardware Design Kit. Once the AFI has been created we can than use the SDK which includes the runtime environment to manage the AFIs that are loaded to EC2 FPGA instance slots. Well, this is definitely one way of creating an AFI, but if you are not an expert FPGA developer, you may not be willing of going through the RTL custom design and in using Verilog or VHDL. That's exactly why the OpenCL development environment has been introduced to implement our design. It allows customers to use OpenCL with Amazon EC2 F1 FPGA Instances to accelerate their C/C++ applications. Software developers, with little to no FPGA experience, will find a familiar development experience and now can use the cloud-scale availability of FPGAs to supercharge their applications. And this is where Xilinx SDAccel, as we know, is finding its rationale. SDAccel is a fully integrated Eclipse-based environment for applications accelerated with Xilinx FPGAs, which is the case of the Amazon EC2 F1 instances. It leverages the OpenCL heterogeneous computing framework to offload compute intensive workloads, also known as kernels, that can be expressed in OpenCL, C or C++, to the FPGA. At this point you have all you need to start to work and you are in charge of choosing where to do it! Once logged into AWS, you may deploy the FPGA developer AMI on an Amazon EC2 instance, which comes with pre-installed Xilinx SDAccel and required licenses, and quickly provision the resources you need to write, simulate, and debug FPGA designs in the cloud. Logging into AWS and deploying the AMI on an Amazon EC2 instance is not the only solution. In fact, it is quite important to notice that it is not mandatory at all to have the Amazon FPGA Image creation to be executed on an EC2 instance. The AFI creation can also take place on-premises. Obviously, by doing this, the developers have to take care of all the licensing issues. Once an FPGA design is complete, it can be registered as an Amazon FPGA Image, and deployed to F1 instance in just a few clicks. If you were implementing the AFI by using an FPGA developer AMI, this task is quite easy because the prepackaged tool development environment included in the images comes with all the necessary scripts and tools for building and registering your Amazon FPGA Image. Now, having your Amazon FPGA Image deployed on an F1 instance means that you can execute your own accelerated application or that you can publish it on the AWS marketplace. This is quite an opportunity because you can share your work with others and by doing this you can also decide to sell your accelerated applications and to start a business thanks to the Amazon EC2 F1 instance. After this short introductory class on Amazon F1 instances, still, as an application developer, you may be interested in knowing if your domain is fitting the accelerated cloud scenario. This is definitely an interesting question, but within this class I'm just interested in saying that there are several compelling applications for cloud FPGA acceleration, some of them are: security, machine learning, image and video processing, genomics, like in the case of edico genome, financial analytics, as Maxeler Technologies is doing, big data analytics, as in the case of Ryft for accelerated analytics. So, as you can see, there is definitely room for finding an interesting application to be accelerated by using an FPGA-based Cloud Platform Interested in knowing more? Well, if so, I do really like to suggest you to have a look to the "Developing FPGA-accelerated cloud applications with SDAccel" course.