Skip to content

CPU/GPU data flow

flowchart TD
 classDef Legacy fill:#ffffff,stroke:#fc1702,stroke-width:4px,color:#fc1702;
 classDef SoA fill:#0000ff,stroke:none,color:#ffffff;
 linkStyle default stroke-width:4px,fill:none,stroke:orange;

 subgraph <strong>GPU workflow</strong>
  rd_g[Raw Data] --> d[Digis]
  d --> c[Clusters]
  c --> h_soa["Hits (SoA)"]
  h_soa --> db[Doublets]
  db --> nt[n-tuplets]
  nt --> pt[Pixel Tracks]
  pt --> pv[Pixel Vertices]
 end 

 class rd_g Legacy;
 class d,c,h_soa,db,nt,pt,pv SoA;

 subgraph <strong>Products</strong>
  direction TB
  rd_p[Raw Data] --> d_psoa["Digis (Partial SoA)"]
  d_psoa --> h_psoa["Hits (Partial SoA)"]
  h_psoa --> dc_l["Digis & Clusters (Legacy)"] --> h_l["Hits (Legacy)"]
  h_l --> pt_soa_prod["Pixel Tracks (SoA)"]
  pt_soa_prod --> pv_soa_prod["Pixel Vertices (SoA)"]
  pv_soa_prod --> pt_l["Pixel Tracks (Legacy)"]
  pt_l --> pv_l["Pixel Vertices (Legacy)"]
 end

 linkStyle 7,8,9,10,11,12,13,14 stroke-width:0px,fill:none,stroke:none; 

 rd_p --> rd_g
 d --> d_psoa
 h_soa --> h_psoa
 pt --> pt_soa_prod
 pv --> pv_soa_prod
 linkStyle 15,16,17,18,19 stroke-width:4px,fill:none,stroke:green;

 class rd_p,dc_l,h_l,pt_l,pv_l Legacy;
 class d_psoa,h_psoa,pt_soa_prod,pv_soa_prod SoA;

 subgraph <strong>CPU workflow</strong>
  rd_c[Raw Data] --> d_l["Digis (Legacy)"]
  d_l --> c_l["Clusters (Legacy)"]
  c_l --> h_soa_c["Hits (SoA)"]
  h_soa_c --> db_c[Doublets]
  db_c --> nt_c[n-tuplets]
  nt_c --> pt_soa["Pixel Tracks (SoA)"]
  pt_soa --> pv_soa["Pixel Vertices (SoA)"]
 end

 class rd_c,d_l,c_l Legacy;
 class h_soa_c,db_c,nt_c,pt_soa,pv_soa SoA;

 h_soa_c --> h_l
 pt_soa --> pt_l
 pv_soa --> pv_l
 linkStyle 27,28,29 stroke-width:4px,fill:none,stroke:red;