Skip to content

Commit 7a22fa6

Browse files
committed
doc: add software architecture and introduce PAL in toplevel README.md
1 parent 7ab3643 commit 7a22fa6

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed

README.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,111 @@ Instructions for adding support for new models: [HOWTO-add-model.md](docs/develo
245245
| [CANN](docs/build.md#cann) | Ascend NPU |
246246
| [OpenCL](docs/backend/OPENCL.md) | Adreno GPU |
247247

248+
## Software architecture
249+
250+
```mermaid
251+
block-beta
252+
columns 1
253+
254+
block:llamacpp
255+
llamacpp["llama_cpp"]
256+
style llamacpp fill:#3c3,color:#000,stroke:#000
257+
end
258+
259+
block:ggml
260+
ggml["GGML"]
261+
style ggml fill:#3c3,color:#000,stroke:#000
262+
263+
ggml_cpu["ggml-cpu"]
264+
ggml_metal["ggml-metal"]
265+
ggml_sycl["ggml-sycl"]
266+
ggml_cuda["ggml-cuda"]
267+
ggml_hip["ggml-hip"]
268+
ggml_vulkan["ggml-vulkan"]
269+
ggml_cann["ggml-cann"]
270+
ggml_opencl["ggml-opencl"]
271+
ggml_qnn["ggml-qnn"]
272+
ggml_nnpa["ggml-nnpa"]
273+
ggml_ane["ggml-ane"]
274+
275+
style ggml_cpu fill:#888,color:#000,stroke:#000
276+
style ggml_metal fill:#888,color:#000,stroke:#000
277+
style ggml_sycl fill:#888,color:#000,stroke:#000
278+
style ggml_cuda fill:#888,color:#000,stroke:#000
279+
style ggml_hip fill:#888,color:#000,stroke:#000
280+
style ggml_vulkan fill:#888,color:#000,stroke:#000
281+
style ggml_cann fill:#888,color:#000,stroke:#000
282+
283+
style ggml_opencl fill:#cc3,color:#000,stroke:#000
284+
style ggml_qnn fill:#cc3,color:#000,stroke:#000
285+
style ggml_ane fill:#fff,color:#000,stroke:#f00,stroke-width:2,stroke-dasharray:5
286+
style ggml_nnpa fill:#cc3,color:#000,stroke:#000
287+
end
288+
289+
block:ggml_pal
290+
ggml_pal["GGML Platform Abstraction Layer"]
291+
style ggml_pal fill:#c33,color:#000,stroke:#000
292+
end
293+
294+
295+
block:OS
296+
Windows
297+
Linux
298+
Android
299+
QNX
300+
IBM_z/OS
301+
end
302+
303+
block:hardware_vendors
304+
Intel
305+
AMD
306+
Apple
307+
Nvidia
308+
Huawei
309+
Loongson
310+
Qualcomm
311+
IBM
312+
313+
ggml_metal --> Apple
314+
ggml_cuda --> Nvidia
315+
ggml_hip --> AMD
316+
ggml_cann --> Huawei
317+
ggml_sycl --> Intel
318+
ggml_opencl --> Qualcomm
319+
ggml_qnn --> Qualcomm
320+
ggml_ane --> Apple
321+
ggml_nnpa --> IBM
322+
end
323+
324+
block:hardware_types
325+
CPU
326+
GPU
327+
NPU
328+
end
329+
330+
block:hardware_archs
331+
x86
332+
arm
333+
risc
334+
dsp
335+
loongson
336+
end
337+
```
338+
339+
```mermaid
340+
%%{init: {"flowchart": {"htmlLabels": false, 'nodeSpacing': 30, 'rankSpacing': 30}} }%%
341+
flowchart LR
342+
classDef EXIST fill:#888,color:#000,stroke:#000
343+
classDef DONE fill:#3c3,color:#000,stroke:#000
344+
classDef WIP fill:#cc3,color:#000,stroke:#000
345+
classDef TODO fill:#c33,color:#000,stroke:#000
346+
classDef NEW fill:#fff,color:#000,stroke:#f00,stroke-width:2,stroke-dasharray:5
347+
subgraph Legend
348+
direction LR
349+
EXIST:::EXIST ~~~ TODO:::TODO ~~~ WIP:::WIP ~~~ DONE:::DONE ~~~ NEW:::NEW
350+
end
351+
```
352+
248353
## Building the project
249354

250355
The main product of this project is the `llama` library. Its C-style interface can be found in [include/llama.h](include/llama.h).

0 commit comments

Comments
 (0)