--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
NVIDIA CUDA Software Development Kit (CUDA SDK)
Release Notes
Version 0.8 beta for Linux
15 February 2007
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
TABLE OF CONTENTS
--------------------------------------------------------------------------------
I.   Quick Start Installation Instructions
II.  Detailed Installation Instructions
III. Creating Your Own CUDA Program
IV.  Cuda On Linux Distributions Other Than RedHat 4 Update 3
V.   Known Issues
VI.  Frequently Asked Questions
VII. Change Log
--------------------------------------------------------------------------------


Please, also refer to the release notes of version 0.8 beta of CUDA, installed 
by the CUDA installer (cuda-linux-rel-*.run).

****IMPORTANT****

NVIDIA CUDA is currently only supported on Red Hat Enterprise Linux 4 update 3.
(RHEL 4 update 3).  Use NVIDIA CUDA on other Linux operating system versions 
at your own risk.

This release of the CUDA SDK has only been tested with Linux display driver 
version 1.0-9751.  Earlier versions are unsupported.

--------------------------------------------------------------------------------
I. Quick Start Instructions
--------------------------------------------------------------------------------

For more detailed instructions, see section II below.

0. a. Install the NVIDIA Linux display driver by executing the file
      NVIDIA-Linux-*-pkg1.run
   b. Extract the CUDA Toolkit Installer and SDK tarball

        tar xzf cuda-linux-0.8-beta.tar.gz

1. Install version 0.8 of the NVIDIA CUDA Toolkit by executing the file
   cuda-linux-rel-0.8-*.run

   Add the CUDA binaries and lib path to your PATH and LD_LIBRARY_PATH 
   environment variables.

2. Install the NVIDIA CUDA SDK by executing the file 
   cuda-sdk-linux-0.8-beta-*.run

   The installer will prompt you to enter an installation path for the SDK or
   accept the default.  We will refer to the path you choose as 
   SDK_INSTALL_PATH.

3. Build the SDK project examples.  

	cd <SDK_INSTALL_PATH>
	make
    
4. Run the examples:
    
	cd <SDK_INSTALL_PATH>/bin/linux32/release
        matrixmul

   (or any of the other executables in that directory)

See the next section for more details on installing, building, and running
SDK samples.

--------------------------------------------------------------------------------
II. Detailed Installation Instructions
--------------------------------------------------------------------------------

This package includes two ".run" files. These are self-extracting archives that
decompress their contents to a temporary folder and then install the contents to
a path that you specify.  The two archives are:

cuda-linux-rel-*.run	      : NVIDIA CUDA Toolkit Installer
cuda-sdk-linux-0.8-beta-*.run : NVIDIA CUDA SDK Installer 

In addition, an NVIDIA Linux Display driver has been made available along with 
this package.  It is in another installer with a name like
NVIDIA-Linux-*-pkg1.run

To install the driver and the CUDA Toolkit and SDK, follow the following 
instructions.

0. Install the included NVIDIA Linux display driver by executing the file
   NVIDIA-Linux-*-pkg1.run

   Instructions for installing the display driver can be found here: 
   http://www.nvidia.com/object/linux_display_ia32_1.0-9746.html

   Note that these instructions are for version 1.0-9746, but they are valid for
   1.0-9748.

1. Install version 0.8 of the NVIDIA CUDA Toolkit by executing the file
   cuda-linux-rel-0.8-*.run

   To install, run the cuda-linux-rel-*.run script.  You will be prompted for
   the path to where you want to put the CUDA files. In the following we will 
   call this path <CUDA_INSTALL_PATH>. It is recommended that you run the 
   installer as root and use the default install path (/usr/local). 

   Make sure that you add the location of the CUDA binaries (such as nvcc) to 
   your PATH environment variable and the location of the CUDA libraries
   (such as libcuda.so) to your LD_LIBRARY_PATH.

   In the bash shell, one way to do this is to add the following lines to the 
   file .bash_profile in your home directory. 
        
	PATH=$PATH:<CUDA_INSTALL_PATH>/bin
        LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<CUDA_INSTALL_PATH>/lib
        export PATH
        export LD_LIBRARY_PATH
 
2. Install the NVIDIA CUDA SDK by executing the file 
   cuda-sdk-linux-0.8-beta-*.run

   To install, run the cuda-sdk-linux-0.8-beta-*.run script.  You will 
   be prompted for the path to where you want to put the CUDA SDK.  You can 
   regard the CUDA SDK as user code (it is a set of examples), and therefore
   the default installation is in the current user's home directory 
   (~/NVIDIA_CUDA_SDK). You must either accept the default or specify a path
   to which the user has write permissions. 

   We will refer to the path you choose as SDK_INSTALL_PATH below.

