-
Notifications
You must be signed in to change notification settings - Fork 85
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
UVM dependency removal #937
Conversation
@tasmith4 @ldh4 More precisely, tests without In any case, I'll work with you and Dong Hun tomorrow to help establish where we're at with all this. |
You're right @alanw0, I should have been more precise, thanks for clarifying. I was also very surprised all the NGP tests pass without UVM (and am willing to be skeptical of the result, although I double-checked my build), we'll have to discuss this more today as you say. |
@tasmith4 In particular we're passing those views (that this commit changes to host views) into the setAllIndices method on the tpetra crsgraph. I guess the explanation could be that we're getting those host views from a dual view, and inside setAllIndices tpetra is doing the sync for us and then using the device views. If that's what is happening then great! |
I don't think that's what's happening, so I'm now even more confused by why these tests pass. |
I guess I didn't look closely... Now that I look at this commit again, it doesn't change the types of the views we're passing into setAllIndices. It is changing the types of other stuff. So we'll just have to work through this today and see what is going on. We'll probably want to put in a (temporary) check in the code, in TpetraLinearSystem.C, for whether uvm is actually on or not. |
Now need to try with uvm off
@@ -113,6 +113,8 @@ FixPressureAtNodeAlgorithm::execute() | |||
} | |||
}); | |||
}); | |||
|
|||
eqSystem_->linsys_->free_coeff_applier(deviceCoeffApplier); |
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.
Why is this necessary? Are we leaking memory?
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.
On the TpetraLinearSystem class, we had to change it so that it is no longer holding onto the host/device coeff appliers as its member variables. So, a new coeff applier is constructed on each request. Because of this, we had to introduce a way to properly deallocate coeff appliers when no longer needed. This is one of the changes that we will likely to revisit to find a better way to handle this.
Just as a note, free_coeff_applier
is an empty function in LinearSystem.h
, so this line will not affect HypreLinearSystem
.
@@ -40,6 +40,8 @@ void AssembleOversetDecoupledAlgorithm::execute() | |||
fringeNodes.size(), KOKKOS_LAMBDA(const size_t& i) { | |||
coeffApplier->resetRows(1, &fringeNodes(i), 0, numDof, 1.0, 0.0); | |||
}); | |||
|
|||
eqSystem_->linsys_->free_coeff_applier(coeffApplier); |
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.
We're doing this again. We must have been leaking memory?
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.
Same reason as the above.
A couple notes on this commit:
|
I am actually running |
Checking numbers from |
[WIP] Modifications to make Nalu-wind buildable without Cuda UVM
Pre-requisite work for converting Nalu-wind to be compatible with HIP.
This is to make Nalu wind to build without Cuda UVM
@tasmith4 @alanw0 @jhux2 @ddement