Multi-core Hash Joins
Main-memory hash join implementations for multi-core CPUs
prj_params.h
Go to the documentation of this file.
1
11#ifndef PRJ_PARAMS_H
12#define PRJ_PARAMS_H
13
15#ifndef NUM_RADIX_BITS
16#define NUM_RADIX_BITS 18
17#endif
18
20#ifndef NUM_PASSES
21#define NUM_PASSES 2
22#endif
23
25#ifndef PROBE_BUFFER_SIZE
26#define PROBE_BUFFER_SIZE 4
27#endif
28
33/* #define USE_SWWC_OPTIMIZED_PART 1 */
34
42#ifndef CACHE_LINE_SIZE
43#define CACHE_LINE_SIZE 64
44#endif
45
47#ifndef L1_CACHE_SIZE
48#define L1_CACHE_SIZE 32768
49#endif
50
52#ifndef L1_ASSOCIATIVITY
53#define L1_ASSOCIATIVITY 8
54#endif
55
57#define L1_CACHE_TUPLES (L1_CACHE_SIZE/sizeof(tuple_t))
58
60// #ifndef SKEW_HANDLING
61// #define SKEW_HANDLING 0
62// #endif
63#define THRESHOLD1(NTHR) (NTHR*L1_CACHE_TUPLES)
64#define THRESHOLD2(NTHR) (NTHR*NTHR*L1_CACHE_TUPLES)
65
75#define PASS1RADIXBITS (NUM_RADIX_BITS/NUM_PASSES)
76#define PASS2RADIXBITS (NUM_RADIX_BITS-(NUM_RADIX_BITS/NUM_PASSES))
77
78/* num-parts at pass-1 */
79#define FANOUT_PASS1 (1 << (NUM_RADIX_BITS/NUM_PASSES)) //(1<<PASS1RADIXBITS)
80/* num-parts at pass-1 */
81#define FANOUT_PASS2 (1 << (NUM_RADIX_BITS-(NUM_RADIX_BITS/NUM_PASSES))) //(1<<PASS2RADIXBITS)
82
83
88#define SMALL_PADDING_TUPLES (3 * CACHE_LINE_SIZE/sizeof(tuple_t))
89#define PADDING_TUPLES (SMALL_PADDING_TUPLES*(FANOUT_PASS2+1))
90
92#define RELATION_PADDING (PADDING_TUPLES*FANOUT_PASS1*sizeof(tuple_t))
93
97#endif /* PRJ_PARAMS_H */