HTTPS SSH
************************************************************************
                 _   _ _      _
                | | | | |    | |
   __ _  ___ ___| | | | |    | |
  / _` |/ __/ __| | | | |    | |
 | (_| | (_| (__| |_| | |____| |____
  \__,_|\___\___|\___/\_____/\_____/
                                     0.4alpha

http://cap.pcg.ull.es/en/accULL
http://accull.wordpress.com 

************************************************************************
                            Introduction
************************************************************************
accULL is the OpenACC implementation made at La Laguna University. accULL 
has a two layer structure consisting on a compiler (YaCF) and a runtime 
library (Frangollo).

YaCF , Yet another Compiler Framework, is a translator framework designed
code. Its components are independent from each other, and can be used in full 
source to source drivers or in small test transformations. Within YaCF we 
have included several classes, modules and packages to solve particular 
problems within Source-to-Source code code translations.

Frangollo acts as an interface between the user  (or an intelligent enough
compiler) and an abstract accelerator model that we call the Frangollo 
Platform Model. The library provides a programmer-friendly interface for 
the most common usage patterns of accelerators, and enables writting
platform-independent code. To which platform the model will be instantiated 
can be decided at runtime after exploring the available devices.
The Frangollo Platform Model is inspired by the OpenCL Programming Model.
Instead of focusing on the devices and their low level details, the Frangollo
Platform Model is a generic approach to the concept of accelerator, and 
adds some rules to handle memory coherence between the host and the 
device(s).
 
************************************************************************
                           Prerequisites (yacf)
************************************************************************
Python >= 2.7.x             : http://www.python.org/
Ply >= 3.3 (Python Lex-Yacc): http://www.dabeaz.com/ply/
Mako templates              : http://www.makotemplates.org/
lxml (optional)             : http://lxml.de/
Sphinx (optional)           : http://sphinx.pocoo.org/
SymPy 0.7.4.1 (optional)    : http://sympy.org/

Example of installation:

    $ pip install ply
    $ pip install mako
    $ pip install lxml
    $ pip install sphinx
    $ pip install sympy


************************************************************************
                           Prerequisites (frangollo)
************************************************************************
Autoconf (GNU) 2.69    : http://www.gnu.org/software/autoconf/
Automake (GNU) 1.13    : http://www.gnu.org/software/automake/
GCC-C++ 4.5.2          : http://gcc.gnu.org/

For NVIDIA platforms:
CUDA 5.0               : http://developer.nvidia.com/cuda/cuda-downloads
Need nvidia-opencl-dev package to include OpenCL support

For OpenCL platforms:
Intel OpenCL SDK       : http://software.intel.com/en-us/vcsource/tools/opencl-sdk


************************************************************************
                           How to install
************************************************************************

Read INSTALL file included with this package.

************************************************************************
                              Contents (yacf)
************************************************************************
   bin          All yacf drivers
   doc          yacf Documentation
   examples     Code examples (OpenACC, MPI, OpenMP) 
   MiddleEnd    Optimisations in the MiddleEnd of yacf
   tests        Test directory
   Frontend     yacf Frontends (OpenACC, OpenMP, C99) 
   Backed       yacf Backends  (Frangollo, CUDA, MPI, C99)


************************************************************************
                              Contents (frangollo)
************************************************************************

	doc        frangollo documentation
	examples   some frangollo examples (interface level and kernels)
	src        frangollo source code

************************************************************************
                   Documentation and links
************************************************************************

   Documentation is located at
       * http://llc.pcg.ull.es/
       * http://accull.wordpress.com  
       * http://yacf.googlecode.com/hg/yacf/doc/_build/html/index.html
       * https://bitbucket.org/ruyman/llcomp/downloads/YaCF-26-06-2013.pdf

       More documentation will be available soon.

   Repositories:
      * accULL repository           : https://bitbucket.org/ruyman/accull
      * Public Frangollo repository : https://bitbucket.org/ruyman/frangollo
      * Public YaCF repository      : https://bitbucket.org/ruyman/llcomp
      
   OpenACC:
      * http://www.openacc-standard.org/

************************************************************************
                             Known Issues
************************************************************************
- WARNING: In release 0.4alpha the support for reductions is not 
usable with OpenCL, since the improvements in Frangollo library are not
yet completed, but the CUDA support is fully functional.
- Using parameters of type double in some platforms may produce incorrect
results. In particular, using this release with the Mac OpenCL Framework
in the AMD GPU produces incorrect results in some tests. Use of the GPU 
in this circumstances is discourages. We are investigating the issue.

************************************************************************
                              Authors
************************************************************************

Ruymán Reyes       : rreyes@ull.es
Ivan López         : ilopezro@ull.es
Juan José Fumero   : jfumeroa@ull.es
Jose Lucas Grillo  : jlgrillo@ull.es
Francisco de Sande : fsande@ull.es