3. Build the SDK project examples.  
    a. Go to <SDK_INSTALL_PATH> ("cd <SDK_INSTALL_PATH>")
    b. Build:
        - release    configuration by typing "make".
        - debug      confiIII. Known Issuesguration by typing "make dbg=1".
        - emurelease configuration by typing "make emu=1".
        - emudebug   configuration by typing "make emu=1 dbg=1".

    Running make at the top level first builds libcutil, a utility library used
    by the SDK examples (libcutil is simply for convenience -- it is not a part
    of CUDA and is not required for your own CUDA programs).  Make then builds
    each of the projects in the SDK.  

    NOTES:
    - The release and debug configurations require a GeForce 8800 Series GPU 
      (or equivalent G8X-based Quadro GPU) to run properly.
    - The emurelease and emudebug configurations run in device emulation mode, 
      and therefore do not require a G8X-based GPU to run properly.
    - You can build an individual sample by typing "make" 
      (or "make emu=1", etc.) in that sample's project directory. For example:

        cd <SDK_INSTALL_PATH>/projects/matrixmul
        make emu=1

      And then execute the sample with:
        <SDK_INSTALL_PATH>/bin/linux32/emurelease/matrixmul

    - To build just libcutil, type "make" (or "make dbg=1") in the "common" 
      subdirectory:

        cd <SDK_INSTALL_PATH>/common
        make

4. Run the examples from the release, debug, emurelease, or emudebug 
   directories located in /bin/linux32/[release|debug|emurelease|emudebug].


--------------------------------------------------------------------------------
III. Creating Your Own CUDA Program
--------------------------------------------------------------------------------

Creating a new CUDA Program using the NVIDIA CUDA SDK infrastructure is easy.
We have provided a "template" project that you can copy and modify to suit your
needs. Just follow these steps:

1. Copy the template project

        cd <SDK_INSTALL_PATH>/projects
        cp -r template <myproject>

2. Edit the filenames of the project to suit your needs

        mv template.cu myproject.cu
        mv template_kernel.cu myproject_kernel.cu
	mv template_gold.cpp myproject_gold.cpp

3. Edit the Makefile and source files.  Just search and replace all occurences 
   of "template" with "myproject".

4. Build the project

        make

   You can build a debug version with "make dbg=1", an emulation version with 
   "make emu=1", and a debug emulation with "make dbg=1 emu=1".

5. Run the program

        ../../bin/linux32/release/myproject

   (It should print "Test PASSED")

6. Now modify the code to perform the computation you require.  See the
   CUDA Programming Guide for details of programming in CUDA.


--------------------------------------------------------------------------------
IV. Cuda On Linux Distributions Other Than RedHat 4 Update 3
--------------------------------------------------------------------------------

For this alpha release of CUDA, NVIDIA only currently supports Redhat Enterprise
Linux 4 update 3. It may be possible to install NVIDIA CUDA on other Linux 
distributions.  However since this is untested and not supported yet, you do so 
at your own risk. 

CUDA and its libraries are compiled with gcc 3.4.5 and the same tools should be 
used on other distributions. Alternatively, compatibility packages containing 
libstdc++.so.6 may be used.  These are available for many Linux distributions. 
For example, on recent Fedora Core releases, the compat-libstdc++-34 is needed.

We have heard that CUDA works with default installations of Fedora Core 5 Linux,
but NVIDIA has not tested this and cannot provide support at this time.

Future versions of CUDA will have broader Linux support.


--------------------------------------------------------------------------------
V. Known Issues
--------------------------------------------------------------------------------

Note: Please see the CUDA Toolkit release notes for additional issues.

1. "ld: cannot find -lglut".  On some linux installations (notably default RHEL 
   4 update 3 installations), building the simpleGL example (and other examples 
   that use OpenGL) can result in a linking error like the following.

        /usr/bin/ld: cannot find -lglut

   Typically this is because the SDK makefiles look for libglut.so and not for
   variants of it (like libglut.so.3). To confirm this is the problem, simply 
   run the following command.

        ls /usr/lib | grep glut

   You should see the following (or similar) output.

    lrwxrwxrwx  1 root root     16 Jan  9 14:06 libglut.so.3 -> libglut.so.3.8.0
    -rwxr-xr-x  1 root root 164584 Aug 14  2004 libglut.so.3.8.0

   If you have libglut.so.3 in /usr/lib, simply run the following command 
   as root.

        ln -s /usr/lib/libglut.so.3 /usr/lib/libglut.so

   If you do NOT have libglut.so.3 then you can check whether the glut package
   is installed on your RHEL system with the following command.

        rpm -qa | grep glut

   You should see "freeglut-2.2.0-14" or similar in the output.  If not, you 
   or your system administrator should install the package "freeglut-2.2.0-14".
   Refer to the Red Hat and/or rpm documentation for instructions.

   If you have libglut.so.3 but you do not have write access to /usr/lib, you 
   can also fix the problem by creating the soft link in a directory to which 
   you have write permissions and then add that directory to the libarary 
   search path (-L) in the Makefile.
   
--------------------------------------------------------------------------------
VI. Frequently Asked Questions
--------------------------------------------------------------------------------

Note: Please see the CUDA Toolkit release notes for additional Frequently Asked
Questions.

--------------------------------------------------------------------------------
VII. Change Log
--------------------------------------------------------------------------------

Release 0.2 alpha 2
* First limited release (RHEL 3 update 4 only)
 
Release 0.8 beta prerelease 1
* Second limited release (RHEL 4 update 3 only)
* Several new samples, better release notes

Release 0.8 beta prerelease 2
* Linux CUDA SDK now uses a self extracting installer (.run)
* Linux CUDA SDK samples now build correctly if CUDA Toolkit is installed to a
  path other than /usr/local
* Added matrixmul_drv sample to Linux SDK
* Added CUBINFILES mode to project Makefiles
* simpleCUFFT and simpleCUBLAS samples now work in emulation mode (make emu=1).

Release 0.8 beta (First public release)
* No changes to SDK except to these notes.
