README for MemtestG80
Version 1.00
Imran Haque
20 Apr 2009

CONTENTS
1. Description
2. Basic Usage
3. Advanced Usage
4. FAQ
5. Licensing


1. DESCRIPTION

MemtestG80 is a program to test the memory and logic of NVIDIA CUDA-enabled
GPUs for errors. 

MemtestG80 is licensed under a closed-source license found in the COPYING
file included with this distribution. It can also be found by running
MemtestG80 with the --license flag, or at the end of this README.

An open-source version of MemtestG80 implementing the same memory tests as
the closed-source version is also available. However, certain functionality
is missing, such as the ability to transmit test results back to Stanford
to help gather statistics and improve the state of GPU computing. 

Up-to-date versions of both the closed- and open-source versions of MemtestG80
may be downloaded at https://simtk.org/home/memtest. The closed-source version
is available as precompiled binaries; the open-source version is available only
as a source package.

This document concerns the closed-source version.

2. BASIC USAGE

MemtestG80 is available for Windows, Linux, and Mac OS X-based machines. In the
following directions, please replace "MemtestG80" with the name of the program
included in the distribution for your operating system.

MemtestG80 is a command line application; to run it, start it from a command
prompt (Start->Run->cmd in Windows, Terminal.app in OS X). For basic operation,
just run it from the command prompt:

    MemtestG80

By default, MemtestG80 will test 128 megabytes of memory on your first video
card, running 50 iterations of its tests. On typical machines, each iteration
will complete in under 10 seconds with these parameters (the speed will vary
both with the speed of the card tested and the amount of memory tested). The
amount of memory tested and number of test iterations can be modified by adding
command line parameters as follows:

    MemtestG80 [amount of RAM in megabytes] [number of test iterations]

For example, to run MemtestG80 over 256 megabytes of RAM, with 100 test
iterations, execute the following command:
    
    MemtestG80 256 100

Be aware that not all of the memory on your video card can be tested, as part
of it is reserved for use by the operating system. If too large a test region
is specified, the program will print a warning and quit. Also, if the tested
GPU is currently driving a graphical desktop, the NVIDIA driver may impose time
limits on test execution such that tests over very large test regions will
time out. This can be easily recognized by seeing a number of test errors
larger than 4 billion, which go away when a smaller region is tested.

If you suspect that your graphics card is having issues (for example, it fails
running Folding@home work units), we strongly recommend that you test as large
a memory region as is practical, and run thousands of test iterations. In our
testing, we have found that even "problematic" cards may only fail sporadically
(e.g., once every 50,000 test iterations). Like other stress testing tools,
to properly verify stability MemtestG80 should be run for an extended period of
time.

3. ADVANCED USAGE

MemtestG80 supports the use of various command line flags to enable
advanced functionality. Flags may be issued in any order, and may precede
or follow the memory size and iteration count parameters (but the memory size
must always precede the iteration count).

To run MemtestG80 on a GPU other than the first, use the --gpu or -g flags,
passing the index of the GPU to test (starting at zero). For example, to run
MemtestG80 on the third GPU in a system:
    
    MemtestG80 --gpu 2

At the beginning of test execution, MemtestG80 issues a prompt to receive
consent to transmit the results of test data back to Stanford. No personally
identifying information is transmitted. To assist in automation, this answer
can be provided at the command prompt. To implicitly answer "yes" (that is, to
transmit results back), use the --forcecomm or -f options:
    
    MemtestG80 --forcecomm

To implicitly answer "no" (that is, to forbid the tester from communicating
with Stanford) use the --bancomm or -b options:

    MemtestG80 --bancomm

If transmitting data back to Stanford, the memory and core (non-shader) clock
speeds of the card are very useful data. The tester will normally prompt for
these. To provide them at the command line, use the --coreclock/-c and
--ramclock/-r options:

    MemtestG80 --forcecomm --ramclock 700 --coreclock 650

Finally, to display the license agreement for MemtestG80, provide the --license
or -l options:

    MemtestG80 -l

4. Frequently Asked Questions

    - I have an {ATI,NVIDIA 5/6/7-series} video card and it doesn't work!
        - Currently, only NVIDIA CUDA-enabled GPUs are supported. As of
          this writing, only the GeForce 8-, 9-, and GTX-series, the Quadro
          FX series, and the Tesla series of NVIDIA products support CUDA.

    - I have a CUDA-enabled card, but it still doesn't work!
        - You must have a CUDA-enabled graphics driver installed. See
          the Downloads section of http://nvidia.com/cuda to obtain a CUDA
          driver.
        
    - I get an error complaining about a missing "cudart.dll" on Windows!
        - This is a CUDA runtime file which we currently cannot redistribute
          with MemtestG80. However, a version of the file is bundled with the
          Folding@home GPU client; that file will work if copied into the 
          MemtestG80 runtime directory.

5. Licensing

Copyright 2009, Stanford University. All Rights Reserved.

Please carefully read the following terms and conditions before using this software. Use of this software indicates acceptance of this license agreement and disclaimer of all warranties.

Disclaimer of Warranty:

IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF STANFORD UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

STANFORD UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOTLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION PROVIDED HEREUNDER IS PROVIDED "AS IS". Folding@home HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

Restrictions:

You may use this software on a computer system only if you own the system or have the written permission of the owner.

You may not alter the software or associated data files. 

Certain builds of this software incorporate by linkage code from the libintl
and libiconv libraries, which are covered by the Library GNU Public License,
available at http://www.gnu.org/licenses/lgpl-3.0.txt.

