Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Next Steps #276

Open
ssiccha opened this issue Apr 20, 2021 · 1 comment
Open

Next Steps #276

ssiccha opened this issue Apr 20, 2021 · 1 comment
Milestone

Comments

@ssiccha
Copy link
Collaborator

ssiccha commented Apr 20, 2021

How to make this usable?

  • we are 2x faster than the gauss package in GAP for big matrix sizes. also for smaller ones?
  • talk to Max: what is the future of HPC-GAP itself? Currently it doesn't look good
  • can we make this usable from GAP as follows:
    • let GAP start an HPC-GAP process
    • call our algorithm
    • move the result back to GAP, how can we do this step efficiently?

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.

@ssiccha ssiccha added this to the 1.0 milestone Apr 20, 2021
@ssiccha
Copy link
Collaborator Author

ssiccha commented May 5, 2021

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.

@ssiccha ssiccha modified the milestones: 1.0, 1.1 May 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant