Multi-core Hash Joins
Main-memory hash join implementations for multi-core CPUs
Macros
System Parameters

Macros

#define CACHE_LINE_SIZE   64
 
#define L1_CACHE_SIZE   32768
 
#define L1_ASSOCIATIVITY   8
 
#define L1_CACHE_TUPLES   (L1_CACHE_SIZE/sizeof(tuple_t))
 
#define THRESHOLD1(NTHR)   (NTHR*L1_CACHE_TUPLES)
 
#define THRESHOLD2(NTHR)   (NTHR*NTHR*L1_CACHE_TUPLES)
 
#define PASS1RADIXBITS   (NUM_RADIX_BITS/NUM_PASSES)
 
#define PASS2RADIXBITS   (NUM_RADIX_BITS-(NUM_RADIX_BITS/NUM_PASSES))
 
#define FANOUT_PASS1   (1 << (NUM_RADIX_BITS/NUM_PASSES))
 
#define FANOUT_PASS2   (1 << (NUM_RADIX_BITS-(NUM_RADIX_BITS/NUM_PASSES)))
 
#define SMALL_PADDING_TUPLES   (3 * CACHE_LINE_SIZE/sizeof(tuple_t))
 
#define PADDING_TUPLES   (SMALL_PADDING_TUPLES*(FANOUT_PASS2+1))
 
#define RELATION_PADDING   (PADDING_TUPLES*FANOUT_PASS1*sizeof(tuple_t))
 

Detailed Description

Whether to use software write-combining optimized partitioning, see –enable-optimized-part config option

Various system specific parameters such as cache/cache-line sizes, associativity, etc.

Macro Definition Documentation

◆ CACHE_LINE_SIZE

#define CACHE_LINE_SIZE   64

L1 cache parameters.

Note
Change as needed for different machines

Definition at line 43 of file prj_params.h.

◆ FANOUT_PASS1

#define FANOUT_PASS1   (1 << (NUM_RADIX_BITS/NUM_PASSES))

Definition at line 79 of file prj_params.h.

◆ FANOUT_PASS2

#define FANOUT_PASS2   (1 << (NUM_RADIX_BITS-(NUM_RADIX_BITS/NUM_PASSES)))

Definition at line 81 of file prj_params.h.

◆ L1_ASSOCIATIVITY

#define L1_ASSOCIATIVITY   8

L1 associativity

Definition at line 53 of file prj_params.h.

◆ L1_CACHE_SIZE

#define L1_CACHE_SIZE   32768

L1 cache size

Definition at line 48 of file prj_params.h.

◆ L1_CACHE_TUPLES

#define L1_CACHE_TUPLES   (L1_CACHE_SIZE/sizeof(tuple_t))

number of tuples fitting into L1

Definition at line 57 of file prj_params.h.

◆ PADDING_TUPLES

#define PADDING_TUPLES   (SMALL_PADDING_TUPLES*(FANOUT_PASS2+1))

Definition at line 89 of file prj_params.h.

◆ PASS1RADIXBITS

#define PASS1RADIXBITS   (NUM_RADIX_BITS/NUM_PASSES)

}

Definition at line 75 of file prj_params.h.

◆ PASS2RADIXBITS

#define PASS2RADIXBITS   (NUM_RADIX_BITS-(NUM_RADIX_BITS/NUM_PASSES))

Definition at line 76 of file prj_params.h.

◆ RELATION_PADDING

#define RELATION_PADDING   (PADDING_TUPLES*FANOUT_PASS1*sizeof(tuple_t))
Warning
This padding must be allocated at the end of relation

Definition at line 92 of file prj_params.h.

◆ SMALL_PADDING_TUPLES

#define SMALL_PADDING_TUPLES   (3 * CACHE_LINE_SIZE/sizeof(tuple_t))

Put an odd number of cache lines between partitions in pass-2: Here we put 3 cache lines.

Definition at line 88 of file prj_params.h.

◆ THRESHOLD1

#define THRESHOLD1 (   NTHR)    (NTHR*L1_CACHE_TUPLES)

thresholds for skewed partitions in 3-phase parallel join

Definition at line 63 of file prj_params.h.

◆ THRESHOLD2

#define THRESHOLD2 (   NTHR)    (NTHR*NTHR*L1_CACHE_TUPLES)

Definition at line 64 of file prj_params.h.