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