• Stars
    star
    112
  • Rank 312,160 (Top 7 %)
  • Language
    C++
  • License
    MIT License
  • Created almost 6 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Rapids团队 (https://github.com/CheYulin , https://github.com/shixuansun and https://github.com/WANG-lp), Engine Race (Key-Value Store on Intel Optane SSD, https://tianchi.aliyun.com/competition/entrance/231689/rankingList/1 ),线上成绩413.69s, 排名第1

Disclaimer

此项目仅供学习与交流使用,请遵循MIT协议,如果您在任何项目中使用相关代码,请保留此项目的LICENSE文件。

文档

说明 文件
Code-Review documents/code-review.md
比赛攻略 documents/contest_summary_toc.md
PDF-比赛攻略 release-pdf-documents/Rapids-Contest-Summary.pdf
PDF-答辩PPT release-pdf-documents/Rapids-Defense-PPT.pdf

目录结构

项目代码在两个目录中 engine_raceplayground。 浏览代码可以用clion打开项目看。

KV-DB引擎实现的代码

文件 说明
engine_race/barrier.h 可以重复使用的barrier,通过generation来支持
engine_race/blocking_queue.h 简单的blocking-queue实现 (没有任何性能考虑的)
engine_race/concurrentqueue.h, engine_race/blockingconcurrentqueue.h 工业级别的blocking-queue实现 cameron314/concurrentqueue,具体使用参考两个文件中的license
engine_race/file_util.h 文件相关的封装
engine_race/util.h 统计性能调优的信息: dstat, iostat, 内存占用; 打印timestamp和对应代码行位置util
engine_race/log.h, engine_race/log.cc log工具, 稍做修改
engine_race/engine_race.h, engine_race/engine_race.cc KV-DB具体实现
  • 曾经使用的文件
文件 说明
engine_race/thread_pool.h 简单的线程池实现 progschj/ThreadPool, 在之前版本中使用, 后来改用std::thread, std::promise, std::future代替了
engine_race/sparsepp 高效的sparese hashmap实现,特点: 空间占用少, greg7mdp/sparsepp
  • 官方头文件

请见include, 主要有enginepolar_string的定义。

测试的代码

文件 说明
playground/test_engine.cpp 测试代码, 三阶段分别使用不同的omp线程池

官方的样例代码

目录 说明
engine_example 官方样例主要代码
test 官方样例测试代码

Cmake Config文件

文件 说明
CMakeLists.txt 根cmakelist
playground/CMakeLists.txt playground cmakelist

本地测试使用

mkdir build && cd build 
cmake ..
make -j
./playground/test_engine_nonoff        

官方的Makefile build

请见Makefileengine_race/Makefile, 生成的静态链接库在./lib目录下。

make -C . TARGET_ENGINE=engine_race

最终线上效果

  • 历史最佳成绩: 413.69 seconds

  • 进程elapsed time

写入进程的历史最佳状态: 114.1 seconds左右
读取进程的历史最佳状态: 105.9 seconds左右 (包括0.2 seconds index构建)
Range进程的历史最佳状态: 192.1 seconds左右 (包括0.2 seconds index构建)
  • 进程启动间隔
写入启动的间隔: 0.1 seconds 左右
写入到读取的间隔: 0.35 seconds左右
读取到Range的间隔: 0.45 seconds左右

More Repositories

1

CommunityDetectionCodes

Some overlapping community detection algorithms (Until 2016). by Yulin Che (https://github.com/CheYulin) for the PhD qualification exam (survey on community detection algorithms)
C++
203
star
2

SubgraphMatching

In-Memory Subgraph Matching: An In-depth Study by Dr. Shixuan Sun and Prof. Qiong Luo
C++
143
star
3

ContinuousSubgraphMatching

Source code and datasets of "An In-Depth Study of Continuous Subgraph Matching", accepted by VLDB'22 - By Xibo Sun, Dr. Shixuan Sun, Prof. Qiong Luo, and Prof. Bingsheng He
C++
40
star
4

RapidMatch

Source code and datasets of "RapidMatch: A Holistic Approach to Subgraph Query Processing", accepted by VLDB'21 - By Shixuan Sun, Xibo Sun, Yulin Che, Prof. Qiong Luo, and Prof. Bingsheng He
C++
34
star
5

ppSCAN

ppSCAN: Parallelizing Pruning-based Graph Structural Clustering (ICPP'18) - by Yulin Che, Shixuan Sun and Prof. Qiong Luo
C++
30
star
6

RapidEC

Source code of "GPU-accelerated elliptic curve digital signature algorithms", accepted by SC'22 - by Zonghao Feng, Qipeng Xie, Qiong Luo, etc.
Cuda
22
star
7

SubgraphContainment

Scaling Up Subgraph Query Processing with Efficient Subgraph Matching by Shixuan Sun and Dr. Qiong Luo
C++
17
star
8

EGSM

Source code and datasets of "Efficient GPU-Accelerated Subgraph Matching", accepted by SIGMOD'23 - By Xibo Sun and Prof. Qiong Luo
Cuda
14
star
9

AccTrussDecomposition

Source code of "Accelerating Truss Decomposition on Heterogeneous Processors", accepted by VLDB'20 - By Yulin Che, Zhuohang Lai, Shixuan Sun, Yue Wang, and Prof. Qiong Luo
C++
14
star
10

SimRank

1) SimRank (single pair query, parallel all pair computation / dynamic updates) - by Yue Wang (https://github.com/KeithYue) and Yulin Che (https://github.com/CheYulin). 2) top-k version (https://github.com/CheYulin/SimRank/tree/develop) by Yue Wang and Zonghao Feng (https://github.com/unisolate)
C++
14
star
11

Graph500KroneckerGraphGenerator

Kronecker Graph Generator (Forked from Graph500, supporting a binary edge list format)
C
10
star
12

PrimitivesAndGraphProcessing-GPU

Survey of Primitives and Graph Processing on GPUs (Until 2016) - by Yulin Che (https://github.com/CheYulin)
10
star
13

DBGC

Source code of "Density-Based Geometry Compression for LiDAR Point Clouds", accepted by EDBT'23 - By Xibo Sun and Prof. Qiong Luo
C++
7
star
14

UNIPAR

UNItig construction in PARallel with CPUs and GPUs
Cuda
6
star
15

hga

Heterogeneous Graph Aligner
Cuda
6
star
16

LIGHT

Source code of "Efficient Parallel Subgraph Enumeration on a Single Machine (ICDE2019)" by Shixuan Sun, Yulin Che, Lipeng Wang and Qiong Luo
C++
6
star
17

VIC-DDPM

source code for paper 'A Conditional Denoising Diffusion Probabilistic Model for Radio Interferometric Image Reconstruction'
Python
6
star
18

pow-bench

Source code of "Evaluating Memory-Hard Proof-of-Work Algorithms on Three Processors", accepted by VLDB'20 - By Zonghao Feng and Qiong Luo
C
5
star
19

AccMultiwayJoins

Source code of "Accelerating Multi-way Joins on the GPU", accepted by VLDBJ'22 - By Dr. Zhuohang Lai, Xibo Sun, Prof. Qiong Luo, and Xiaolong Xie
Cuda
5
star
20

GraphReorderAndConverter

Graph Reorder And Converter (e.g, Parallel OpenMP Implementation of Edge List to CSR with Sorted Neighbors) - by Yulin Che (https://github.com/CheYulin)
C++
5
star
21

cuGridder

Source code of "Efficient Radio Interferometric Imaging on the GPU", accepted by eScience'22 - By Honghao Liu, Qiong Luo, and Feng Wang
Cuda
4
star
22

PolarRec

Source code of 'PolarRec: Improving Radio Interferometric Data Reconstruction Using Polar Coordinates', CVPR'24 accepted. By Ruoqi Wang, Zhuoyang Chen, Jiayi Zhu, Qiong Luo, Feng Wang
Python
4
star
23

manymap

Accelerating Long Read Alignment on Three Processors
C++
3
star
24

KroneckerBinEdgeListToCSR

Parallel Kronecker Binary EdgeList (*.bin) To CSR (Lijun Chang's Format: b_adj.bin, b_degree.bin), Graph Statistics: Parallel TC/Core/DODG Analytics
C++
2
star
25

TriangleCounting

Triangle Counting (DataFoutain, 三角形图计算算法设计及性能优化, top 11)
C
2
star
26

AccTriCnt

Accelerating All-Edge Common Neighbor Counting on Three Processors (ICPP'19) - By Yulin Che, Zhuohang Lai, Shixuan Sun, Prof. Qiong Luo and Yue Wang
C++
2
star
27

mic_bc

Betweenness centrality on Intel Xeon Phi
C++
2
star
28

SyntheticGraphBenchmark

Synthetic Graph Generator (LFR Benchmark, 2009)
C++
1
star
29

Efficient-DPP

Data-parallel primitives implementations in OpenCL their native code versions
Cuda
1
star
30

EngineRace

Engine Race (Key-Value Store for Intel Optane SSD) - By Rapids团队 (https://github.com/CheYulin & https://github.com/shixuansun & https://github.com/WANG-lp)
C++
1
star