Esta página ainda não foi traduzida para esta versão. A versão em inglês é a referencia autoritária. Ver versão em inglês →

Programação em GPU

O artefacto GPU versionado, a sintaxe verificada de kernels e o estado das funcionalidades atestadas.

Programação em GPU

O ecossistema Sounio disponibiliza dois perfis de execução distintos e validados neste repositório:

  • souc-linux-x86_64 – Perfil nativo padrão para execução e compilação genérica CPU.
  • souc-linux-x86_64-gpu – Perfil dedicado a computação de alto desempenho em GPU.

Compilação de GPU Self-Hosted

O compilador self-hosted padrão (bin/souc) aceita a sintaxe e a semântica nativas para especificação de kernels GPU, permitindo que a ferramenta kretikos emita modelos de código predefinidos de forma autónoma:

# Emitir o modelo PTX predefinido para vec_add
kretikos emit-ptx vec_add     -o /tmp/kernel.ptx
kretikos emit-ptx vec_sub     -o /tmp/kernel.ptx
kretikos emit-ptx vec_mul     -o /tmp/kernel.ptx
kretikos emit-ptx vec_div     -o /tmp/kernel.ptx
kretikos emit-ptx vec_add_f64 -o /tmp/kernel.ptx
kretikos emit-ptx fma         -o /tmp/kernel.ptx

# Emitir o modelo Metal Shading Language (MSL) para macOS/iOS
kretikos emit-metal vec_add          -o /tmp/kernel.metal
kretikos emit-metal ossm_oct_step    -o /tmp/kernel.metal
kretikos emit-metal sedenion_cd_step -o /tmp/kernel.metal

# Emitir o modelo CUBIN otimizado para NVIDIA
kretikos emit-cubin vec_add_f32 -o /tmp/kernel.cubin

# Emitir PTX, CUBIN e o respetivo manifesto estruturado do pacote
kretikos bundle -o /tmp/kretikos-bundle

Verificação de Suporte no Ambiente

Para validar as capacidades de GPU no seu ambiente de trabalho, pode recorrer ao utilitário de GPU integrado:

export SOUC_GPU_BIN="$(pwd)/artifacts/omega/souc-bin/souc-linux-x86_64-gpu"
export SOUNIO_STDLIB_PATH="$(pwd)/stdlib"

# Exibe informações do compilador GPU ativo
"$SOUC_GPU_BIN" info

# Efetua a verificação estática de ficheiros com sintaxe GPU
"$SOUC_GPU_BIN" check examples/gpu.sio
"$SOUC_GPU_BIN" check tests/run-pass/gpu_launch_surface.sio

# Compila e emite o kernel PTX correspondente
"$SOUC_GPU_BIN" build examples/kernel_matmul.sio --backend gpu -o /tmp/kernel_matmul.ptx

Estes testes comprovam as seguintes premissas:

  1. A geração de código para GPU está perfeitamente operacional no perfil GPU distribuído.
  2. O canal estável para emissão de código de baixo nível PTX assenta no comando build --backend gpu.
  3. As diretivas e construtores kernel fn, with GPU, GPU.launch e GPU.sync são suportadas pelo compilador.

Funcionalidades e Cobertura Pública

Segmento Estável e Validado:

  • Definição de funções aceleradas através de kernel fn.
  • Declaração explícita de efeitos paralelos com with GPU.
  • Execução assíncrona de kernels recorrendo a perform GPU.launch(...).
  • Barreiras de sincronização globais via perform GPU.sync().
  • Emissão de código de baixo nível PTX recorrendo à flag --backend gpu.

Segmento em Desenvolvimento (Roadmap):

  • Variáveis intrínsecas de indexação local e global (gpu.thread_id.*, gpu.block_id.*, gpu.block_dim.*).
  • Alocação explícita de memória partilhada e unificada no dispositivo (gpu.alloc<T>(...)).

Artefactos e Validação Técnica

Os ficheiros de conformidade técnica e especificações formais residem no diretório artifacts/omega/:

  • gpu_codegen_parity.v1.json
  • gpu_binary_attestation.v1.json
  • gpu_runtime_attest_gate.v1.json
  • gpu_public_contract.v1.json

Vias e plataformas de hardware com suporte e validação garantidos:

  • NVIDIA CUDA: Compatibilidade verificada com arquitetura cuda-sm80.
  • AMD ROCm: Compatibilidade verificada com arquitetura rocm-gfx942.