In conclusion the project has succeeded in its general aims of:
1) Creating a faster Gauss-Jordan Inversion algorithm compared to the baseline algorithm
2) Creating a parallelised Gauss-Jordan algorithm that produces significant speedups to warrant use in an everyday computation environment
3) Finding the most optimal algorithm for an inversion relative to dimensional size for specific hardware and processor.
4) Producing an object function that is usable in external applications that require the best solution for the hardware it is run under.
5.2 Future Work
Work that would be of interest would be rewriting the main algorithms using SSE commands. Vectorisation of the values you significantly improve performance especially when using floats where 4 32bit values could be packed in a 128bit SSE native value.
Also running the parallelised code over a cluster could probably increase the maximum speed up efficiencies of each algorithm over very large matrices.