You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
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.
The text was updated successfully, but these errors were encountered: