Gdel Hashing matt.might.net @mattmight Disclaimer simple, fun - - PowerPoint PPT Presentation

g del hashing
SMART_READER_LITE
LIVE PREVIEW

Gdel Hashing matt.might.net @mattmight Disclaimer simple, fun - - PowerPoint PPT Presentation

Gdel Hashing matt.might.net @mattmight Disclaimer simple, fun idea simple, fun idea works well in practice, simple, fun idea works well in practice, but theory says it will not. An old problem An


slide-1
SLIDE 1

Gödel Hashing

matt.might.net @mattmight

slide-2
SLIDE 2

Disclaimer

slide-3
SLIDE 3

“simple, fun idea”

slide-4
SLIDE 4

“simple, fun idea” “works well in practice,”

slide-5
SLIDE 5

“simple, fun idea” “works well in practice,” “but theory says it will not.”

slide-6
SLIDE 6

An old problem An older solution A big impact

slide-7
SLIDE 7

An old problem

slide-8
SLIDE 8

“CFA is slow!”

slide-9
SLIDE 9

An older solution

slide-10
SLIDE 10
slide-11
SLIDE 11

functional monotonic perfect compact dynamic incremental

Gödel hashing

Inspired by a true theorem.

slide-12
SLIDE 12

Word-level parallelism!

slide-13
SLIDE 13

Great cache behavior!

slide-14
SLIDE 14

A big impact

slide-15
SLIDE 15

Minutes of work

slide-16
SLIDE 16

2x

slide-17
SLIDE 17

2x5x

slide-18
SLIDE 18 2x5x8x
slide-19
SLIDE 19 2x5x8x100x
slide-20
SLIDE 20

Motivation

slide-21
SLIDE 21

(f x)

slide-22
SLIDE 22

f(x)

slide-23
SLIDE 23

What is ?

f

slide-24
SLIDE 24

Why not run the program?

slide-25
SLIDE 25

e

slide-26
SLIDE 26

e

slide-27
SLIDE 27

e

slide-28
SLIDE 28

e

What is f, here?

slide-29
SLIDE 29

e

What is f, here?

slide-30
SLIDE 30

...

e

slide-31
SLIDE 31

...

e

AAM

slide-32
SLIDE 32

e

...

slide-33
SLIDE 33

e

slide-34
SLIDE 34

e

slide-35
SLIDE 35

Problem

slide-36
SLIDE 36
slide-37
SLIDE 37 ˆ ς1
slide-38
SLIDE 38
slide-39
SLIDE 39
slide-40
SLIDE 40

v

slide-41
SLIDE 41

v

slide-42
SLIDE 42

v

ˆ ς1

ˆ ς2

slide-43
SLIDE 43

ˆ ς1 = (e, ˆ

ρ, ˆ σ, ˆ κ)

ˆ σ

slide-44
SLIDE 44

ˆ ς1

expression environment store stack

= (e, ˆ ρ, ˆ σ, ˆ κ)

ˆ σ

slide-45
SLIDE 45

ˆ ς1

expression environment store stack

= (e, ˆ ρ, ˆ σ, ˆ κ)

ˆ σ

slide-46
SLIDE 46

