What is MatrixWarrior?

MatrixWarrior is an application that requires no programming. It can be used to:
Dashboard Dashboard Dashboard

MatrixWarrior is layered on FMSlib, the World's leading software library for solving large matrix algebra problems in production applications. FMSlib is highly optimized for each hardware configuration, keeping all components operating at maximum capacity throughout the entire computation. This provides an ideal test environment for measuring machine performance.

FMSlib uses Dashboard to display information on the hardware and application performance. Because Dashboard is incorporated into FMSlib, it is also part of the MatrixWarrior application. The chapter on Dashboard describes the reports that are generated and how you can select the information displayed.

FMSlib and Dashboard are libraries, which have been fully integrated into MatrixWarrior. All the features discussed in this manual for these libraries are available when running MatrixWarrior.

Where to get MatrixWarrior:

MatrixWarrior is available as a download from Multipath's website at www.fmslib.com.

MatrixWarrior is an application distributed as a single file, with all appropriate components of FMSlib and Dashboard included (statically linked in). Where optional libraries are required, they are dynamically loaded at runtime. If a library is missing, MatrixWarrior will run without using the features provided by the optional library. The same version of MatrixWarrior will run on systems with and without GPUs. If all required GPU hardware and software is detected at startup, GPUs will automatically be used (plug-and-play).

Which version of MatrixWarrior do I want:

Versions are available for Windows and Linux. Where appropriate, separate versions are provided for different CPU processor capabilities or NVIDIA software toolkit releases. As new hardware and software technology becomes available, it is incorporated into FMSlib. However, this technology may not be compatible with earlier hardware and software. Generally speaking, older versions of MatrixWarrior will run on newer machines but newer versions may not run on older machines.

How to run MatrixWarrior

Quick Start Option - Run MatrixWarrior

When you start MatrixWarrior, a help page is displayed on your WEB browser which contains brief instructions on running the program. You can preview it here. This is an excellent introduction to MatrixWarrior, FMSlib and Dashboard.

Detailed instructions:

When MatrixWarrior starts, it performs the following tasks: After this initialization phase, MatrixWarrior will ask you a series of questions. How you answer these questions will determine the problem that is run and the hardware that is used.

Each question ends with a default value enclosed in square brackets [default value]. To select the default value, type the Return or Enter key. If you do not want to accept the default value, you may enter a value of your choice. If MatrixWarrior determines that the value entered is invalid, the question is repeated.

When running MatrixWarrior as a batch job with an input data file that has a fixed sequence of answers, reasking a question will cause an input data file to become out-of-sync with the program. MatrixWarrior provides an option to stop the program with an error message if an invalid input value is encountered.

Following is the list of questions MatrixWarrior will ask and your choices for response.

1. MatrixWarrior Question (WEB page creation):

Do you want to open your browser to view them(y or n)[Y]?>

Your Response:

If you want to view the WEB pages on your local machine, select the default value [Y]. A new window will appear on your monitor. This is your WEB browser that will display the output of Dashboard. If you are running MatrixWarrior for a second time and your browser is already opened to a MatrixWarrior page, you can answer [N] and then enter Control-r to refresh your display.

2. MatrixWarrior Question (Matrix type):

Enter the type of matrix you want to solve (1 to 5)
1 = Real Symmetric
2 = Real Nonsymmetric
3 = Complex Hermitian
4 = Complex Symmetric
5 = Complex Nonsymmetric


Your Response:

You select the matrix symmetry and data type by entering the module number, 1 to 5. The default value of 5 will solve a nonsymmetric matrix with complex data.

Problem Types for [A]{X}={B}
Module Data Type Matrix Symmetry Storage
1 Real Symmetric X=1 X=1
2 Real Nonsymmetric 2X 2X
3 Complex Hermitian 2X 4X
4 Complex Symmetric 2X 4X
5 Complex Nonsymmetric 4X 8X
MatrixWarrior uses FMSlib to solve the linear system of equations [A]{X}={B}, where [A] is an NxN coefficient matrix, {B} is 1 or more known vectors and {X} are the solution vectors to be computed. MatrixWarrior can solve problems with the data types and matrix symmetry listed in the table

The amount of storage and computing required depend on the symmetry of the matrix and the data type. The table lists the storage and compute requirements, relative to a real symmetric matrix. Nonsymmetric matrices require twice the storage and processing time as Symmetric and Hermitian matrices. Problems with complex data type require twice the storage for the (real, imaginary) data pairs and four times the processing time than problems with real data.

FMS performs all computation with double-precision (64-bit) arithmetic. For complex data, a pair of (64-bit) values are used for the real and imaginary parts.

