1 
 2 # Project Layout
 3 
 4 ----
 5 
 6 * [Contents](hat-00.md)
 7 * House Keeping
 8     * [Project Layout](hat-01-01-project-layout.md)
 9     * [Building Babylon](hat-01-02-building-babylon.md)
10     * [Building HAT](hat-01-03-building-hat.md)
11       * [Enabling the CUDA Backend](hat-01-05-building-hat-for-cuda.md)
12 * Programming Model
13     * [Programming Model](hat-03-programming-model.md)
14 * Interface Mapping
15     * [Interface Mapping Overview](hat-04-01-interface-mapping.md)
16     * [Cascade Interface Mapping](hat-04-02-cascade-interface-mapping.md)
17 * Implementation Detail
18     * [Walkthrough Of Accelerator.compute()](hat-accelerator-compute.md)
19     * [How we minimize buffer transfers](hat-minimizing-buffer-transfers.md)
20 
21 ---
22 
23 # Primer
24 
25 This is a fairly large project with Java and Native artifacts which is completely dependant
26 on the `babylon` project, and as such is initially available in a sub directory
27 called `hat` under [github.com/openjdk/babylon](https://github.com/openjdk/babylon)
28 
29 ## Project Layout
30 
31 ```
32 ${BABYLON_JDK}
33      ./
34      +--build/                     All jars, native libs and executables
35      |    +--cmake-build-debug/    All intermediate cmake artifacts
36      |
37      +--stage/
38      |    +--repo/                 All downloaded maven assets
39      |    |
40      |    +--jextract/             All jextracted files
41      |    |    +--opencl
42      |    |    +--opengl
43      |    |    +--cuda
44      |
45      +--hat
46      |    + Script.java
47      |    + run.java + @run
48      |    + bld.java + @bld
49      |    + clean.java + @bld
50      |
51      +--core                      * Note maven style layout
52      |    +--src/main/java
53      |    |    +--hat/
54      |    |
55      |    +--src/main/test
56      |         +--hat/
57      |
58      +--backends
59      |    +--java
60      |    |    +--mt                    (*)
61      |    |    +--seq                   (*)
62      |    +--jextracted
63      |    |    +--opencl                (*)
64      |    +--ffi
65      |    |    +--opencl                (*)
66      |    |    +--ptx                   (*)
67      |    |    +--mock                  (*)
68      |    |    +--spirv                 (*)
69      |    |    +--cuda                  (*)
70      |    |    +--hip                   (*)
71      |
72      +--examples
73      |    +--mandel                (*)
74      |    +--squares               (*)
75      |    +--heal                  (*)
76      |    +--life                  (*)
77      |    +--violajones            (*)
78 
79 ```