HypreParVector, HypreParMatrix, and HypreSmoother with GPU backends.
Add 2 versions of a new method: Vector::MakeRef -- one that takes
a Vector and an offset and another that takes a Vector, an offset
and a new size.
Add some simple debugging tools:
* Add a new output "trace" stream: mfem::trc. By default, the output
of mfem::trc goes to std::cout; the new function mfem::OpenTraceFile()
can be used to redirect the output of mfem::trc to a file called
'mfem-trace-<pid>' where <pid> is the process id. Note that this
function can be called from a debugger.
* In class Vector, add a new method Vector::PrintTrace() that prints a
Vector to the mfem::trc stream -- this method can be called from a
debugger, unlike Vector::Print with mfem::trc as argument (at least
in gdb this did not work).
* In class Memory<T>, add 2 new methods: PrintFlags() and
CompareHostAndDevice() which are explicitly instantiated for T=int
and T=double, so that they can be called inside a debugger for
these two types.
* The parameter of Vector::UseDevice(bool) no longer has a default value. All
the calls to UseDevice() in operator.cpp bilinearform_ext.cpp gridfunc.?pp and
linearform.?pp have been replaced with UseDevice(true).
* Added shortcuts for the device flags of the Memory objects inside the Vector
and Array classes:
bool Array::UseDevice()
bool Vector::UseDevice()
* The internal device flag in Memory::FlagMask is now called USE_DEVICE (it was
previously called EXEC_FLAG). The accessor function for this flag have been
renamed:
bool Memory::GetExecFlag() -> bool Memory::UseDevice()
void Memory::SetExecFlag(bool) -> void Memory::UseDevice(bool)
* Further renamed:
Memory::SyncWith -> Memory::Sync
Memory::SyncAliasToBase -> Memory::SyncAlias
Memory::SyncAliasToBase_ -> Memory::SyncAlias_
* Replaced FIXME with TODO in general/mem_manager.cpp