diff --git a/src/getrf.cc b/src/getrf.cc index 3f23681f9..f7f6dca44 100644 --- a/src/getrf.cc +++ b/src/getrf.cc @@ -222,17 +222,21 @@ int64_t getrf( } #pragma omp task depend(inout:column[k]) { - auto panel = A.sub( k, A_nt-1, k, k ); + auto left_panel = A.sub( k, A_mt-1, k, k ); + auto top_panel = A.sub( k, k, k+1, A_nt-1 ); // Erase remote tiles on all devices including host - panel.releaseRemoteWorkspace(); + left_panel.releaseRemoteWorkspace(); + top_panel.releaseRemoteWorkspace(); // Update the origin tiles before their // workspace copies on devices are erased. - panel.tileUpdateAllOrigin(); + left_panel.tileUpdateAllOrigin(); + top_panel.tileUpdateAllOrigin(); // Erase local workspace on devices. - panel.releaseLocalWorkspace(); + left_panel.releaseLocalWorkspace(); + top_panel.releaseLocalWorkspace(); } kk += A.tileNb( k ); } diff --git a/src/getrf_nopiv.cc b/src/getrf_nopiv.cc index 1a4a4f95f..9325093be 100644 --- a/src/getrf_nopiv.cc +++ b/src/getrf_nopiv.cc @@ -206,17 +206,21 @@ int64_t getrf_nopiv( } #pragma omp task depend(inout:column[k]) { - auto panel = A.sub(k, A_nt-1, k, k); + auto left_panel = A.sub( k, A_mt-1, k, k ); + auto top_panel = A.sub( k, k, k+1, A_nt-1 ); // Erase remote tiles on all devices including host - panel.releaseRemoteWorkspace(); + left_panel.releaseRemoteWorkspace(); + top_panel.releaseRemoteWorkspace(); // Update the origin tiles before their // workspace copies on devices are erased. - panel.tileUpdateAllOrigin(); + left_panel.tileUpdateAllOrigin(); + top_panel.tileUpdateAllOrigin(); // Erase local workspace on devices. - panel.releaseLocalWorkspace(); + left_panel.releaseLocalWorkspace(); + top_panel.releaseLocalWorkspace(); } kk += A.tileNb( k ); } diff --git a/src/getrf_tntpiv.cc b/src/getrf_tntpiv.cc index c0c4dfc46..f6ef87147 100644 --- a/src/getrf_tntpiv.cc +++ b/src/getrf_tntpiv.cc @@ -334,17 +334,21 @@ int64_t getrf_tntpiv( } #pragma omp task depend(inout:column[k]) { - auto panel = A.sub(k, A_nt-1, k, k); + auto left_panel = A.sub( k, A_mt-1, k, k ); + auto top_panel = A.sub( k, k, k+1, A_nt-1 ); // Erase remote tiles on all devices including host - panel.releaseRemoteWorkspace(); + left_panel.releaseRemoteWorkspace(); + top_panel.releaseRemoteWorkspace(); // Update the origin tiles before their // workspace copies on devices are erased. - panel.tileUpdateAllOrigin(); + left_panel.tileUpdateAllOrigin(); + top_panel.tileUpdateAllOrigin(); // Erase local workspace on devices. - panel.releaseLocalWorkspace(); + left_panel.releaseLocalWorkspace(); + top_panel.releaseLocalWorkspace(); } kk += A.tileNb( k ); }