--------------------------------------------
Concurrent Number Cruncher - 0.9Beta Release
--------------------------------------------


-----------------------
What is the CNC ?
-----------------------

  The CNC is a generic sparse matrix solver based on an efficient
  implementation on the GPU of BLAS operations. The implemented solver
  is a Jacobi-preconditionned conjugate gradient solver, hence designed
  to solve symetric definite positive matrices.


-----------------------
How to compile the CNC
-----------------------

  Open /CG-GPU/cg-gpu.vcproj and compile the whole project. You should
  have the CUDA API and CUDA SDK installed to build the project.
  The project is for MS Visual 2005. CUDA version should be equal
  or higher than 1.0.


-----------------------
How to test the CNC
-----------------------

  Go to /examples directory and run a bat file. The bat file specifies
  the file containing the linear system to be solved and the solving
  parameters (max number of iterations, tolerance). The compiled exe
  will be executed and will solve three times the specified linear system
  using CRS matrix storage, BCRS 2x2 matrix storage and finally BCRS 4x4
  matrix storage. The perfomances of the three methods will be provided
  through GFlops numbers.

  Provided examples come from CFD simulations and especially solve the
  pressure equation.


-----------------------
How to (re)use the CNC
-----------------------

  First include the cnc_gpu_solver.h where you want to use the CNC and
  add all related files to your project (don't forget the CUDA file:
  cnc_cuda_blas.cu file). Then, build a CNCSparseMatrix c++ object which
  is a generic dynamic sparse data structure and fill the right hand side
  vector of the linear system. At last, call our static function
  CNCGPUSolver::solve_cg() to solve your system. For a simple example,
  see function load_example() in the ExampleLoader class in the
  cnc_line_stream.h file.


-----------------------
GPU Minimum requirement
-----------------------

  See http://www.nvidia.com/object/cuda_learn_products.html for a list of
  CUDA enabled graphics cards. In case of troubles, try updating your
  graphics drivers.


-----------------------
Disclaimer
-----------------------

  This software is provided "as is" only for testing purpose without
  any warranty.


-----------------------
Contact
-----------------------

  Luc Buatois

    buatois@gocad.org

    ASGA-INPL Bt. G
    Rue du Doyen Marcel Roubault - BP 40
    54501 VANDOEUVRE LES NANCY
    - FRANCE -


-----------------------
Website
-----------------------

  www.loria.fr/~levy/


-----------------------
Licence and Copyright
-----------------------

  Copyright (C) 2008 GOCAD/ASGA, INRIA/ALICE

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

  If you modify this software, you should include a notice giving the
  name of the person performing the modification, the date of modification,
  and the reason for such modification.

  Note that the GNU General Public License does not permit incorporating
  the Software into proprietary programs. 


--------------------------------------------
--------------------------------------------
