Anàlisis d'optimització CPU i GPU - #1
Open
amartinezcsuc wants to merge 3 commits into
Open
Conversation
Reemplaça cv2.cuda per CuPy per evitar dependències de compilació JIT i headers CUDA. Canvis principals: - detection.py: nova funció _binary_cupy() amb pipeline híbrid CPU/GPU - Blur a CPU (OpenCV SIMD, molt ràpid) - Absdiff + threshold + histogram a GPU (CuPy pre-compilats) - Morphology a CPU (evita JIT de cupyx.scipy.ndimage) - compute.py: detecció CuPy en lloc de cv2.cuda - background.py: suport GPU median amb CuPy - pipeline.py: pre-càrrega background a GPU per eficiència - diagnose_gpu.py: nou script diagnòstic GPU Beneficis: - Zero compilació JIT (no requereix cuda_fp16.h) - Compatible amb CuPy bàsic (pip install cupy-cuda12x) - Pipeline híbrid CPU/GPU optimitzat per latència - Fallback CPU automàtic si GPU falla Dependencies: - Afegit cupy-cuda12x a requirements.txt - Actualitzat pyproject.toml amb dependències opcionals GPU
Afegida documentació tècnica completa sobre optimització GPU al directori docs/. Contingut: - gpu-optimization-analysis.md (18.500 paraules): - Anàlisi ultra-think de 4 opcions d'optimització - Option 1 (Morphology GPU): RECOMANADA - 8.05/10 - Option 2 (Full GPU): NO recomanada - 6.15/10 - Option 3 (GPU Híbrida): NO recomanada - 6.25/10 - Option 4 (Batch Processing): NO recomanada - 4.45/10 - Matriu de decisió amb avaluació risc/benefici - Roadmap complet d'implementació (5 fases, 2 setmanes) - Mètriques d'èxit, risk mitigation, benchmarks - Cross-domain insights i adversarial testing - gpu-options-summary.md: resum executiu amb comparativa ràpida - docs/README.md: índex de documentació - Estructura de carpetes: benchmarks/, validation/, architecture/ Recomanació principal: Implementar morphology a GPU (Option 1) amb guany esperat 10-20%, risc baix i implementació quirúrgica (~15 línies canviades). README.md actualitzat amb enllaços a documentació tècnica.
### Reorganització estructura docs/ - Crea carpetes `cpu/` i `gpu/` per organitzar anàlisis per tipus - Mou documents GPU existents a `gpu/` - Actualitza README.md amb nova estructura i prioritats ### Nova anàlisi: Paral·lelització CPU - Documenta problema: temps idèntic amb 12/32/192 cores (processament seqüencial) - Analitza 4 opcions: multiprocessing.Pool, threading, joblib, dask - Recomanació: Option 3 (Joblib) amb speedup esperat 10-20× - Roadmap implementació en 5 fases (2 setmanes ETA) ### Documents creats - `docs/cpu/parallelization-analysis.md` (55 KB) - Anàlisi exhaustiva ultra-think - `docs/cpu/parallelization-options-summary.md` (6.4 KB) - Resum referència ràpida ### Impacte esperat - Desktop (12 cores): 14 min → 2-2.5 min (6-7× speedup) - HPC (32 cores): 14 min → 45-60 s (14-19× speedup) - HPC (192 cores): 20 min → 30-45 s (20-35× speedup) ### Prioritats actualitzades 1. 🔥 Paral·lelització CPU (ALTA) - speedup 10-20× 2. 🟡 Optimització GPU (MITJANA) - speedup 10-20% 3. ⚪ Altres optimitzacions (BAIXA)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Anàlisis d'optimització CPU i GPU
📋 Resum
Aquesta PR afegeix anàlisis exhaustives de dues estratègies d'optimització per millorar significativament el rendiment de
bat_tracker:🔍 Problema Identificat
Paral·lelització CPU
GPU
💡 Solucions Proposades
1. Paral·lelització CPU (PRIORITAT ALTA 🔥)
Recomanació: Option 3 (Joblib Parallel)
Speedup esperat:
Per què Joblib?
Alternatives analitzades:
2. Optimització GPU (PRIORITAT MITJANA 🟡)
Recomanació: Option 1 (Morphology a GPU)
Speedup esperat: 10-20%
Què fa?
cp.ndimage.maximum_filtericp.ndimage.minimum_filter(pre-compilats, zero JIT)Alternatives analitzades:
📁 Estructura de Documentació
S'ha reorganitzat
docs/per claredat:📊 Impacte Esperat
🛣️ Roadmap d'Implementació
Paral·lelització CPU (ETA: 2 setmanes)
Optimització GPU (ETA: 1-2 setmanes, després de CPU)
🎯 Prioritats Actualitzades
📝 Metodologia d'Anàlisi
Totes les anàlisis segueixen metodologia Ultra-Think:
🚀 Quick Win Immediat
Abans d'implementar, es pot provar configuració OpenMP (zero canvis codi):
Speedup esperat: 2-3× (no 20×, però zero esforç)
📚 Referències
CPU / Paral·lelització
GPU
✅ Checklist
cpu/igpu/💬 Notes
Aquesta PR conté només documentació i anàlisis. No inclou canvis de codi implementats (excepte la migració a CuPy ja feta). Les implementacions es faran en PRs posteriors seguint els roadmaps proposats.
Tipus de PR: 📚 Documentació / Anàlisi tècnica
Impacte esperat: Alto (guia per futures optimitzacions majors)
Breaking changes: No
Requereix testing: No (només documentació)