% vim:set spell:
% vim:spell spelllang=en:

\begin{taskinfo}
\let\BULL\leader
\let\UPMC\enable
\let\TIMA\enable
\let\XILINX\enable
\end{taskinfo}
%
\begin{objectif}
This task deals with the COACH HPC feature that consists in accelerating an existing
application running on a PC by migrating critical parts into a SoC implemented on an
FPGA plugged to the PC PCI/X bus (figures~\ref{coach-flow} and \ref{archi-hpc}).
It consists in:
\begin{itemize}
\item Specifying and implementing the communication schemes between the software
  part running on the PC and the FPGA-SoC.
\item Providing a performance analysis tool helping user in the HPC partitioning
  (figure~\ref{archi-hpc}).
\item Providing support for configuration of the FPGA in order to set up the HPC environment.
\end{itemize}
The low level hardware transmission support will be the PCI/X bus which allows high bit-rate
transfers. The reasons of this choice are that both \altera and \xilinx provide PCI/X IP for
their FPGA and that GPU HPC softwares use also it.
%This will allow us at least to be inspired by GPU communication schemes and may be to reuse
%parts of the GPU softwares.
\end{objectif}
%
\begin{workpackage}
  \subtask{Implementation of API between PC and FPGA-SoC}
    \begin{livrable}
      \itemL{0}{6}{d}{\Sbull}{HPC communication API}{3:0:0}
        \OtherPartner{0}{6}{\Supmc}{.5:0:0}
        \OtherPartner{0}{6}{\Stima}{.5:0:0}
        \setMacroInAuxFile{hpcCommApi}
        Specification of the API.
      \itemL{6}{12}{x}{\Supmc}{HPC partitioning helper}{1:0:0}
        \setMacroInAuxFile{hpcCommHelper}
        A library implementing the communication API defined in the {\hpcCommApi} deliverable.
        This library is dedicated to help the end-user to partition an application for HPC.
      \itemL{21}{27}{x}{\Stima}{HPC API for Linux}{0:2:1.5}
        \OtherPartner{21}{27}{\Supmc}{0:1.5:1.0}
        \OtherPartner{21}{27}{\Sbull}{0:0.5:0.5}
        \setMacroInAuxFile{hpcForLinux}
        This deliverable groups all the software components to implement the
        HPC communication API (\NOVERShpcCommApi).
        \Supmc will develop the Linux part (a C library and a LINUX module),
        \Stima will develop the FPGA-SoC part (a DNA driver),
        \Sbull will check this implementation on its demonstrator (\NOVERSbullAppSpecification).
    \end{livrable}
%
\subtask{SystemC model of the PCI/X}
    This \ST deals with the implementation of SystemC modules
    required by the neutral architectural template for using the PCI/X IP of \altera and \xilinx.
    \begin{livrable}
    \itemL{21}{27}{h}{\Supmc}{PCI/X traffic generator}{0:1:1}
        The SystemC description of a component that generates PCI/X traffic. It is
        required to prototype FPGA-SoC dedicated to HPC.
    \end{livrable}
%
\subtask{HPC environment set up}
% It also includes appropriate SoC-FPGA OS drivers and a modification of the profiling library.
     \begin{livrable}
     \itemL{18}{36}{x}{\Stima}{Support for HPC \ganttlf environment set up}{0:3:3}
      Modification of the CSG software to set-up the HPC environment.
      The objective is to run easily HPC application and the main features are:
      automatic calibration of coprocessors (\freqCalibrationVhdl), automatic download of
      SoC on FPGA (bitstream and application loader), starting the PC and FPGA
      part of the HPC application.
     \end{livrable}
%
\end{workpackage}
