-
Notifications
You must be signed in to change notification settings - Fork 99
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
Feature sparse ILU(k) #459
Conversation
@srajama1 It is ready for your review. Thanks. |
if ( my_team == 0 ) L_values(k) = fact; | ||
|
||
team.team_barrier(); | ||
|
||
Kokkos::parallel_for( Kokkos::TeamThreadRange( team, U_row_map(prev_row)+1, U_row_map(prev_row+1) ), [&] ( const long kk ) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could U_row_map(prev_row)
be unsigned? If so, then this might emit build warnings, since it would cast from unsigned to signed (long
). Also, long
is almost never the right type for anything. (It's not even 64 bits on some platforms.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @mhoemmen for pointing it out. I fixed it in the new commit.
@@ -382,8 +385,8 @@ void iluk_numeric ( IlukHandle& thandle, | |||
|
|||
HandleDeviceEntriesType level_idx = thandle.get_level_idx(); | |||
|
|||
typedef Kokkos::View< nnz_lno_t**, Kokkos::LayoutLeft, Kokkos::Device<execution_space,memory_space> > WorkViewType; | |||
|
|||
typedef Kokkos::View< nnz_lno_t**, Kokkos::Device<execution_space,memory_space> > WorkViewType; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Prefer C++11 - style using
over typedef
:
using WorkViewType = Kokkos::View<nnz_lno_t**, Kokkos::Device<execution_space,memory_space>>;
Note that C++11 permits the two trailing >>
to be next to each other. You don't need to leave a space between them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @mhoemmen . I replaced typedef
with using
in the new commit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @vqd8a !
Spotcheck on White passed:
Spotcheck on Bowman passed:
|
@srajama1 Spotchecks passed. Could you please merge when you have time? Thanks. |
This requires a thumbs up from @mhoemmen |
@mhoemmen could you please review this? so that we can merge. Thanks. |
There are 536 files to review; I would need a P/T for that kind of work and I'd prefer not to approve blindly. You can approve it yourself. |
@srajama1 in this case, could you please consider merging? Thanks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some minor comments for next round, this can go in as it is.
class UEntriesType, | ||
class UValuesType> | ||
void iluk_numeric ( IlukHandle& thandle, | ||
const ARowMapType& A_row_map, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might need a refactor, not just here in other places as well, to use the Crsmatrix instead of the three pointers .
@@ -0,0 +1,65 @@ | |||
/* | |||
//@HEADER | |||
// ************************************************************************ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could add cusparse here for ILU(0) only.
spiluk: Kokkos-based sparse ILU(k) routines. This is an initial commit with sparse ILU(k) handle, symbolic, and numeric routines + ETI infrastructure. Two implementations are done using
RangePolicy
andTeamPolicy
. All components are placed in Experimental namespace.