# mayankbajaj21/cuda-lof-cybersecurity architecture

> Architecture diagram of the GitHub repository mayankbajaj21/cuda-lof-cybersecurity, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mayankbajaj21/cuda-lof-cybersecurity
- Repository: https://github.com/mayankbajaj21/cuda-lof-cybersecurity

## Overview

This research project prepares CICIDS2017 network-flow data and applies Local Outlier Factor for anomaly scoring, with a CPU reference and a CUDA-acceleration track. The main workflow runs from raw CSV inspection and preprocessing through loading processed features, LOF computation, and benchmark/result visualization. CUDA covers distance, neighbor search, reachability density, and LOF scoring; the README identifies profiling and optimization as project goals but describes later CUDA milestones as placeholders. Some runner and native-pipeline wiring is documented but its source was not sampled, so uncertain links are omitted.

Main entry points: [`src/cuda/lof/cuda_lof_pipeline.cu`](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/lof/cuda_lof_pipeline.cu) (CUDA LOF Pipeline), [`results`](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/results) (Benchmark Results), [`preprocessing/inspect_dataset.py`](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/preprocessing/inspect_dataset.py) (Inspect CSVs), [`preprocessing/prepare_dataset.py`](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/preprocessing/prepare_dataset.py) (Clean and Prepare)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Dataset Preparation"]
  node_inspect["Inspect CSVs<br/>[inspect_dataset.py]"]
  node_prepare["Clean and Prepare<br/>[prepare_dataset.py]"]
  node_rawdata[("Raw CSVs")]
  node_processed[("Processed Data")]
  node_loader["Dataset Loader<br/>[dataset.py]"]
end

subgraph group_detection["LOF Detection"]
  node_cpu["CPU LOF<br/>[cpu_lof.py]"]
end

subgraph group_gpu["CUDA Acceleration"]
  node_cudaapi["CUDA LOF API<br/>[lof.py]"]
  node_nativepipe["CUDA LOF Pipeline"]
  node_distance["Pairwise Distance<br/>[distance_kernel.cu]"]
  node_knn["k-NN Search<br/>[knn_kernel.cu]"]
  node_reach["Reachability Distance"]
  node_lrd["Local Reachability Density<br/>[lrd_kernel.cu]"]
  node_lofscore["LOF Scoring<br/>[lof_kernel.cu]"]
end

subgraph group_evaluation["Evaluation"]
  node_bench[("Benchmark Results")]
  node_visuals["Result Visualizations"]
  node_profiling["GPU Profiling"]
  node_optimization["CUDA Optimization"]
end

node_researcher(("Researcher"))
node_cicids["CICIDS2017"]

node_cicids -->|"provides data"| node_rawdata
node_researcher -->|"runs inspection"| node_inspect
node_inspect -->|"reads CSVs"| node_rawdata
node_inspect -->|"writes report"| node_bench
node_researcher -->|"runs preparation"| node_prepare
node_prepare -->|"reads CSVs"| node_rawdata
node_prepare -->|"writes features"| node_processed
node_researcher -->|"requests data"| node_loader
node_loader -->|"loads arrays"| node_processed
node_researcher -->|"runs baseline"| node_cpu
node_researcher -->|"runs CUDA"| node_cudaapi
node_cudaapi -->|"invokes pipeline"| node_nativepipe
node_nativepipe -->|"dispatches"| node_distance
node_nativepipe -->|"dispatches"| node_knn
node_nativepipe -->|"dispatches"| node_reach
node_nativepipe -->|"dispatches"| node_lrd
node_nativepipe -->|"dispatches"| node_lofscore
node_cpu -->|"records results"| node_bench
node_cudaapi -->|"records timings"| node_bench
node_bench -->|"provides results"| node_visuals
node_visuals -->|"writes tables and charts"| node_bench
node_nativepipe -.->|"profiled in"| node_profiling
node_nativepipe -.->|"optimized in"| node_optimization

