Open ssiccha opened 3 years ago
Three sessions on emmy: HPC-GAP
gap> n := 15000;; q := 5;;
gap> A := RandomMat(n, n, GF(q));;
gap> GAUSS_MeasureContention(15, q, A);
Make sure you called GAP with sufficient preallocated memory via `-m` if you try non-trivial examples! Otherwise garbage collection will be a big overhead.
Starting the parallel algorithm:
EchelonMatTransformationBlockwise.
Wall time parallel execution (ms): 580140.
...
=> 580s GAP with our package:
gap> n := 15000;; q := 5;;
gap> A := RandomMat(n, n, GF(q));;
...
gap> numberBlocks := 15;
15
gap> res := GAUSS_GET_REAL_TIME_OF_FUNCTION_CALL(
> EchelonMatTransformationBlockwise,
> [A, rec( galoisField := GF(q),
> numberBlocks := numberBlocks )]).time;
3914793569
=> 3914s (the return value is in nanoseconds)
GAP with the Gauss package
gap> n := 15000;; q := 5;;
gap> A := RandomMat(n, n, GF(q));;
gap> ReadPackage("gausspar", "gap/benchmarking/timing.g");;
gap> benchStd := GAUSS_GET_REAL_TIME_OF_FUNCTION_CALL(EchelonMatTransformation, [A]).time;
5799779082
=> 5799s.
How to make this usable?
Get an example of a small matrix where handling each is expensive, e.g. if the entries are polynomials. Does Mohamed have such an example?
Can we use Julia? If there would be a lot of interest, then it should be possible that someone (not Jendrik and me ^^) could rewrite this in Julia.