You are on page 1of 1

C ONTENTS

List of Figures viii

List of Tables ix
Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii

1 Introduction 1
1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Our contributions: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Preliminaries: the Graphics Processing Unit . . . . . . . . . . . . . . . . . . . 8
1.2.1 CUDA Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 GPU Memory Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.3 Warp-wide communications . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.4 CUDA Built-in intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Parallel Approaches to the String Matching Problem on the GPU 12


2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Prior work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.1 Serial Rabin-Karp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.2 Cooperative Rabin-Karp . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Divide-and-Conquer Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.1 Theoretical analysis with finite processors . . . . . . . . . . . . . . . . 20
2.4.2 Theoretical Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5 Summary of Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6 Implementation details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.6.1 Cooperative RK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.6.2 Divide-and-Conquer RK . . . . . . . . . . . . . . . . . . . . . . . . . 24

-iii-

You might also like