|
1 | 1 | # Scal
|
2 | 2 |
|
3 |
| -The Scal framework provides implementations and benchmarks for concurrent |
4 |
| -objects. The benchmarks show the trade-off between concurrent data structure |
5 |
| -semantics and scalability. |
6 | 3 |
|
7 |
| -Homepage: http://scal.cs.uni-salzburg.at |
| 4 | +Scal is an open-source benchmarking framework that provides (1) software infrastructure for executing concurrent data structure algorithms, (2) workloads for benchmarking their performance and scalability, and (3) implementations of a large set of concurrent data structures. |
| 5 | + |
| 6 | +Homepage: http://scal.cs.uni-salzburg.at <br> |
| 7 | +Paper: [Scal: A Benchmarking Suite for Concurrent Data Structures](./paper.pdf) |
| 8 | + |
| 9 | + |
| 10 | +## Data structures |
| 11 | + |
| 12 | +| Name | Semantics | Year | Ref | |
| 13 | +|-----------|:-----:|:-----:|:-----:| |
| 14 | +[Lock-based Singly-linked List Queue](./src/datastructures/lockbased_queue.h) | strict queue | 1968 | [[1]](#ref-knuth-1997) |
| 15 | +[Michael Scott (MS) Queue](./src/datastructures/ms_queue.h) | strict queue | 1996 | [[2]](#ref-michael-1996) |
| 16 | +[Flat Combining Queue](./src/datastructures/flatcombining_queue.h) | strict queue | 2010 | [[3]](#ref-hendler-2010) |
| 17 | +[Wait-free Queue](./src/datastructures/wf_queue_ppopp12.h) | strict queue | 2012 | [[4]](#ref-kogan-2012) |
| 18 | +[Linked Cyclic Ring Queue (LCRQ)](./src/datastructures/lcrq.h) | strict queue | 2013 | [[5]](#ref-morrison-2013) |
| 19 | +[Timestamped (TS) Queue](./src/datastructures/ts_queue.h) | strict queue | 2015 | [[6]](#ref-dodds-2015) |
| 20 | +[Cooperative TS Queue](./src/datastructures/cts_queue.h) | strict queue | 2015 | [[7]](#ref-haas-2015-1) |
| 21 | +[Segment Queue](./src/datastructures/segment_queue.h) | k-relaxed queue | 2010 | [[8]](#ref-afek-2010) |
| 22 | +[Random Dequeue (RD) Queue](./src/datastructures/random_dequeue_queue.h) | k-relaxed queue | 2010 | [[8]](#ref-afek-2010) |
| 23 | +[Bounded Size k-FIFO Queue](./src/datastructures/boundedsize_kfifo.h) | k-relaxed queue, pool | 2013 | [[9]](#ref-kirsch-2013) |
| 24 | +[Unbounded Size k-FIFO Queue](./src/datastructures/unboundedsize_kfifo.h) | k-relaxed queue, pool | 2013 | [[9]](#ref-kirsch-2013) |
| 25 | +[b-RR](./src/datastructures/balancer_partrr.h) [Distributed](./src/datastructures/distributed_data_structure.h) [Queue (DQ)](./src/datastructures/ms_queue.h) | k-relaxed queue, pool | 2013 | [[10]](#ref-haas-2013) |
| 26 | +Least-Recently-Used (LRU) DQ | k-relaxed queue, pool | 2013 | [[10]](#ref-haas-2013) |
| 27 | +[Locally Linearizable](./src/datastructures/balancer_local_linearizability.h) [DQ](./src/datastructures/ms_queue.h) <br>([static](./src/datastructures/distributed_data_structure.h), [dynamic](./src/datastructures/dyn_distributed_data_structure.h)) | locally linearizable queue, pool | 2015 | [[11]](#ref-haas-2015-2) |
| 28 | +[Locally Linearizable k-FIFO Queue](./src/datastructures/unboundedsize_kfifo.h) | locally linearizable queue <br> k-relaxed queue, pool | 2015 | [[11]](#ref-haas-2015-2) |
| 29 | +[Relaxed TS Queue](./src/datastructures/rts_queue.h) | quiescently consistent <br> queue (conjectured) | 2015 | [[7]](#ref-haas-2015-1) |
| 30 | +[Lock-based Singly-linked List Stack](scal/src/datastructures/lockbased_stack.h) | strict stack | 1968 | [[1]](#ref-knuth-1997) |
| 31 | +[Treiber Stack](./src/datastructures/treiber_stack.h) | strict stack | 1986 | [[12]](#ref-treiber-1986) |
| 32 | +[Elimination-backoff Stack](./src/datastructures/elimination_backoff_stack.h) | strict stack | 2004 | [[13]](#ref-hendler-2004) |
| 33 | +[Timestamped (TS) Stack](./src/datastructures/ts_stack.h) | strict stack | 2015 | [[6]](#ref-dodds-2015) |
| 34 | +[k-Stack](./src/datastructures/kstack.h) | k-relaxed stack | 2013 | [[14]](#ref-henzinger-2013) |
| 35 | +[b-RR](./src/datastructures/balancer_partrr.h) [Distributed](./src/datastructures/distributed_data_structure.h) [Stack (DS)](./src/datastructures/treiber_stack.h) | k-relaxed stack, pool | 2013 | [[10]](#ref-haas-2013) |
| 36 | +Least-Recently-Used (LRU) DS | k-relaxed stack, pool | 2013 | [[10]](#ref-haas-2013) |
| 37 | +[Locally Linearizable](./src/datastructures/balancer_local_linearizability.h) [DS](./src/datastructures/treiber_stack.h) <br>([static](./src/datastructures/distributed_data_structure.h), [dynamic](./src/datastructures/dyn_distributed_data_structure.h)) | locally linearizable stack, pool | 2015 | [[11]](#ref-haas-2015-2) |
| 38 | +[Locally Linearizable k-Stack](./src/datastructures/kstack.h) | locally linearizable stack <br> k-relaxed queue, pool | 2015 | [[11]](#ref-haas-2015-2) |
| 39 | +[Timestamped (TS) Deque](./src/datastructures/ts_deque.h) | strict deque (conjectured) | 2015 | [[7]](#ref-haas-2015-1) |
| 40 | +[d-RA](./src/datastructures/balancer_1random.h) [DQ](./src/datastructures/ms_queue.h) and [DS](./src/datastructures/treiber_stack.h) | strict pool | 2013 | [[10]](#ref-haas-2013) |
8 | 41 |
|
9 | 42 | ## Dependencies
|
10 | 43 |
|
@@ -73,6 +106,38 @@ And for Distributed Queue with a 1-random balancer:
|
73 | 106 |
|
74 | 107 | Try `./prodcon-<data_structure> --help` to see the full list of available parameters.
|
75 | 108 |
|
| 109 | + |
| 110 | +## References |
| 111 | + |
| 112 | +1. <a name="ref-knuth-1997"></a>D. E. Knuth. *The Art of Computer Programming, Volume 1 (3rd Ed.): Fundamental Algorithms.* Addison Wesley, Redwood City, CA, USA, 1997. |
| 113 | + |
| 114 | +2. <a name="ref-michael-1996"></a>M.M. Michael and M.L. Scott. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In *Proc. Symposium on Principles of Distributed Computing (PODC)*, pages 267–275. ACM, 1996. |
| 115 | + |
| 116 | +3. <a name="ref-hendler-2010"></a>D. Hendler, I. Incze, N. Shavit, and M. Tzafrir. Flat combining and the synchronization-parallelism tradeoff. In *Proc. Symposium on Parallelism in Algorithms and Architectures (SPAA)*, pages 355–364. ACM, 2010. |
| 117 | + |
| 118 | +4. <a name="ref-kogan-2012"></a>A. Kogan and E. Petrank. A methodology for creating fast wait-free data structures. In *Proc. Symposium on Principles and Practice of Parallel Programming (PPoPP)*, pages 141–150. ACM, 2012. |
| 119 | + |
| 120 | +5. <a name="ref-morrison-2013"></a>A. Morrison and Y. Afek. Fast concurrent queues for x86 processors. In *Proc. Symposium on Principles and Practice of Parallel Programming (PPoPP)*, pages 103–112. ACM, 2013. |
| 121 | + |
| 122 | +6. <a name="ref-dodds-2015"></a>M. Dodds, A. Haas, and C.M. Kirsch. A scalable, correct time-stamped stack. In *Proc. Symposium on Principles of Programming Languages (POPL)*, pages 233– 246. ACM, 2015. |
| 123 | + |
| 124 | +7. <a name="ref-haas-2015-1"></a>A. Haas. *Fast Concurrent Data Structures Through Timestamping.* PhD thesis, University of Salzburg, Salzburg, Austria, 2015. |
| 125 | + |
| 126 | +8. <a name="ref-afek-2010"></a>Y. Afek, G. Korland, and E. Yanovsky. Quasi-linearizability: Relaxed consistency for improved concurrency. In *Proc. Conference on Principles of Distributed Systems (OPODIS)*, pages 395–410. Springer, 2010. |
| 127 | + |
| 128 | +9. <a name="ref-kirsch-2013"></a>C.M. Kirsch, M. Lippautz, and H. Payer. Fast and scalable, lock-free k-fifo queues. In *Proc. International Conference on Parallel Computing Technologies (PaCT)*, LNCS, pages 208–223. Springer, 2013. |
| 129 | + |
| 130 | +10. <a name="ref-haas-2013"></a>A. Haas, T.A. Henzinger, C.M. Kirsch, M. Lippautz, H. Payer, A. Sezgin, and A. Sokolova. Distributed queues in shared memory—multicore performance and scalability through quantitative relaxation. In *Proc. International Conference on Computing Frontiers (CF)*. ACM, 2013. |
| 131 | + |
| 132 | +11. <a name="ref-haas-2015-2"></a>A. Haas, T.A. Henzinger, A.Holzer, C.M. Kirsch, M. Lippautz, H. Payer, A. Sezgin, A. Sokolova, and H. Veith. Local linearizability. *CoRR*, abs/1502.07118, 2015. |
| 133 | + |
| 134 | +12. <a name="ref-treiber-1986"></a>R.K. Treiber. Systems programming: Coping with parallelism. Technical Report RJ-5118, IBM Research Center, 1986. |
| 135 | + |
| 136 | +13. <a name="ref-hendler-2004"></a>D. Hendler, N. Shavit, and L. Yerushalmi. A scalable lock-free stack algorithm. In *Proc. Symposium on Parallelism in Algorithms and Architectures (SPAA)*, pages 206–215. ACM, 2004. |
| 137 | + |
| 138 | +14. <a name="ref-henzinger-2013"></a>T.A. Henzinger, C.M. Kirsch, H. Payer, A. Sezgin, and A. Sokolova. Quantitative relaxation of concurrent data structures. In *Proc. Symposium on Principles of Programming Languages (POPL)*, pages 317–328. ACM, 2013. |
| 139 | + |
| 140 | + |
76 | 141 | ## License
|
77 | 142 |
|
78 | 143 | Copyright (c) 2012-2013, the Scal Project Authors.
|
|
0 commit comments