28 #ifndef SPLA_CPU_FORMAT_LIL_HPP
29 #define SPLA_CPU_FORMAT_LIL_HPP
43 lil.
Ar.resize(n_rows);
48 for (
auto& row : lil.
Ar) {
60 auto& row = lil.
Ar[row_id];
62 auto where = std::upper_bound(row.begin(), row.end(), Entry{col_id, element}, [](
const Entry& val,
const Entry& point) {
63 return val.first <= point.first;
66 if (where != row.end() && (*where).first == col_id) {
67 (*where).second = lil.
reduce((*where).second, element);
71 row.insert(where, Entry{col_id, element});
84 for (
uint i = 0; i < n_rows; i++) {
85 const auto& row = Ar[i];
86 for (
uint j = 0; j < row.size(); j++) {
88 Rx[key] = row[j].second;
102 assert(Ri.size() == in.
values);
103 assert(Rj.size() == in.
values);
104 assert(Rx.size() == in.
values);
107 for (
uint i = 0; i < n_rows; i++) {
108 const auto& row = Ar[i];
109 for (
uint j = 0; j < row.size(); j++) {
111 Rj[k] = row[j].first;
112 Rx[k] = row[j].second;
127 assert(Rp.size() == n_rows + 1);
128 assert(Rj.size() == in.
values);
129 assert(Rx.size() == in.
values);
131 for (
uint i = 0; i < n_rows; i++) {
132 Rp[i] = Ar[i].size();
135 std::exclusive_scan(Rp.begin(), Rp.end(), Rp.begin(), 0, std::plus<>());
136 assert(Rp[n_rows] == in.
values);
139 for (
uint i = 0; i < n_rows; i++) {
140 const auto& row = Ar[i];
141 for (
uint j = 0; j < row.size(); j++) {
142 Rj[k] = row[j].first;
143 Rx[k] = row[j].second;
CPU list of coordinates matrix format.
Definition: cpu_formats.hpp:148
std::vector< uint > Aj
Definition: cpu_formats.hpp:155
std::vector< T > Ax
Definition: cpu_formats.hpp:156
std::vector< uint > Ai
Definition: cpu_formats.hpp:154
CPU compressed sparse row matrix format.
Definition: cpu_formats.hpp:166
std::vector< uint > Ap
Definition: cpu_formats.hpp:172
std::vector< uint > Aj
Definition: cpu_formats.hpp:173
std::vector< T > Ax
Definition: cpu_formats.hpp:174
Dictionary of keys sparse matrix format.
Definition: cpu_formats.hpp:128
robin_hood::unordered_flat_map< Key, T, pair_hash > Ax
Definition: cpu_formats.hpp:137
std::pair< uint, uint > Key
Definition: cpu_formats.hpp:134
CPU list-of-list matrix format for fast incremental build.
Definition: cpu_formats.hpp:107
std::pair< uint, T > Entry
Definition: cpu_formats.hpp:113
std::vector< Row > Ar
Definition: cpu_formats.hpp:117
Reduce reduce
Definition: cpu_formats.hpp:118
uint values
Definition: tdecoration.hpp:58
void cpu_lil_clear(CpuLil< T > &lil)
Definition: cpu_format_lil.hpp:47
void cpu_lil_to_dok(uint n_rows, const CpuLil< T > &in, CpuDok< T > &out)
Definition: cpu_format_lil.hpp:76
void cpu_lil_to_csr(uint n_rows, const CpuLil< T > &in, CpuCsr< T > &out)
Definition: cpu_format_lil.hpp:119
void cpu_lil_add_element(uint row_id, uint col_id, T element, CpuLil< T > &lil)
Definition: cpu_format_lil.hpp:55
void cpu_lil_resize(uint n_rows, CpuLil< T > &lil)
Definition: cpu_format_lil.hpp:41
void cpu_lil_to_coo(uint n_rows, const CpuLil< T > &in, CpuCoo< T > &out)
Definition: cpu_format_lil.hpp:94
std::uint32_t uint
Library index and size type.
Definition: config.hpp:56
Definition: algorithm.hpp:37