ˆ σ : [

Addr → P(\ Value) [ Addr (\ Value)

slide-47
SLIDE 47

[ Addr (\ Value)

slide-48
SLIDE 48
slide-49
SLIDE 49
slide-50
SLIDE 50 (\ Value) [ Addr
slide-51
SLIDE 51
slide-52
SLIDE 52
slide-53
SLIDE 53
slide-54
SLIDE 54
slide-55
SLIDE 55
slide-56
SLIDE 56
slide-57
SLIDE 57
slide-58
SLIDE 58
slide-59
SLIDE 59
slide-60
SLIDE 60

First: Hash sets

slide-61
SLIDE 61

Prime decomposition

slide-62
SLIDE 62
slide-63
SLIDE 63
slide-64
SLIDE 64

Primes

p1 p2 p3 p4
slide-65
SLIDE 65

Primes

p1 p2 p3 p4
slide-66
SLIDE 66 p3 p4
slide-67
SLIDE 67

p3 p4

slide-68
SLIDE 68

p3 p4

×

slide-69
SLIDE 69

{ } ,

slide-70
SLIDE 70

{ } ,

slide-71
SLIDE 71

⊆ A B

slide-72
SLIDE 72

A B [ [ ] ] [ [ ] ] mod = 0

slide-73
SLIDE 73

A B ∩

slide-74
SLIDE 74

A B [ [ ] ] [ [ ] ] ( , ) gcd

slide-75
SLIDE 75

A B [ [ ] ] [ [ ] ] lcm( , )

slide-76
SLIDE 76

A B ∪

slide-77
SLIDE 77

A B ∪ A

slide-78
SLIDE 78

A B − A

slide-79
SLIDE 79

A B [ [ ] ] [ [ ] ] ( , ) gcd A / [ [ ] ]

slide-80
SLIDE 80

slide-81
SLIDE 81
slide-82
SLIDE 82

> ⊥

slide-83
SLIDE 83

> ⊥

prime basis

slide-84
SLIDE 84

n = p1 p2 p3

m1 m2 m3 . . .

slide-85
SLIDE 85

n = { } , , G

slide-86
SLIDE 86

slide-87
SLIDE 87

slide-88
SLIDE 88

slide-89
SLIDE 89

slide-90
SLIDE 90

slide-91
SLIDE 91

slide-92
SLIDE 92

slide-93
SLIDE 93
slide-94
SLIDE 94 p1 p3 p4
slide-95
SLIDE 95 p1 p3 p4
slide-96
SLIDE 96

t x y

slide-97
SLIDE 97

[ [ ] ] [ [ ] ] lcm( , ) x y

slide-98
SLIDE 98

v x y

slide-99
SLIDE 99

[ [ ] ] [ [ ] ] mod = 0 x y

slide-100
SLIDE 100

u x y

slide-101
SLIDE 101

[ [ ] ] [ [ ] ] ( , ) gcd x y

slide-102
SLIDE 102

But, does it work for CFA?

slide-103
SLIDE 103

ˆ σ : [

Addr → P(\ Value) [ Addr (\ Value)

slide-104
SLIDE 104

[ Addr (\ Value)

slide-105
SLIDE 105

{ } { } ˆ a1 ˆ a2 , , ˆ v1 ˆ v2 ˆ a1 ˆ a2 ˆ v1 ˆ v2 { } { }

slide-106
SLIDE 106

{ } { } ˆ a1 ˆ a2 ˆ v1 ˆ v2 ˆ a1 ˆ a2 ˆ v1 ˆ v2 { } { } [ [ [ [ ] ] ] ] 7! 7! 7! 7!

slide-107
SLIDE 107

has a prime basis.

L1 L2 has a prime basis.

slide-108
SLIDE 108

has a prime basis.

L1 L2 has a prime basis. ×

slide-109
SLIDE 109

has a prime basis.

L1 L2 has a prime basis. ×

slide-110
SLIDE 110

has a prime basis.

L2 has a prime basis. X →

slide-111
SLIDE 111

What else?

slide-112
SLIDE 112

{ [ [ ] ] } a b ,

n m

[ [ ] ]

slide-113
SLIDE 113

[ [ ] ] a b

n m

[ [ ] ]

slide-114
SLIDE 114

⊆ A B

slide-115
SLIDE 115

A B [ [ ] ] [ [ ] ] mod = 0

slide-116
SLIDE 116

A B ∪

slide-117
SLIDE 117

A B [ [ ] ] [ [ ] ] ×

slide-118
SLIDE 118

h i [ [ [ [ ] ] ] ] a b c , , [ [ ] ]

slide-119
SLIDE 119

a

b c

[ [ ]

]

[ [ ]

]

[ [ ]

]

p1 p2 p3

slide-120
SLIDE 120

Wait a minute...

slide-121
SLIDE 121

gcd is O(n2)

slide-122
SLIDE 122

is O(n2)

mod

slide-123
SLIDE 123

How is this more efficient?

slide-124
SLIDE 124
slide-125
SLIDE 125
slide-126
SLIDE 126

are sparse. Flow sets

slide-127
SLIDE 127

99% of flow sets: < 5 values

slide-128
SLIDE 128

Median flow set: 2 values

slide-129
SLIDE 129

Primes are dense.

slide-130
SLIDE 130

U

slide-131
SLIDE 131

U lnU

slide-132
SLIDE 132

1,000,000 abstract values?

slide-133
SLIDE 133

23 bit prime

slide-134
SLIDE 134

Most flow sets fit in a word. Most

slide-135
SLIDE 135

Most of the time, . Most

n = 1

slide-136
SLIDE 136

If not, great locality.

slide-137
SLIDE 137

4-6%

slide-138
SLIDE 138 2x5x8x100x
slide-139
SLIDE 139

Programming is about making choices.

slide-140
SLIDE 140

E 3 ‘s E

slide-141
SLIDE 141

Elegance Efficacy Efficiency E E E

slide-142
SLIDE 142

Pick any two Programmers: two

slide-143
SLIDE 143

Functional Programmers: Pick any two three

slide-144
SLIDE 144

Questions?

slide-145
SLIDE 145

Algebraic data types?

slide-146
SLIDE 146

deriving (Hashable)

slide-147
SLIDE 147
slide-148
SLIDE 148

p1 p2 p3 p4 p5

slide-149
SLIDE 149

p1 p2 p3 p4 p5

slide-150
SLIDE 150
slide-151
SLIDE 151