| 1 | % vim:set spell: |
|---|
| 2 | % vim:spell spelllang=en: |
|---|
| 3 | |
|---|
| 4 | \begin{taskinfo} |
|---|
| 5 | \let\BULL\leader |
|---|
| 6 | \let\UPMC\enable |
|---|
| 7 | \let\TIMA\enable |
|---|
| 8 | \let\THALES\enable |
|---|
| 9 | \let\XILINX\enable |
|---|
| 10 | \end{taskinfo} |
|---|
| 11 | % |
|---|
| 12 | \begin{objectif} |
|---|
| 13 | This task deals with the COACH HPC feature that consists in accelerating an existing |
|---|
| 14 | application running on a PC by migrating critical parts into a SoC implemented on an |
|---|
| 15 | FPGA plugged to the PC PCI/X bus (figures~\ref{coach-flow} and \ref{archi-hpc}). |
|---|
| 16 | It consists in: |
|---|
| 17 | \begin{itemize} |
|---|
| 18 | \item Specification and implementation of the communication schemes between the software part running on the PC and the |
|---|
| 19 | FPGA-SoC. |
|---|
| 20 | \item Providing a performance analysis tool helping user in the HPC partitionning (figure~\ref{archi-hpc}). |
|---|
| 21 | \item Providing support for configuration of the FPGA in order to set up the HPC environement. |
|---|
| 22 | \end{itemize} |
|---|
| 23 | |
|---|
| 24 | The low level hardware transmission support will be the PCI/X bus which allows high bit-rate |
|---|
| 25 | transfers. The reasons of this choice are that both \altera and \xilinx provide PCI/X IP for |
|---|
| 26 | their FPGA and that GPU HPC softwares use also it. |
|---|
| 27 | %This will allow us at least to be inspired by GPU communication schemes and may be to reuse |
|---|
| 28 | %parts of the GPU softwares. |
|---|
| 29 | |
|---|
| 30 | \end{objectif} |
|---|
| 31 | % |
|---|
| 32 | \begin{workpackage} |
|---|
| 33 | \subtask{Implementation of API between PC and FPGA-SoC} |
|---|
| 34 | \begin{livrable} |
|---|
| 35 | \itemL{0}{6}{d}{\Sbull}{HPC communication API}{3:0:0} |
|---|
| 36 | \setMacroInAuxFile{hpcCommApi} |
|---|
| 37 | Specification describing the API. |
|---|
| 38 | \itemL{6}{12}{x}{\Supmc}{HPC partionning helper}{1:0:0} |
|---|
| 39 | \setMacroInAuxFile{hpcCommHelper} |
|---|
| 40 | A library implementing the communication API defined in the {\hpcCommApi} deliverable. |
|---|
| 41 | This library is dedicated to help the end-user to partition an application for HPC. |
|---|
| 42 | \itemL{12}{21}{x}{\Supmc}{HPC API for Linux PC}{0:2.5:0} |
|---|
| 43 | \setMacroInAuxFile{hpcCommLinux} |
|---|
| 44 | The PC part of the HPC communication API that communicates with the FPGA-SOC, a |
|---|
| 45 | library and a LINUX module. |
|---|
| 46 | % \itemL{12}{21}{x}{\Supmc}{HPC API for MUTEKH OS}{0:2.5:0} |
|---|
| 47 | % \setMacroInAuxFile{hpcMutekDriver} |
|---|
| 48 | % The FPGA-SoC part of the communication API, a driver. |
|---|
| 49 | \itemL{21}{24}{x}{\Stima}{HPC API for DNA OS}{0:3:0} |
|---|
| 50 | \setMacroInAuxFile{hpcDnaDriver} |
|---|
| 51 | The FPGA-SoC part of the communication API. |
|---|
| 52 | % Port of the {\hpcMutekDriver} driver on the DNA OS. |
|---|
| 53 | % \itemL{24}{33}{x}{\Supmc}{HPC API}{0:0:1} |
|---|
| 54 | % Bug corrections and enhancements of communication middleware |
|---|
| 55 | % (\novers{\hpcCommApi}, \novers{\hpcCommHelper}, \novers{\hpcCommLinux}, |
|---|
| 56 | % \novers{\hpcMutekDriver}, \novers{\hpcDnaDriver}). |
|---|
| 57 | \end{livrable} |
|---|
| 58 | |
|---|
| 59 | \subtask{SystemC model of the PCI/X} |
|---|
| 60 | This \ST deals with the implementation of SystemC modules |
|---|
| 61 | required by the neutral architectural template for using the PCI/X IP of \altera and \xilinx. |
|---|
| 62 | \begin{livrable} |
|---|
| 63 | % FIXME: moved to task 3 (CSG) |
|---|
| 64 | % \itemL{9}{18}{h}{\Stima}{HPC hardware \xilinx}{3:9:0} |
|---|
| 65 | % \setMacroInAuxFile{hpcPlbBridge} |
|---|
| 66 | % The synthesizable VHDL description of a PLB/VCI bridge and its corresponding SystemC model. |
|---|
| 67 | % \itemL{9}{18}{h}{\Supmc}{HPC hardware \altera}{1:2:0} |
|---|
| 68 | % \setMacroInAuxFile{hpcAvalonBridge} |
|---|
| 69 | % The synthesizable VHDL description of an AVALON/VCI bridge and its corresponding SystemC model. |
|---|
| 70 | \itemL{9}{24}{h}{\Supmc}{PCI/X traffic generator}{1:1:0} |
|---|
| 71 | The SystemC description of a component that generates PCI/X traffic. It is |
|---|
| 72 | required to prototype FPGA-SoC dedicated to HPC. |
|---|
| 73 | \end{livrable} |
|---|
| 74 | |
|---|
| 75 | \subtask{HPC environment set up} |
|---|
| 76 | |
|---|
| 77 | % It also includes appropriate SoC-FPGA OS drivers and a modification of the profiling library. |
|---|
| 78 | \begin{livrable} |
|---|
| 79 | \itemL{24}{36}{x}{\Stima}{Support for HPC environment set up}{0:0:2} |
|---|
| 80 | Modification of the CSG software to set-up the HPC environement: Bitsream loader. |
|---|
| 81 | \end{livrable} |
|---|
| 82 | % \itemL{18}{36}{x}{\Stima}{CSG module for \ganttlf dynamic reconfiguration}{0:4:12} |
|---|
| 83 | % This livrable is a CSG module allowing to partition the task graph along |
|---|
| 84 | % the dynamic partial reconfiguration regions. The resulting task-region assignement |
|---|
| 85 | % is directly used for generation of bitstreams. The module also produces reconfiguration |
|---|
| 86 | % management software to be run on the SoC-FPGA. |
|---|
| 87 | % \itemL{18}{30}{x}{\Stima}{Dynamic reconfiguration \ganttlf for DNA drivers}{0:3:3} |
|---|
| 88 | % \setMacroInAuxFile{hpcDynconfDriver} |
|---|
| 89 | % The drivers required by the DNA OS in order to manage dynamic partial |
|---|
| 90 | % reconfiguration inside the SoC-FPGA. |
|---|
| 91 | % \itemL{30}{36}{x}{\Supmc}{Dynamic reconfiguration \ganttlf for MUTEKH drivers}{0:0:1} |
|---|
| 92 | % Port of the {\hpcDynconfDriver} drivers on the MUTEKH OS. |
|---|
| 93 | % \itemL{24}{36}{x}{\Stima}{Profiler for \ganttlf dynamic reconfiguration}{0:0:6} |
|---|
| 94 | % Extension of the HPC partionning helper in order to integrate dynamic partial |
|---|
| 95 | % reconfiguration dedicated features (reconfiguration time of regions, variable |
|---|
| 96 | % number of coprocessors). |
|---|
| 97 | % \itemL{24}{36}{d}{\Sxilinx}{Optimisation for \xilinx \ganttlf dynamic reconfiguration}{0:0:2} |
|---|
| 98 | % \xilinx will work with \tima in order to better take into account during |
|---|
| 99 | % partitioning decisions specific constraints due to partial reconfiguration process. |
|---|
| 100 | % The deliverable is a document describing the \xilinx specific constraints. |
|---|
| 101 | % \end{livrable} |
|---|
| 102 | % %\item This \ST is the delivery of 2 PCI/X \mustbecompleted{FIXME: Stratix4} FPGA board |
|---|
| 103 | % % with its PCI/X IP. These boards are dedicated to the COACH HPC development. |
|---|
| 104 | % % They are based on \mustbecompleted{FIXME:stratix4} FPGA device of 400,000 LUT. |
|---|
| 105 | % % \begin{livrable} |
|---|
| 106 | % % \itemL{0}{6}{m}{\Saltera}{HPC development boards}{0:0:0} Two PCI/X FPGA boards. |
|---|
| 107 | \end{workpackage} |
|---|