Go to the documentation of this file.
16 #ifndef STORAGES_RT_MUTABLE_GRAPH_CSR_IMMUTABLE_CSR_H_
17 #define STORAGES_RT_MUTABLE_GRAPH_CSR_IMMUTABLE_CSR_H_
21 template <
typename EDATA_T>
27 :
cur_(slice.begin()),
end_(slice.end()) {}
52 template <
typename EDATA_T>
58 size_t batch_init(
const std::string& name,
const std::string& work_dir,
59 const std::vector<int>& degree,
60 double reserve_ratio)
override {
61 size_t vnum = degree.size();
62 adj_lists_.open(work_dir +
"/" + name +
".adj",
true);
66 for (
auto d : degree) {
70 nbr_list_.open(work_dir +
"/" + name +
".nbr",
true);
77 for (
vid_t i = 0; i < vnum; ++i) {
94 double reserve_ratio)
override {
95 size_t vnum = degree.size();
100 for (
auto d : degree) {
111 for (
vid_t i = 0; i < vnum; ++i) {
136 for (
size_t i = 0; i != vnum; ++i) {
148 const std::string& work_dir)
override {
157 adj_lists_.open(work_dir +
"/" + name +
".adj",
true);
179 for (
size_t i = 0; i < old_degree_size; ++i) {
197 nbr_list_.open_with_hugepages(prefix +
".nbr");
205 for (
size_t i = 0; i < old_degree_size; ++i) {
220 void dump(
const std::string& name,
221 const std::string& new_snapshot_dir)
override {
222 dump_meta(new_snapshot_dir +
"/" + name);
226 fopen((new_snapshot_dir +
"/" + name +
".deg").c_str(),
"wb");
233 fopen((new_snapshot_dir +
"/" + name +
".nbr").c_str(),
"wb");
234 for (
size_t k = 0; k < vnum; ++k) {
244 void warmup(
int thread_num)
const override {}
251 for (
size_t k = old_size; k != vnum; ++k) {
265 for (
size_t i = 0; i <
adj_lists_.size(); ++i) {
272 return std::make_shared<ImmutableCsrConstEdgeIter<EDATA_T>>(
get_edges(v));
283 LOG(FATAL) <<
"Put single edge is not supported";
301 std::string meta_file_path = prefix +
".meta";
302 if (std::filesystem::exists(meta_file_path)) {
303 FILE* meta_file_fd = fopen(meta_file_path.c_str(),
"r");
306 fclose(meta_file_fd);
313 std::string meta_file_path = prefix +
".meta";
314 FILE* meta_file_fd = fopen((prefix +
".meta").c_str(),
"wb");
316 fflush(meta_file_fd);
317 fclose(meta_file_fd);
335 size_t batch_init(
const std::string& name,
const std::string& work_dir,
336 const std::vector<int>& degree,
337 double reserve_ratio = 1.2)
override {
338 return csr_.batch_init(name, work_dir, degree, reserve_ratio);
342 double reserve_ratio = 1.2)
override {
343 return csr_.batch_init_in_memory(degree, reserve_ratio);
348 csr_.batch_put_edge(src, dst, data, ts);
352 const std::string& work_dir)
override {
357 csr_.open_in_memory(prefix, v_cap);
361 csr_.open_with_hugepages(prefix, v_cap);
364 void dump(
const std::string& name,
365 const std::string& new_snapshot_dir)
override {
366 csr_.dump(name, new_snapshot_dir);
369 void warmup(
int thread_num)
const override { csr_.warmup(thread_num); }
373 size_t size()
const override {
return csr_.size(); }
376 return std::make_shared<ImmutableCsrConstEdgeIter<std::string_view>>(
389 csr_.put_edge(src, dst, data, ts, alloc);
394 csr_.put_edge(src, dst, index, ts, alloc);
398 return slice_t(csr_.get_edges(i), column_);
401 void close()
override { csr_.close(); }
403 size_t edge_num()
const override {
return csr_.edge_num(); }
418 size_t batch_init(
const std::string& name,
const std::string& work_dir,
419 const std::vector<int>& degree,
420 double reserve_ratio = 1.2)
override {
421 return csr_.batch_init(name, work_dir, degree, reserve_ratio);
425 double reserve_ratio = 1.2)
override {
426 return csr_.batch_init_in_memory(degree, reserve_ratio);
431 csr_.batch_put_edge(src, dst, data, ts);
435 const std::string& work_dir)
override {
440 csr_.open_in_memory(prefix, v_cap);
444 csr_.open_with_hugepages(prefix, v_cap);
447 void dump(
const std::string& name,
448 const std::string& new_snapshot_dir)
override {
449 csr_.dump(name, new_snapshot_dir);
452 void warmup(
int thread_num)
const override { csr_.warmup(thread_num); }
456 size_t size()
const override {
return csr_.size(); }
459 return std::make_shared<ImmutableCsrConstEdgeIter<RecordView>>(
472 csr_.put_edge(src, dst, data, ts, alloc);
477 csr_.put_edge(src, dst, index, ts, alloc);
481 return slice_t(csr_.get_edges(i), table_);
484 void close()
override { csr_.close(); }
486 size_t edge_num()
const override {
return csr_.edge_num(); }
493 template <
typename EDATA_T>
502 size_t batch_init(
const std::string& name,
const std::string& work_dir,
503 const std::vector<int>& degree,
504 double reserve_ratio)
override {
505 size_t vnum = degree.size();
506 nbr_list_.open(work_dir +
"/" + name +
".snbr",
true);
508 for (
size_t k = 0; k != vnum; ++k) {
509 nbr_list_[k].neighbor = std::numeric_limits<vid_t>::max();
515 double reserve_ratio)
override {
516 size_t vnum = degree.size();
519 for (
size_t k = 0; k != vnum; ++k) {
520 nbr_list_[k].neighbor = std::numeric_limits<vid_t>::max();
527 CHECK_EQ(
nbr_list_[src].neighbor, std::numeric_limits<vid_t>::max());
535 return std::numeric_limits<timestamp_t>::max();
539 const std::string& work_dir)
override {
540 if (!std::filesystem::exists(work_dir +
"/" + name +
".snbr")) {
542 work_dir +
"/" + name +
".snbr");
544 nbr_list_.open(work_dir +
"/" + name +
".snbr",
true);
553 FILE* fin = fopen((prefix +
".snbr").c_str(),
"r");
554 CHECK_EQ(fread(
nbr_list_.data(),
sizeof(
nbr_t), old_size, fin), old_size);
556 for (
size_t k = old_size; k != v_cap; ++k) {
557 nbr_list_[k].neighbor = std::numeric_limits<vid_t>::max();
563 nbr_list_.open_with_hugepages(prefix +
".snbr", v_cap);
565 if (old_size < v_cap) {
567 for (
size_t k = old_size; k != v_cap; ++k) {
568 nbr_list_[k].neighbor = std::numeric_limits<vid_t>::max();
573 void dump(
const std::string& name,
574 const std::string& new_snapshot_dir)
override {
576 std::filesystem::exists(
nbr_list_.filename())) {
577 std::filesystem::create_hard_link(
578 nbr_list_.filename(), new_snapshot_dir +
"/" + name +
".snbr");
580 FILE* fp = fopen((new_snapshot_dir +
"/" + name +
".snbr").c_str(),
"wb");
587 void warmup(
int thread_num)
const override {
589 std::vector<std::thread> threads;
590 std::atomic<size_t> v_i(0);
591 std::atomic<size_t> output(0);
592 const size_t chunk = 4096;
593 for (
int i = 0; i < thread_num; ++i) {
594 threads.emplace_back([&]() {
597 size_t begin = std::min(v_i.fetch_add(chunk), vnum);
598 size_t end = std::min(begin + chunk, vnum);
602 while (begin < end) {
608 output.fetch_add(ret);
611 for (
auto& thrd : threads) {
614 (void) output.load();
621 for (
size_t k = old_size; k != vnum; ++k) {
622 nbr_list_[k].neighbor = std::numeric_limits<vid_t>::max();
633 for (
size_t i = 0; i <
nbr_list_.size(); ++i) {
634 if (
nbr_list_[i].neighbor != std::numeric_limits<vid_t>::max()) {
642 return std::make_shared<ImmutableCsrConstEdgeIter<EDATA_T>>(
get_edges(v));
656 CHECK_EQ(
nbr_list_[src].neighbor, std::numeric_limits<vid_t>::max());
664 nbr_list_[i].neighbor == std::numeric_limits<vid_t>::max() ? 0 : 1);
665 if (ret.
size() != 0) {
689 size_t batch_init(
const std::string& name,
const std::string& work_dir,
690 const std::vector<int>& degree,
691 double reserve_ratio)
override {
692 return csr_.batch_init(name, work_dir, degree, reserve_ratio);
696 double reserve_ratio)
override {
697 return csr_.batch_init_in_memory(degree, reserve_ratio);
702 csr_.batch_put_edge(src, dst, data, ts);
708 return std::numeric_limits<timestamp_t>::max();
712 const std::string& work_dir)
override {
717 csr_.open_in_memory(prefix, v_cap);
721 csr_.open_with_hugepages(prefix, v_cap);
724 void dump(
const std::string& name,
725 const std::string& new_snapshot_dir)
override {
726 csr_.dump(name, new_snapshot_dir);
729 void warmup(
int thread_num)
const override { csr_.warmup(thread_num); }
733 size_t size()
const override {
return csr_.size(); }
735 size_t edge_num()
const override {
return csr_.edge_num(); }
738 return std::make_shared<ImmutableCsrConstEdgeIter<std::string_view>>(
752 csr_.put_edge(src, dst, data, ts, alloc);
756 return slice_t(csr_.get_edges(i), column_);
761 nbr.
neighbor = csr_.get_edge(i).neighbor;
762 size_t index = csr_.get_edge(i).data;
763 nbr.
data = column_.get_view(index);
766 void close()
override { csr_.close(); }
782 size_t batch_init(
const std::string& name,
const std::string& work_dir,
783 const std::vector<int>& degree,
784 double reserve_ratio)
override {
785 return csr_.batch_init(name, work_dir, degree, reserve_ratio);
789 double reserve_ratio)
override {
790 return csr_.batch_init_in_memory(degree, reserve_ratio);
795 csr_.batch_put_edge(src, dst, data, ts);
801 return std::numeric_limits<timestamp_t>::max();
805 const std::string& work_dir)
override {
810 csr_.open_in_memory(prefix, v_cap);
814 csr_.open_with_hugepages(prefix, v_cap);
817 void dump(
const std::string& name,
818 const std::string& new_snapshot_dir)
override {
819 csr_.dump(name, new_snapshot_dir);
822 void warmup(
int thread_num)
const override { csr_.warmup(thread_num); }
826 size_t size()
const override {
return csr_.size(); }
828 size_t edge_num()
const override {
return csr_.edge_num(); }
831 return std::make_shared<ImmutableCsrConstEdgeIter<RecordView>>(
845 csr_.put_edge(src, dst, data, ts, alloc);
849 return slice_t(csr_.get_edges(i), table_);
854 nbr.
neighbor = csr_.get_edge(i).neighbor;
859 void close()
override { csr_.close(); }
868 #endif // STORAGES_RT_MUTABLE_GRAPH_CSR_IMMUTABLE_CSR_H_
mmap_array< nbr_t > nbr_list_
Definition: immutable_csr.h:322
size_t batch_init(const std::string &name, const std::string &work_dir, const std::vector< int > °ree, double reserve_ratio=1.2) override
Definition: immutable_csr.h:418
slice_t get_edges(vid_t i) const override
Definition: immutable_csr.h:480
size_t batch_init(const std::string &name, const std::string &work_dir, const std::vector< int > °ree, double reserve_ratio) override
Definition: immutable_csr.h:782
std::shared_ptr< CsrConstEdgeIterBase > edge_iter(vid_t v) const override
Definition: immutable_csr.h:458
void open(const std::string &name, const std::string &snapshot_dir, const std::string &work_dir) override
Definition: immutable_csr.h:434
std::shared_ptr< CsrEdgeIterBase > edge_iter_mut(vid_t v) override
Definition: immutable_csr.h:649
const_nbr_ptr_t end_
Definition: immutable_csr.h:49
CsrConstEdgeIterBase * edge_iter_raw(vid_t v) const override
Definition: immutable_csr.h:835
size_t edge_num() const override
Definition: immutable_csr.h:828
size_t size() const override
Definition: immutable_csr.h:456
size_t edge_num() const override
Definition: immutable_csr.h:486
void open_with_hugepages(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:720
void dump(const std::string &name, const std::string &new_snapshot_dir) override
Definition: immutable_csr.h:817
size_t size() const override
Definition: immutable_csr.h:826
void put_edge_with_index(vid_t src, vid_t dst, size_t data, timestamp_t ts, Allocator &alloc) override
Definition: immutable_csr.h:750
mmap_array< nbr_t * > adj_lists_
Definition: immutable_csr.h:320
slice_t get_edges(vid_t i) const override
Definition: immutable_csr.h:848
Definition: immutable_csr.h:53
Table & table_
Definition: immutable_csr.h:489
size_t batch_init(const std::string &name, const std::string &work_dir, const std::vector< int > °ree, double reserve_ratio) override
Definition: immutable_csr.h:58
void close() override
Definition: immutable_csr.h:293
Table & table_
Definition: immutable_csr.h:862
uint32_t timestamp_t
Definition: types.h:30
void open(const std::string &name, const std::string &snapshot_dir, const std::string &work_dir) override
Definition: immutable_csr.h:147
void resize(vid_t vnum) override
Definition: immutable_csr.h:246
StringColumn & column_
Definition: immutable_csr.h:769
timestamp_t unsorted_since() const override
Definition: immutable_csr.h:145
timestamp_t get_timestamp() const override
Definition: immutable_csr.h:34
void resize(vid_t vnum) override
Definition: immutable_csr.h:454
size_t size() const override
Definition: immutable_csr.h:629
void open(const std::string &name, const std::string &snapshot_dir, const std::string &work_dir) override
Definition: immutable_csr.h:538
SingleImmutableCsr(StringColumn &column)
Definition: immutable_csr.h:686
slice_t get_edges(vid_t v) const override
Definition: immutable_csr.h:286
slice_t get_edges(vid_t i) const override
Definition: immutable_csr.h:397
void put_edge(vid_t src, vid_t dst, size_t data, timestamp_t ts, Allocator &alloc)
Definition: immutable_csr.h:470
void batch_sort_by_edge_data(timestamp_t ts) override
Definition: immutable_csr.h:532
void set_begin(const_nbr_ptr_t ptr)
Definition: nbr.h:112
void batch_put_edge(vid_t src, vid_t dst, const EDATA_T &data, timestamp_t ts) override
Definition: immutable_csr.h:525
CsrConstEdgeIterBase & operator+=(size_t offset) override
Definition: immutable_csr.h:37
SingleImmutableCsr()
Definition: immutable_csr.h:499
size_t batch_init_in_memory(const std::vector< int > °ree, double reserve_ratio) override
Definition: immutable_csr.h:514
uint32_t vid_t
Definition: types.h:31
const_nbr_ptr_t cur_
Definition: immutable_csr.h:48
std::shared_ptr< CsrConstEdgeIterBase > edge_iter(vid_t v) const override
Definition: immutable_csr.h:375
std::shared_ptr< CsrConstEdgeIterBase > edge_iter(vid_t v) const override
Definition: immutable_csr.h:830
vid_t neighbor
Definition: nbr.h:49
void warmup(int thread_num) const override
Definition: immutable_csr.h:452
void resize(vid_t vnum) override
Definition: immutable_csr.h:731
size_t batch_init(const std::string &name, const std::string &work_dir, const std::vector< int > °ree, double reserve_ratio=1.2) override
Definition: immutable_csr.h:335
void resize(size_t size)
Definition: mmap_array.h:319
ImmutableNbrSlice< EDATA_T > slice_t
Definition: immutable_csr.h:497
~SingleImmutableCsr()
Definition: immutable_csr.h:500
void open_in_memory(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:716
typename ImmutableNbrSlice< EDATA_T >::const_nbr_ptr_t const_nbr_ptr_t
Definition: immutable_csr.h:23
~ImmutableCsr()
Definition: immutable_csr.h:416
void dump(const std::string &name, const std::string &new_snapshot_dir) override
Definition: immutable_csr.h:573
void dump_meta(const std::string &prefix) const
Definition: immutable_csr.h:312
Definition: adj_list.h:23
void load_meta(const std::string &prefix)
Definition: immutable_csr.h:300
size_t edge_num() const override
Definition: immutable_csr.h:631
Definition: immutable_csr.h:22
void warmup(int thread_num) const override
Definition: immutable_csr.h:369
size_t batch_init(const std::string &name, const std::string &work_dir, const std::vector< int > °ree, double reserve_ratio) override
Definition: immutable_csr.h:689
timestamp_t unsorted_since_
Definition: immutable_csr.h:323
std::shared_ptr< CsrEdgeIterBase > edge_iter_mut(vid_t v) override
Definition: immutable_csr.h:383
void open_in_memory(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:168
void put_edge(vid_t src, vid_t dst, const EDATA_T &data, timestamp_t ts, Allocator &) override
Definition: immutable_csr.h:653
void open(const std::string &filename, bool sync_to_file=false)
Definition: mmap_array.h:129
Definition: allocators.h:29
void set_size(int size)
Definition: nbr.h:109
ImmutableCsr< size_t > csr_
Definition: immutable_csr.h:490
void open_in_memory(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:809
void close() override
Definition: immutable_csr.h:766
std::shared_ptr< CsrConstEdgeIterBase > edge_iter(vid_t v) const override
Definition: immutable_csr.h:271
void batch_put_edge_with_index(vid_t src, vid_t dst, size_t data, timestamp_t ts=0) override
Definition: immutable_csr.h:429
size_t size() const override
Definition: immutable_csr.h:261
Definition: csr_base.h:27
T * data()
Definition: mmap_array.h:405
timestamp_t unsorted_since() const override
Definition: immutable_csr.h:534
CsrConstEdgeIterBase * edge_iter_raw(vid_t v) const override
Definition: immutable_csr.h:463
CsrConstEdgeIterBase * edge_iter_raw(vid_t v) const override
Definition: immutable_csr.h:742
void put_edge(vid_t src, vid_t dst, size_t data, timestamp_t ts, Allocator &alloc)
Definition: immutable_csr.h:387
std::shared_ptr< CsrEdgeIterBase > edge_iter_mut(vid_t v) override
Definition: immutable_csr.h:839
void open_in_memory(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:439
void open(const std::string &name, const std::string &snapshot_dir, const std::string &work_dir) override
Definition: immutable_csr.h:351
Definition: csr_base.h:127
void open(const std::string &name, const std::string &snapshot_dir, const std::string &work_dir) override
Definition: immutable_csr.h:804
void dump(const std::string &name, const std::string &new_snapshot_dir) override
Definition: immutable_csr.h:447
size_t size() const
Definition: mmap_array.h:415
void dump(const std::string &name, const std::string &new_snapshot_dir) override
Definition: immutable_csr.h:220
void open_with_hugepages(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:443
void batch_sort_by_edge_data(timestamp_t ts) override
Definition: immutable_csr.h:134
size_t edge_num() const override
Definition: immutable_csr.h:403
Definition: immutable_csr.h:494
vid_t get_neighbor() const override
Definition: immutable_csr.h:30
CsrConstEdgeIterBase * edge_iter_raw(vid_t v) const override
Definition: immutable_csr.h:645
void open_in_memory(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:547
std::shared_ptr< CsrEdgeIterBase > edge_iter_mut(vid_t v) override
Definition: immutable_csr.h:466
void batch_put_edge_with_index(vid_t src, vid_t dst, size_t data, timestamp_t ts) override
Definition: immutable_csr.h:700
void close() override
Definition: immutable_csr.h:859
EDATA_T data
Definition: nbr.h:50
size_t edge_num() const override
Definition: immutable_csr.h:263
void put_edge_with_index(vid_t src, vid_t dst, size_t data, timestamp_t ts, Allocator &alloc) override
Definition: immutable_csr.h:843
CsrConstEdgeIterBase * edge_iter_raw(vid_t v) const override
Definition: immutable_csr.h:274
void batch_put_edge(vid_t src, vid_t dst, const EDATA_T &data, timestamp_t ts) override
Definition: immutable_csr.h:127
ImmutableCsr(StringColumn &column)
Definition: immutable_csr.h:332
size_t edge_num() const override
Definition: immutable_csr.h:735
size_t batch_init_in_memory(const std::vector< int > °ree, double reserve_ratio=1.2) override
Definition: immutable_csr.h:341
std::shared_ptr< CsrEdgeIterBase > edge_iter_mut(vid_t v) override
Definition: immutable_csr.h:277
mmap_array< int > degree_list_
Definition: immutable_csr.h:321
void dump(const std::string &name, const std::string &new_snapshot_dir) override
Definition: immutable_csr.h:724
std::shared_ptr< CsrEdgeIterBase > edge_iter_mut(vid_t v) override
Definition: immutable_csr.h:746
ImmutableNbr< std::string_view > get_edge(vid_t i) const
Definition: immutable_csr.h:759
void open(const std::string &name, const std::string &snapshot_dir, const std::string &work_dir) override
Definition: immutable_csr.h:711
void resize(vid_t vnum) override
Definition: immutable_csr.h:824
size_t size() const override
Definition: immutable_csr.h:733
void copy_file(const std::string &src, const std::string &dst)
Definition: file_names.h:80
void next() override
Definition: immutable_csr.h:36
ImmutableCsr(Table &table)
Definition: immutable_csr.h:415
SingleImmutableCsr< size_t > csr_
Definition: immutable_csr.h:863
void resize(vid_t vnum) override
Definition: immutable_csr.h:617
void resize(vid_t vnum) override
Definition: immutable_csr.h:371
Definition: mmap_array.h:65
~ImmutableCsrConstEdgeIter()=default
std::string snapshot_dir(const std::string &work_dir, uint32_t version)
Definition: file_names.h:192
Definition: loading_config.h:232
timestamp_t unsorted_since() const override
Definition: immutable_csr.h:707
~SingleImmutableCsr()
Definition: immutable_csr.h:687
void warmup(int thread_num) const override
Definition: immutable_csr.h:729
void close() override
Definition: immutable_csr.h:484
ImmutableNbrSlice< EDATA_T > slice_t
Definition: immutable_csr.h:56
void dump(const std::string &name, const std::string &new_snapshot_dir) override
Definition: immutable_csr.h:364
void warmup(int thread_num) const override
Definition: immutable_csr.h:587
size_t batch_init_in_memory(const std::vector< int > °ree, double reserve_ratio) override
Definition: immutable_csr.h:695
void batch_sort_by_edge_data(timestamp_t ts) override
Definition: immutable_csr.h:798
mmap_array< nbr_t > nbr_list_
Definition: immutable_csr.h:676
void open_with_hugepages(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:813
SingleImmutableCsr< size_t > csr_
Definition: immutable_csr.h:770
void open_with_hugepages(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:194
void batch_put_edge_with_index(vid_t src, vid_t dst, size_t data, timestamp_t ts) override
Definition: immutable_csr.h:793
Any get_data() const override
Definition: immutable_csr.h:31
void open_with_hugepages(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:562
~ImmutableCsr()
Definition: immutable_csr.h:333
void open_with_hugepages(const std::string &filename, size_t capacity=0)
Definition: mmap_array.h:214
void close() override
Definition: immutable_csr.h:671
const nbr_t & get_edge(vid_t i) const
Definition: immutable_csr.h:673
std::shared_ptr< CsrConstEdgeIterBase > edge_iter(vid_t v) const override
Definition: immutable_csr.h:737
ImmutableNbr< RecordView > get_edge(vid_t i) const
Definition: immutable_csr.h:852
void batch_sort_by_edge_data(timestamp_t ts) override
Definition: immutable_csr.h:705
void warmup(int thread_num) const override
Definition: immutable_csr.h:822
CsrConstEdgeIterBase * edge_iter_raw(vid_t v) const override
Definition: immutable_csr.h:380
bool is_valid() const override
Definition: immutable_csr.h:44
void put_edge_with_index(vid_t src, vid_t dst, size_t index, timestamp_t ts, Allocator &alloc) override
Definition: immutable_csr.h:392
ImmutableCsrConstEdgeIter(const ImmutableNbrSlice< EDATA_T > &slice)
Definition: immutable_csr.h:26
void open_in_memory(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:356
SingleImmutableCsr(Table &table)
Definition: immutable_csr.h:779
int size() const
Definition: nbr.h:110
size_t batch_init(const std::string &name, const std::string &work_dir, const std::vector< int > °ree, double reserve_ratio) override
Definition: immutable_csr.h:502
void reset()
Definition: mmap_array.h:84
void batch_put_edge_with_index(vid_t src, vid_t dst, size_t data, timestamp_t ts=0) override
Definition: immutable_csr.h:346
timestamp_t unsorted_since() const override
Definition: immutable_csr.h:800
size_t size() const override
Definition: immutable_csr.h:373
void open_with_hugepages(const std::string &prefix, size_t v_cap) override
Definition: immutable_csr.h:360
ImmutableCsr< size_t > csr_
Definition: immutable_csr.h:407
slice_t get_edges(vid_t i) const override
Definition: immutable_csr.h:661
StringColumn & column_
Definition: immutable_csr.h:406
size_t size() const override
Definition: immutable_csr.h:45
void put_edge(vid_t src, vid_t dst, const EDATA_T &data, timestamp_t ts, Allocator &alloc) override
Definition: immutable_csr.h:281
size_t batch_init_in_memory(const std::vector< int > °ree, double reserve_ratio) override
Definition: immutable_csr.h:788
~SingleImmutableCsr()
Definition: immutable_csr.h:780
void close() override
Definition: immutable_csr.h:401
void warmup(int thread_num) const override
Definition: immutable_csr.h:244
std::shared_ptr< CsrConstEdgeIterBase > edge_iter(vid_t v) const override
Definition: immutable_csr.h:641
size_t batch_init_in_memory(const std::vector< int > °ree, double reserve_ratio) override
Definition: immutable_csr.h:93
slice_t get_edges(vid_t i) const override
Definition: immutable_csr.h:755
size_t batch_init_in_memory(const std::vector< int > °ree, double reserve_ratio=1.2) override
Definition: immutable_csr.h:424
void put_edge_with_index(vid_t src, vid_t dst, size_t index, timestamp_t ts, Allocator &alloc) override
Definition: immutable_csr.h:475