By default, MatrixWarrior reasks a question if an invalid answer is provided. While this works for interactive sessions, it will cause problems for batch jobs with a fixed input data file. By specifying a negative module number (in the range -1 to -5), MatrixWarrior will terminate with an error message, rather than repeating the question.

3. MatrixWarrior Question (Storage location):

Do you want to use disks(y or n)[N]?>

Your Response:

If you answer [N], by default, MatrixWarrior stores the data in memory. If you answer [Y], the data will be stored on disk.

A major benefit of FMSlib is the ability to store the data on disk. This allows the solution of significantly larger problems. For MatrixWarrior, this provides an opportunity to test your file system.

To use this feature you should create a directory on your file system where you want to store the data. You then set the environment variable FMSDISK to that directory name. During the solution, FMSlib will create files in the FMSDISK directory for storing the matrix data. At the end of MatrixWarrior, these files will be deleted.

FMSlib also contains a file striping system which allows multiple disks to be operated in parallel. This can provide a higher transfer rate and more capacity. A description of this feature is contained in the section on File Striping.

If you answer [Y] and have not created a directory and defined FMSDISK, MatrixWarrior will create directory C:/FMS/FMSDISK for you and store the data there.

4. MatrixWarrior Question (Problem size):

Enter the size of the matrix[value]>

Your Response:

Based on the problem type you selected in (2), MatrixWarrior computes the maximum problem size that that will fit in the storage you selected in (3). This computed maximum problem size becomes the default [value]. You may select this or enter a smaller value.

CAUTION: On a slow machine with a large disk, the maximum problem size can take a long time. When using disks, a value lower than the maximum problem size is usually specified.

5. MatrixWarrior Question (Solve for {X}):

Enter the number of solution vectors (0:value)[0]>

Your Response:

The solution proceeds in two steps: By default, a value of [0] is selected, which skips the vector solution process. The most numerically intensive part of the computation is matrix factoring, which provides the best test for most MatrixWarrior runs.

If you do not select the default of [0], MatrixWarrior computes the maximum number of solution vectors which will fit in the remaining storage and lists this in the [value] part of the question. You may select this value or enter a smaller value. When using disks, the same caution applies: selecting the maximum value may result in a long solution time.

If you plan to perform this solution phase, you should select a matrix size in step (4) that is less than the maximum so storage will be available for the solution vectors.

At the end of the test, MatrixWarrior computes the solution error by comparing the computed values in {X} with the known solution for this test problem data.

6. MatrixWarrior Question (FMS Parameters):

You may now alter any FMS Parameter.
When you are finished, type the letters RETURN

Your Response:

Here you can make additional selections on what problem is solved and what hardware is used. FMS contains an extensive list of Parameters which provide special matrix algebra features or alter the hardware that is used. The Using FMS Parameters section provides an introduction and the appendix FMS Parameters provides a complete list.

Adjusting Hardware
Parameter Default Description
MAXCPU All Number of CPU cores
MAXGPU All Number of GPUs
MEMPCT 50 Percent of memory
At startup, FMSlib computes default values, based on the hardware available. You can choose to use less than the maximum physically installed hardware by specifying a Parameter. The most popular hardware Parameters are listed in the table. For example if your system has 32 processing cores and you choose to test 16, you would specify MAXCPU=16 After you have entered all the Parameters, you enter RETURN to proceed with running the problem.

7. MatrixWarrior runs the problem.

8. MatrixWarrior Question (End the test?):

Do you want another solution(y or n)[N]?>

Your Response:

If you want to run another problem, enter [Y]. You will then return to question (2) where you may specify another problem to solve. If your testing is complete, select the default value of [N].

Notes on Dashboard

MatrixWarrior includes Dashboard, which displays the performance as WEB pages. You can control what reports Dashboard generates and how they are displayed with the Parameters listed in the table.

Controlling Report Generation
Parameter Default Description
IWATCH 99 Which reports are generated
A value of 115 will generate a movie.
NSUPD 5 sec. How frequently Dashboard updates the pages
NSREF 3 sec. How frequently the browser reloads the pages
IWATCH determines what reports get generated, NSUPD determines how often the WEB pages are updated and NSREF determines how often the WEB browser looks for updates.

The Performance page summarizes the results of the test, displaying a variety of information on the status of the run and how the hardware is performing. As new data becomes available, this page is updated. As an alternative, you can set IWATCH=115 to generate a movie of the Performance pages during the solution.

While MatrixWarrior is normally run with Dashboard providing WEB displays, this is not a requirement. Setting IWATCH=0 in the license file will skip all calls to Dashboard.

The chapter on Dashboard contains information on installing Dashboard in your application, how to select what reports are generated and how they are displayed.