Add members and methods denoting comm ownership for Matrix and Vector methods
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- cpp
- Domain
- distributed-systems
Research direction
Start by locating the CAROM::Vector and CAROM::Matrix class definitions and their constructors, then inspect any existing communicator or distributed-index utilities. Add the requested communicator members, accessors, and free functions, with completion shown by satisfying the listed row-span, dimension, and process-ownership postconditions.
Written by the indexing model from the issue text.
Description
Specifically, add the following to each class T, where T is a CAROM::Vector or CAROM::Matrix, a CAROM::Vector is treated as a single column matrix, and none of the functions below should be templated:
- a private
MPI_Comm d_commmember - initialize that member in the constructor of each object
- include a
MPI_Comm getComm() constgetter method - a free function of the form
std::vector<int> GetDimensionOnEachProcess(T &input), that returns the number of rows of the object on each process - a free function of the form
std::vector<int> GetRowSpanOnEachProcess(T &input), whereTis aCAROM::MatrixorCAROM::Vectorthat returns the range of row indices of the object on each process. Letstd::vector<int> resultbe the value returned by this function. The following postconditions should be satisfied: (1)result.size()should be one plus the number of processes ond_comm, and (2) if a disjoint contiguous index span ofinputresides on each process such that index 0 is owned by process 0, and the lowest index owned by each process is an increasing sequence when ordered by increasing process number, then processpcontains rowsresult[p]throughresult[p + 1] - 1 - a free function of the form
int GetProcessContainingRow(T &input, int row)such that ifint resultis returned by this function, then rowrowis on process numberresult
These utility functions come up frequently in implementing linear algebraic operations. I suspect that if data objects are associated with communicators, the operations like matrix decompositions will not need to have communicators associated with them.
- Dominant language
- C++
- Stars
- 236
- Forks
- 47
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from llnl/libROM
-
Difficulty 2/5 1-3 hours Newbie friendliness 45/100
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
bug
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 28/100
Similar issues
-
bug build
Difficulty 1/5 Under an hour Newbie friendliness 91/100
facebookincubator/velox#19194 ·
-
JIT-compiled number -> Decimal conversion silently overflows instead of raising DECIMAL_OVERFLOW Openfuzz
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
ClickHouse/ClickHouse#122114 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
module/agent platform/macos type/bug/regression
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
enhancement PyCDE
Difficulty 2/5 1-3 hours Newbie friendliness 78/100