-
Notifications
You must be signed in to change notification settings - Fork 0
/
my_thesis.toc
89 lines (89 loc) · 6.97 KB
/
my_thesis.toc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
\select@language {english}
\contentsline {chapter}{Abstract}{i}{chapter*.2}
\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}
\contentsline {chapter}{Introduction}{1}{chapter.1}
\contentsline {section}{\numberline {1.1}Sparse Data is Very Common in Machine Learning}{1}{section.1.1}
\contentsline {section}{\numberline {1.2}The Advantages of Sparse Data}{1}{section.1.2}
\contentsline {subsection}{\numberline {1.2.1}A Real Case of Sparse Dataset}{2}{subsection.1.2.1}
\contentsline {section}{\numberline {1.3}Solution: Sparse Representation and Operations}{2}{section.1.3}
\contentsline {chapter}{\numberline {2}Sparsity and Formats}{3}{chapter.2}
\contentsline {section}{\numberline {2.1}Definition}{3}{section.2.1}
\contentsline {section}{\numberline {2.2}Formats}{3}{section.2.2}
\contentsline {subsection}{\numberline {2.2.1}Matrices}{3}{subsection.2.2.1}
\contentsline {subsubsection}{Coordinates Format}{3}{subsection.2.2.1}
\contentsline {subsubsection}{Compressed Row Format}{4}{figure.caption.5}
\contentsline {subsubsection}{Compressed Column Format}{4}{figure.caption.6}
\contentsline {subsection}{\numberline {2.2.2}Tensors - Multi-dimensional arrays}{5}{subsection.2.2.2}
\contentsline {subsubsection}{Coordinates Format}{5}{subsection.2.2.2}
\contentsline {chapter}{\numberline {3}The Deeplearning4j Library}{7}{chapter.3}
\contentsline {section}{\numberline {3.1}Architecture of the library}{7}{section.3.1}
\contentsline {section}{\numberline {3.2}The Importance of Nd4j in the Library}{7}{section.3.2}
\contentsline {section}{\numberline {3.3}Nd4j Needs a Sparse Representation}{8}{section.3.3}
\contentsline {chapter}{\numberline {4}Structure of an Multi-dimensional Array}{9}{chapter.4}
\contentsline {section}{\numberline {4.1}Storing an Array}{9}{section.4.1}
\contentsline {subsection}{\numberline {4.1.1}Data Buffer}{10}{subsection.4.1.1}
\contentsline {subsection}{\numberline {4.1.2}Parameters of an Array}{10}{subsection.4.1.2}
\contentsline {section}{\numberline {4.2}Views}{10}{section.4.2}
\contentsline {section}{\numberline {4.3}Indexes}{11}{section.4.3}
\contentsline {section}{\numberline {4.4}Operations}{12}{section.4.4}
\contentsline {chapter}{\numberline {5}Implementation}{13}{chapter.5}
\contentsline {section}{\numberline {5.1}Hierarchy of Arrays}{13}{section.5.1}
\contentsline {section}{\numberline {5.2}Limitations and Constraints}{14}{section.5.2}
\contentsline {subsection}{\numberline {5.2.1}Storing Off-heap}{14}{subsection.5.2.1}
\contentsline {subsection}{\numberline {5.2.2}Workspaces}{14}{subsection.5.2.2}
\contentsline {subsection}{\numberline {5.2.3}DataBuffer Length}{15}{subsection.5.2.3}
\contentsline {section}{\numberline {5.3}CSR Matrices Implementation}{16}{section.5.3}
\contentsline {subsection}{\numberline {5.3.1}Structure}{16}{subsection.5.3.1}
\contentsline {subsection}{\numberline {5.3.2}Put a Value}{16}{subsection.5.3.2}
\contentsline {subsection}{\numberline {5.3.3}Get a Sub-array}{16}{subsection.5.3.3}
\contentsline {subsection}{\numberline {5.3.4}Limits of this Format}{17}{subsection.5.3.4}
\contentsline {section}{\numberline {5.4}COO Tensors}{18}{section.5.4}
\contentsline {subsection}{\numberline {5.4.1}Naive Implementation}{18}{subsection.5.4.1}
\contentsline {subsection}{\numberline {5.4.2}Reverse the Coordinates}{19}{subsection.5.4.2}
\contentsline {subsection}{\numberline {5.4.3}Put a Value}{20}{subsection.5.4.3}
\contentsline {subsection}{\numberline {5.4.4}More Parameters are Needed to Define the Tensors}{20}{subsection.5.4.4}
\contentsline {subsubsection}{Resolution of the Indexes}{20}{subsection.5.4.4}
\contentsline {subsubsection}{All Indexes}{21}{subsection.5.4.4}
\contentsline {subsubsection}{Interval Indexes}{21}{subsection.5.4.4}
\contentsline {subsubsection}{Point Index}{21}{figure.caption.16}
\contentsline {subsubsection}{Specified Index}{22}{figure.caption.17}
\contentsline {subsubsection}{New Axis Index}{23}{figure.caption.18}
\contentsline {subsection}{\numberline {5.4.5}Sparse Indexes Translation}{23}{subsection.5.4.5}
\contentsline {subsubsection}{Example of Indexes Translation}{24}{algorithm.2}
\contentsline {subsection}{\numberline {5.4.6}Computations of the the Parameters}{25}{subsection.5.4.6}
\contentsline {subsubsection}{Computation of the Sparse Offsets}{25}{subsection.5.4.6}
\contentsline {subsubsection}{Example of Sparse Offsets Computation}{25}{algorithm.3}
\contentsline {subsubsection}{Computation of the Flags}{25}{algorithm.3}
\contentsline {subsubsection}{Computation of the Hidden Dimensions}{25}{algorithm.3}
\contentsline {subsection}{\numberline {5.4.7}Final Implementation}{27}{subsection.5.4.7}
\contentsline {subsubsection}{Example}{28}{Item.34}
\contentsline {subsection}{\numberline {5.4.8}Get a Sub-Array}{28}{subsection.5.4.8}
\contentsline {chapter}{\numberline {6}Operations}{31}{chapter.6}
\contentsline {section}{\numberline {6.1}Basic Linear Algebra Subprograms (BLAS)}{31}{section.6.1}
\contentsline {section}{\numberline {6.2}Backends}{32}{section.6.2}
\contentsline {subsection}{\numberline {6.2.1}In-Place Routines}{32}{subsection.6.2.1}
\contentsline {subsubsection}{Example}{32}{subsection.6.2.1}
\contentsline {subsection}{\numberline {6.2.2}Level 1 Routines}{32}{subsection.6.2.2}
\contentsline {subsection}{\numberline {6.2.3}Level 2 and Level 3 Routines}{33}{subsection.6.2.3}
\contentsline {subsubsection}{Gemv Routine}{33}{subsection.6.2.3}
\contentsline {section}{\numberline {6.3}Libnd4j}{34}{section.6.3}
\contentsline {chapter}{\numberline {7}Results}{35}{chapter.7}
\contentsline {section}{\numberline {7.1}Storing a Huge Array is now Possible}{35}{section.7.1}
\contentsline {chapter}{\numberline {8}Future}{37}{chapter.8}
\contentsline {section}{\numberline {8.1}Operations}{37}{section.8.1}
\contentsline {section}{\numberline {8.2}Support of the GPU backend}{37}{section.8.2}
\contentsline {section}{\numberline {8.3}Make the Sparse Array Compliant with the API}{37}{section.8.3}
\contentsline {section}{\numberline {8.4}Support More Sparse Formats}{38}{section.8.4}
\contentsline {section}{\numberline {8.5}Tensor Contraction Indexing}{38}{section.8.5}
\contentsline {section}{\numberline {8.6}Optimizations}{39}{section.8.6}
\contentsline {chapter}{\numberline {9}Conclusion}{41}{chapter.9}
\contentsline {chapter}{\numberline {A}Appendices}{43}{appendix.A}
\contentsline {section}{\numberline {A.1}Algorithm Execution Example}{43}{section.A.1}
\contentsline {subsection}{\numberline {A.1.1}Sparse Offset Computation Algorithm}{43}{subsection.A.1.1}
\contentsline {subsection}{\numberline {A.1.2}Indexes Translation Algorithm}{44}{subsection.A.1.2}
\contentsline {section}{\numberline {A.2}Code Snippets}{46}{section.A.2}
\contentsline {subsection}{\numberline {A.2.1}Extract a sub-array of a CSR matrix}{46}{subsection.A.2.1}
\contentsline {subsection}{\numberline {A.2.2}Put a Value into a CSR matrix}{47}{subsection.A.2.2}
\contentsline {subsection}{\numberline {A.2.3}Add a value into a buffer}{47}{subsection.A.2.3}
\contentsline {chapter}{Acknowledgements}{49}{appendix*.23}
\contentsline {chapter}{Bibliography}{51}{appendix*.25}