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:
- A geração de código para GPU está perfeitamente operacional no perfil GPU distribuído.
- O canal estável para emissão de código de baixo nível PTX assenta no comando
build --backend gpu. - As diretivas e construtores
kernel fn,with GPU,GPU.launcheGPU.syncsã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.jsongpu_binary_attestation.v1.jsongpu_runtime_attest_gate.v1.jsongpu_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.