Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Architecture

It is recommended to use dark themes

1. Overall Architecture

%%{
  init: {
    'theme': 'redux dark', 
  }
}%%
graph TB
  classDef interface fill:#822, stroke: #f88,stroke-width:2px,stroke-dasharray: 5 5, color: #fff;
classDef core fill:#828, stroke: #f8f, stroke-width:2px, color: #fff;
classDef modules fill:#228, stroke: #88f,stroke-width:2px, color: #fff;
classDef messages fill:#882, stroke: #ff8,stroke-width:2px, color: #fff;
classDef api fill:#282, stroke: #8f8,stroke-width:2px, color: #fff;
classDef ai fill:#288, stroke: #8ff,stroke-width:2px, color: #fff;
classDef ui fill:#852, stroke: #fb8,stroke-width:2px, color: #fff;

  Core:::core
  
  I18n:::core

  Modules:::modules

  Messages:::messages
  
  CPU:::api
  GPU:::api
  NPU:::api
  
  UI:::ui
  AI:::ai

  AI --> NPU & GPU & CPU --> Messages
  UI --> GPU & CPU --> Messages

  Messages --> Modules --> I18n --> Core

UI

%%{
  init: {
    'theme': 'redux dark', 
  }
}%%
graph TB
  classDef interface fill:#822, stroke: #f88,stroke-width:2px,stroke-dasharray: 5 5, color: #fff;
classDef core fill:#828, stroke: #f8f, stroke-width:2px, color: #fff;
classDef modules fill:#228, stroke: #88f,stroke-width:2px, color: #fff;
classDef messages fill:#882, stroke: #ff8,stroke-width:2px, color: #fff;
classDef api fill:#282, stroke: #8f8,stroke-width:2px, color: #fff;
classDef ai fill:#288, stroke: #8ff,stroke-width:2px, color: #fff;
classDef ui fill:#852, stroke: #fb8,stroke-width:2px, color: #fff;

  UI:::ui
  
  UIFramework[UI Framework]:::ui
  UIBackend{UI Backend}:::interface
  
  DefaultUIBackend[Default UI Backend]:::ui
  
  RenderPipeline[Render Pipeline]:::ui

  RenderPipelineInterface{Render Pipeline Interface}:::interface
  
  DefaultUIBackend --> UIBackend
  DefaultUIBackend --> RenderPipeline 
  UI --> UIBackend & UIFramework
  
  RenderPipeline --> RenderPipelineInterface

Backends

  • algosul::cpu
  • algosul::gpu
  • Qt 6
  • Gtk 4
  • WinUI 2

AI

%%{
  init: {
    'theme': 'redux dark', 
  }
}%%
graph TB
  classDef interface fill:#822, stroke: #f88,stroke-width:2px,stroke-dasharray: 5 5, color: #fff;
classDef core fill:#828, stroke: #f8f, stroke-width:2px, color: #fff;
classDef modules fill:#228, stroke: #88f,stroke-width:2px, color: #fff;
classDef messages fill:#882, stroke: #ff8,stroke-width:2px, color: #fff;
classDef api fill:#282, stroke: #8f8,stroke-width:2px, color: #fff;
classDef ai fill:#288, stroke: #8ff,stroke-width:2px, color: #fff;
classDef ui fill:#852, stroke: #fb8,stroke-width:2px, color: #fff;

  AI:::ai
  
  AIInference[AI Inference]:::ai
  
  AIInferenceInterface{AI Inference Interface}:::interface

  AI --> AIInference
  
  AIInference --> AIInferenceInterface
  

Render

%%{
  init: {
    'theme': 'redux dark', 
  }
}%%
graph TB
  classDef interface fill:#822, stroke: #f88,stroke-width:2px,stroke-dasharray: 5 5, color: #fff;
classDef core fill:#828, stroke: #f8f, stroke-width:2px, color: #fff;
classDef modules fill:#228, stroke: #88f,stroke-width:2px, color: #fff;
classDef messages fill:#882, stroke: #ff8,stroke-width:2px, color: #fff;
classDef api fill:#282, stroke: #8f8,stroke-width:2px, color: #fff;
classDef ai fill:#288, stroke: #8ff,stroke-width:2px, color: #fff;
classDef ui fill:#852, stroke: #fb8,stroke-width:2px, color: #fff;
  
  CPURenderPipeline[CPU Render Pipeline]:::ui
  GPURenderPipeline[GPU Render Pipeline]:::ui
  
  RenderPipelineInterface{Render Pipeline Interface}:::interface
  
  CPU:::api
  GPU:::api
  
  CPURenderPipeline & GPURenderPipeline --> RenderPipelineInterface
  
  CPURenderPipeline ---> CPU
  GPURenderPipeline ---> GPU

AI Inference

%%{
  init: {
    'theme': 'redux dark', 
  }
}%%
graph TB
  classDef interface fill:#822, stroke: #f88,stroke-width:2px,stroke-dasharray: 5 5, color: #fff;
classDef core fill:#828, stroke: #f8f, stroke-width:2px, color: #fff;
classDef modules fill:#228, stroke: #88f,stroke-width:2px, color: #fff;
classDef messages fill:#882, stroke: #ff8,stroke-width:2px, color: #fff;
classDef api fill:#282, stroke: #8f8,stroke-width:2px, color: #fff;
classDef ai fill:#288, stroke: #8ff,stroke-width:2px, color: #fff;
classDef ui fill:#852, stroke: #fb8,stroke-width:2px, color: #fff;
  
  CPUAIInference[CPU AI Inference]:::ai
  GPUAIInference[GPU AI Inference]:::ai
  
  AIInferenceInterface{AI Inference Interface}:::interface
  
  CPU:::api
  GPU:::api
  
  CPUAIInference & GPUAIInference --> AIInferenceInterface 
  
  CPUAIInference ---> CPU 
  GPUAIInference ---> GPU

CPU

%%{
  init: {
    'theme': 'redux dark', 
  }
}%%
graph TB
  classDef interface fill:#822, stroke: #f88,stroke-width:2px,stroke-dasharray: 5 5, color: #fff;
classDef core fill:#828, stroke: #f8f, stroke-width:2px, color: #fff;
classDef modules fill:#228, stroke: #88f,stroke-width:2px, color: #fff;
classDef messages fill:#882, stroke: #ff8,stroke-width:2px, color: #fff;
classDef api fill:#282, stroke: #8f8,stroke-width:2px, color: #fff;
classDef ai fill:#288, stroke: #8ff,stroke-width:2px, color: #fff;
classDef ui fill:#852, stroke: #fb8,stroke-width:2px, color: #fff;
  
  CPU:::api
  
  Task{Task System}:::interface
  
  CPU -..-> Task
  

GPU

%%{
  init: {
    'theme': 'redux dark', 
  }
}%%
graph TB
  classDef interface fill:#822, stroke: #f88,stroke-width:2px,stroke-dasharray: 5 5, color: #fff;
classDef core fill:#828, stroke: #f8f, stroke-width:2px, color: #fff;
classDef modules fill:#228, stroke: #88f,stroke-width:2px, color: #fff;
classDef messages fill:#882, stroke: #ff8,stroke-width:2px, color: #fff;
classDef api fill:#282, stroke: #8f8,stroke-width:2px, color: #fff;
classDef ai fill:#288, stroke: #8ff,stroke-width:2px, color: #fff;
classDef ui fill:#852, stroke: #fb8,stroke-width:2px, color: #fff;
  
  GPU:::api
  
  Cuda:::api
  Vulkan:::api
  DirectX:::api
  Task{Task System}:::interface
  
  GPU  --> Vulkan & DirectX & Cuda
  GPU -..-> Task
  
  Vulkan & DirectX -.-> Cuda