click node_inspect "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/preprocessing/inspect_dataset.py"
click node_prepare "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/preprocessing/prepare_dataset.py"
click node_rawdata "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/data/raw"
click node_processed "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/data/processed"
click node_loader "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/python/data/dataset.py"
click node_cpu "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/python/cpu/cpu_lof.py"
click node_cudaapi "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/python/cuda/lof.py"
click node_nativepipe "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/lof/cuda_lof_pipeline.cu"
click node_distance "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/kernels/distance_kernel.cu"
click node_knn "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/kernels/knn_kernel.cu"
click node_reach "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/kernels/reachability_kernel.cu"
click node_lrd "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/kernels/lrd_kernel.cu"
click node_lofscore "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/kernels/lof_kernel.cu"
click node_bench "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/results"
click node_visuals "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/src/python/visualization"
click node_profiling "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/experiments/m4_profiling"
click node_optimization "https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/experiments/m5_cuda_optimized"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_inspect,node_prepare,node_rawdata,node_processed,node_loader toneBlue
class node_cpu toneAmber
class node_cudaapi,node_nativepipe,node_distance,node_knn,node_reach,node_lrd,node_lofscore toneMint
class node_bench,node_visuals,node_profiling,node_optimization toneRose
class node_researcher,node_cicids toneIndigo
```

## Components

### Dataset Preparation

- [Inspect CSVs](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/preprocessing/inspect_dataset.py): `preprocessing/inspect_dataset.py`
- [Clean and Prepare](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/preprocessing/prepare_dataset.py): `preprocessing/prepare_dataset.py`
- [Raw CSVs](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/data/raw): `data/raw`
- [Processed Data](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/data/processed): `data/processed`
- [Dataset Loader](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/python/data/dataset.py): `src/python/data/dataset.py`

### LOF Detection

- [CPU LOF](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/python/cpu/cpu_lof.py): `src/python/cpu/cpu_lof.py`

### CUDA Acceleration

- [CUDA LOF API](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/python/cuda/lof.py): `src/python/cuda/lof.py`
- [CUDA LOF Pipeline](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/lof/cuda_lof_pipeline.cu): `src/cuda/lof/cuda_lof_pipeline.cu`
- [Pairwise Distance](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/kernels/distance_kernel.cu): `src/cuda/kernels/distance_kernel.cu`
- [k-NN Search](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/kernels/knn_kernel.cu): `src/cuda/kernels/knn_kernel.cu`
- [Reachability Distance](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/kernels/reachability_kernel.cu): `src/cuda/kernels/reachability_kernel.cu`
- [Local Reachability Density](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/kernels/lrd_kernel.cu): `src/cuda/kernels/lrd_kernel.cu`
- [LOF Scoring](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/blob/main/src/cuda/kernels/lof_kernel.cu): `src/cuda/kernels/lof_kernel.cu`

### Evaluation

- [Benchmark Results](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/results): `results`
- [Result Visualizations](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/src/python/visualization): `src/python/visualization`
- [GPU Profiling](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/experiments/m4_profiling): `experiments/m4_profiling`
- [CUDA Optimization](https://github.com/mayankbajaj21/cuda-lof-cybersecurity/tree/main/experiments/m5_cuda_optimized): `experiments/m5_cuda_optimized`

### Other components

- **Researcher**
- **CICIDS2017**

## Connections

- CICIDS2017 → Raw CSVs: provides data
- Researcher → Inspect CSVs: runs inspection
- Inspect CSVs → Raw CSVs: reads CSVs
- Inspect CSVs → Benchmark Results: writes report
- Researcher → Clean and Prepare: runs preparation
- Clean and Prepare → Raw CSVs: reads CSVs
- Clean and Prepare → Processed Data: writes features
- Researcher → Dataset Loader: requests data
- Dataset Loader → Processed Data: loads arrays
- Researcher → CPU LOF: runs baseline
- Researcher → CUDA LOF API: runs CUDA
- CUDA LOF API → CUDA LOF Pipeline: invokes pipeline
- CUDA LOF Pipeline → Pairwise Distance: dispatches
- CUDA LOF Pipeline → k-NN Search: dispatches
- CUDA LOF Pipeline → Reachability Distance: dispatches
- CUDA LOF Pipeline → Local Reachability Density: dispatches
- CUDA LOF Pipeline → LOF Scoring: dispatches
- CPU LOF → Benchmark Results: records results
- CUDA LOF API → Benchmark Results: records timings
- Benchmark Results → Result Visualizations: provides results
- Result Visualizations → Benchmark Results: writes tables and charts
- CUDA LOF Pipeline → GPU Profiling: profiled in
- CUDA LOF Pipeline → CUDA Optimization: optimized in
