                          Seti@home Enhanced Cuda Multibeam V8
                                   February 5th, 2016

Applies to Berkeley distributed setiathome_8.00_???__cudaxx.exe, and
Third party distributed Lunatics_x41zi_???_cudaxx.exe

Contents:
      1) x41zi general notes
      2) Manual installation under BOINC anonymous platform (advanced users***)
      3) Optional configuration (advanced users***)
      4) Known issues
      5) Release history
      6) Obtaining source code
      7) Support
      8) Legal
      a) Example Configuration
---------------------------------------------------------------------------------
*** 'Advanced User', for the purposes of this document and the application it
describes, refers to a User familiar with manually configuring and operating the
BOINC Client to run under the 'Anonymous platform' mechanism, and/or, that
understands the purpose of custom configuration options, as applicable.
---------------------------------------------------------------------------------
1) x41zi general notes
        - This document is for the Windows versions of x41zi.
        - x41zi is compatible with both v7 and v8 SETI Multibeam specifications.
        - You may have obtained this Cuda application either as a standalone
          manual install package (intended for advanced users***), or as a stock application automatic download
          from the seti@home project. 
        - This application is intended to process seti@home multibeam v7 and v8
          tasks, on Cuda enabled nVidia Graphics Processing Units (GPUs)
        - This application is currently available in ??? 'flavours',
            - Cuda ??? (min driver ???* ),
            *In some cases there may be earlier Beta, day0 or day1, drivers available
             for the given Cuda revision or specific GPU release.
        - each executable uses the ???
--------------------------------------------------------------------------------
2) Manual installation under BOINC anonymous platform (advanced users***)
        - For standalone (non-installer) installation, the package archives
          contain example 'app_info.xml' file which are text files containing template
          information intended for advanced user*** manual installation.
        - These app_info.xml files can either be used as is and merged into a
          preexisting installer based optimised application, tailored before merge, or
          copy-pasted into an existing app_info.xml file making the usual
          configuration adjustments manually.
--------------------------------------------------------------------------------
3) Optional configuration (advanced users***)
        ???
--------------------------------------------------------------------------------
4) Known issues
        - Processing order induced overflow result mismatches, originate from
          original Cuda app designs, may be addressed in the future either by
          server side adjustment, and/or redesign in future builds. Technically
          & scientifically the result signals are 'correct', though a different
          subset of those contained in the task. 
        - an obscure race condition in the pulsefinding, that can result in the PoT
          array looking 'wrong' under certain conditions (originating from 6.08,
          6.09 & 6.10), this is rare, discovered only recently and can occur where
          there are closely spaced pulses. It's primary effect is a cosmetic one,
          resulting in the wrong pulsepot array data submitted to the server, which
          is expected to be displayed on NTPCKER online pages. This will be addressed
          in a future build.
   Tech Notes: 
        - Gaussian noscore logic, commented in code as being targeted at GPUs, though
          likely only effective to some degree on CPU. On Cuda devices this added
          logic/complexity is not a net win, due to those Kernels being memory bound
          (score calculations would have been hidden by memory accesses), while  the
          conditional logic is expensive. Cuda GaussFits process on a powerspectrum
          wide basis, though reduce reportables on a PoT basis like CPU. This picture
          might change in the future with redesigned result reductions, along with
          introduction of dynamic parallelism capabilities into the hardware &
          runtime/drivers.
---------------------------------------------------------------------------------
5) Release history (Windows Platform)
x41zi (public release to support setiathome v8 specification)
        - enhanced precision to match SETI@Home CPU applications.
        - baseline ruggedisation as preparation for custom optimisation to come.
        - initial Mac + Linux build support
x41zc (second public beta, updated for first public release)
        - Fixed a typo in the GPU side partial autocorrelation reductions, that
          would have caused skipping of peaks in the first non-zero delay bin.
        - Deactivated VRAM memory map printing.
x41zb (first public beta)
        - mbcuda.cfg distributed as zero length file, to play nicely with Boinc
          allowing user configuration, sample configuration now supplied in readme.
        - Synchronisation changes in drivers/compilers for Kepler (and possibly Fermi
          class to a lesser extent) require additional pulsefinding kernel synchronisation,
          esp with Cuda 3.2. (PTX JIT compilation was snuffing out implicit
          synchronisation that was necessary)
x41z (early beta)
        - increased configurability to include some performance & usability control
        - some minor boincapi customisations affecting performance on all Cuda GPUs
        - intended for supporting the full range of Cuda enabled GPUs, providing
          support for several Cuda revisions, including older variants for systems that
          cannot install newer drivers (e.g. certain Alienware gaming laptops), or
          encounter problems running newer driver architectures, such as GTX 200 series
          and earlier, reduced performance under Cuda 3.0 and above.
x41x (Prior closed beta) 
        - performance enhancements,
        - V7 readiness to beta 6.98 spec,
        - accuracy and triplet search improvement
        - Fermi & Kepler GPU performance scaling
x41g 
        - improved reliability
        - preliminary GPU cross-generation computation precision matching
x38g
        - improved cross GPU generation precision match, and preliminary optimisation experiments 
x32f         
        - Initial release based on setiathome_enhanced 6.09 sources,
        - Fermi GPU compatibility
--------------------------------------------------------------------------------
6) Obtaining source code
Source code is available in several ways
- via the Berkeley svn repository, 
  https://setisvn.ssl.berkeley.edu/trac/browser/branches/sah_v7_opt/Xbranch  
- By direct request to where you obtained this application, if a website will
  supply downloads there
- If obtained in a Lunatics installer, via download from http://lunatics.kwsn.info
----------------------------------------------------------------------------------
7) Support
- No specific support is prescribed, and please see all accompanying documentation
  for warnings & disclaimers etc.
- technical help can usually be obtained from seti@home Q&A and number crunching
  fora, as well as from Lunatics site, from the GPU Users Group website, or
  Arkayn's site 'Crunchers Anonymous' http://www.arkayn.us/forum/index.php
------------------------------------------------------------------------------------
8) Legal
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, specifically GNU General Public License, Version 2 or
later.


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, see <http://www.gnu.org/licenses/>.


Copyright (C) 2016 Jason Groothuis. All files, programs and similar contained herein are
distributed under the terms of the General Public License.
------------------------------------------------------------------------------------
