Skip to content

A linear system of equations solver that uses Gaussian elimination implemented on OpenCL aimed to take advantage of the GPU to improve the performance on large systems

License

Notifications You must be signed in to change notification settings

TendTo/Linear-System-Solver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

System Solver

Small application that aims to solve systems of linear equations using the general compute capabilities of the GPUs

Table of contents


🔧 Setting up a local istance

Requirements

Steps

  • Make sure the path to the CL header is correct, or edit it accordingly.

  • make main
  • The executable will be found in the bin folder, while all the object files will be in the build folder

  • You can also run the compiler manually. All the c files are in the src folder, while the headers are in the include folder.

Use:

---------------------------------------------------------------------
Usage: ./bin/LinearSystemSolver [-i infname] [-o outfname] [-s seed] [-d dim] [-v] ocldname impcode
---------------------------------------------------------------------
impcode      -  implementation you want to use.
                1: no pivot cpu
                2: no pivot lmem [deprecated]
                3: no pivot texture
                4: no pivot buffer
                5: partial pivot cpu
                6: partial pivot texture
                7: partial pivot buffer
ocldname     -  path to the directory that contains the oclfiles

-i infname   -  path of the file from which to fetch the matrix.
                It must state all the elements of the complete matrix, separated by spaces, row by row
-o outfname  -  path of the file where to print the result vector.
                Defaults to use the standard output. If it is not specified, a dummy matrix will be generated
-s seed      -  seed used to generate the matrix if -f is not specified.
                Defaults to 123
-d dim       -  number of unknowns of the matrix.
                Defaults to 1000
-v           -  enables vectorization, if the chosen implementation supports it.
                The number of unknowns must be 1 less than a multiple of 4

📊 [Optional] Testing

Requirements

Steps

  • Make sure the path to the check header is correct, or edit it accordingly.

  • make test
  • The test runner will be found in the bin folder, while all the object files will be in the build folder

📚 Documentation

Table of contents
Code documentation

Credits

  • Giuseppe Bilotta for the ocl_boiler.h (and for teaching me all the OpenCL fundamentals and more)
  • c-project-template for the structure of the project and of the Makefile

About

A linear system of equations solver that uses Gaussian elimination implemented on OpenCL aimed to take advantage of the GPU to improve the performance on large systems

Topics

Resources

License

Stars

Watchers

Forks