GETRF: Add a blocked version of the LU partial pivoting algorithm
Merge request reports
Activity
requested review from @fpruvost
assigned to @faverge
- Resolved by Mathieu Faverge
Ping @kuhn for review too.
- Resolved by Mathieu Faverge
- Resolved by Mathieu Faverge
- Resolved by Mathieu Faverge
- Resolved by Mathieu Faverge
Thanks, by the way it works fine on our side and we obtained a 0.73TF on 32 cores AMD where @kuhn obtained 0.96TF but I may not have used all the configuration options he used.
- Resolved by Mathieu Faverge
I remember I had the same issue when attempting to run on GPUs with partial pivoting.
This was a long time ago... but I think the problem was this memset that cannot execute on GPUs : https://gitlab.inria.fr/satanas-atos/chameleon/-/blob/main/runtime/starpu/interface/cppi_interface.c#L89
Hopefully, this memset was not mandatory, as the reduction algorithm should initialize pivot arrays to 0. Hence, I suggest to give it a try without https://gitlab.inria.fr/satanas-atos/chameleon/-/blob/main/runtime/starpu/interface/cppi_interface.c#L89
- Resolved by Mathieu Faverge
- Resolved by Mathieu Faverge
@faverge , @kuhn , Found a bug, not really related to this PR. STARPU_NONE is defined to 0 which terminates the task arguments. (which removes priority from first diag kernel), I have 2 solutions for that :
- use STARPU_NONE always as last argument but you can't have 2
- use previous argument information instead of STARPU_NONE eg:
int access_ppiv = ( h == 0 ) ? access_npiv : STARPU_R; starpu_data_handle_t data_ppiv = ( h == 0 ) ? RUNTIME_pivot_getaddr( ipiv, An, h-1 ) : RUNTIME_pivot_getaddr( ipiv, An, h )
Or fix starpu to have a working STARPU_NONE... starpu/starpu#34 (closed) EDIT : solution 2 does not work but I have a quick fix working in starpu
Edited by Xavier Lacoste
- Resolved by Mathieu Faverge
- Resolved by Mathieu Faverge
- Resolved by Mathieu Faverge
@faverge We've got an error on this branch with: CHAMELEON_GETRF_ALGO=nopiv 3 cores (1 submission, 1 mpi, 1 tasks), -n $((30*10)) -b 30 -o getrf -c 0: Id;Function;threads;gpus;P;Q;mtxfmt;nb;ib;m;n;lda;seedA;diag;tsub;time;gflops;||A||;||A-fact(A)||;RETURN 0: 0;dgetrf;1;0;1;1;0;30;48;300;300;300;1804289383;131;0.000000e+00;5.434441e-03;3.303974e+00;8.230099e+01;2.822684e-10;FAILED CC @kuhn
Sorry it is using nopiv, so maybe not related to this MR...
Edited by Xavier Lacoste
added 8 commits
-
86bbc775...bb5dfbdd - 3 commits from branch
solverstack:master
- a5cf0dd2 - control: Add a protection on the value of ib
- 0ba5584b - coreblas: Update the getrf kernels to take into account some blocked updates
- fbaafbe0 - codelets: Add tasks for the blocked getrf algorithm
- 71c67808 - zgetrf: Add blocked version algorithm of the getrf
- 50c7aef6 - testing/getrf: add the ib parameter for the blocked version
Toggle commit list-
86bbc775...bb5dfbdd - 3 commits from branch
added 10 commits
-
50c7aef6...19c83ef3 - 5 commits from branch
solverstack:master
- dac5d83e - control: Add a protection on the value of ib
- e5005374 - coreblas: Update the getrf kernels to take into account some blocked updates
- 233cafb7 - codelets: Add tasks for the blocked getrf algorithm
- 141d0f6e - zgetrf: Add blocked version algorithm of the getrf
- 5eaf80aa - testing/getrf: add the ib parameter for the blocked version
Toggle commit list-
50c7aef6...19c83ef3 - 5 commits from branch