Skip to content

feat(opencl): commandQueue thread-local (prerequisito para paralelismo)#9

Open
joaonery1 wants to merge 2 commits into
devfrom
feat/threadlocal-queue
Open

feat(opencl): commandQueue thread-local (prerequisito para paralelismo)#9
joaonery1 wants to merge 2 commits into
devfrom
feat/threadlocal-queue

Conversation

@joaonery1

Copy link
Copy Markdown
Collaborator

Summary

  • VglClContext.commandQueue agora é @property que delega a opencl_context.queue — sem cópia estática
  • opencl_context.queue usa threading.local(): cada thread recebe sua própria cl.CommandQueue criada sob demanda
  • get_vglClContext_attributes() passa self (instância viva) em vez de self.queue (snapshot)
  • finish_queue() adicionado para flush seguro da fila da thread atual

Verificações realizadas

  • RF-001: dois id(commandQueue) em threads distintas são diferentes ✅
  • RF-001: dois id(commandQueue) na mesma thread são iguais ✅
  • RF-003: finish_queue() sem exceção na main thread e em thread sem uso ✅
  • RF-002: saída de execWorkflow.py SAMPLES/demo.wksp é binariamente idêntica ao baseline ✅
  • Apenas vgl_lib/opencl_context.py modificado (nenhum caller alterado)

Test plan

  • python3 test_threadlocal_queue.py — deve imprimir "OK: todas as verificações passaram"
  • python3 execWorkflow.py SAMPLES/demo.wksp — deve executar sem exceção
  • Verificar que nenhum outro arquivo de código foi alterado (git diff --name-only)

Arquivos de planejamento

PRD, TechSpec, Tasks e ADR em .ai/tasks/prd-threadlocal-queue/.

joao.nery1@hotmail.com added 2 commits March 16, 2026 21:37
Cada thread agora recebe sua própria cl.CommandQueue criada sob demanda,
eliminando o risco de condição de corrida ao compartilhar uma única fila.
VglClContext.commandQueue é agora @Property que delega a opencl_context.queue.
Script test_threadlocal_queue.py verifica isolamento RF-001 e RF-003.
- .ai/ adicionado ao .gitignore e removido do repositório (pasta local preservada)
- doc/decisoes-paralelismo.md: análise técnica do artigo IEEE SCC 2018 e
  decisão de implementar Activities Parallelism via níveis topológicos do DAG
- Makefile_python: rundemo/runfundus corrigidos para caminho e executor atuais
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant