spcl
@spcl Organization
Public Skills
cpfsrc
by spcl
"Your source is ALREADY PARALLELIZED by DaCe's Canonical Parallel Form (CPF) pipeline:
rccl
by spcl
"RCCL/NCCL collectives on AMD GPUs. Use whenever you call ncclAllReduce, ncclCommInitRank, link rccl, or a multi-GPU/multi-node collective hangs instead of failing."
mpi-c
by spcl
"MPI in C across nodes. Use whenever you write MPI_Allreduce, MPI_Isend/MPI_Irecv, MPI_Cart_shift, or hit a hang or wrong answer on a multi-node submission."
gpuaware-mpi-c
by spcl
"GPU-aware MPI in C. Use whenever you pass a device pointer to MPI_Isend/MPI_Allreduce across nodes, check MPIX_GPU_query_support, or hit a hang or segfault with no diagnostic."
openmp-offload
by spcl
"OpenMP GPU offload in C/C++/Fortran. Use whenever you write #pragma omp target teams distribute, map(to:), --offload-arch, hit a host-fallback wrong answer, a fault, or slower-than-baseline."
lang-triton
by spcl
"Triton rules for this benchmark on CDNA3: timed first-call compile, num_warps/num_stages traps. Use whenever writing a triton.jit kernel: OutOfResources error or wrong answer."
rocprof
by spcl
What the AMD device trace from profile returns for a hip or OpenMP-offload submission, which fields come back null, and what each refusal means.
opt-reports
by spcl
Get the compiler's own optimization report for your submission from the judge, and tell a legality refusal from a cost-model one.
canonical-parallel-form
by spcl
"DaCe's canonical parallel form (CPF) of this kernel: a self-contained C, C++ or HIP
caveman
by spcl
"Caveman mode ON: no filler, no dead grammar, no repeats, keywords/arrows/symbols, compress hard, shortest correct answer. Use whenever the caveman packet is staged; never announce the style."
profiling
by spcl
CPU profiling -- where the time went (perf) and what the machine did there (PAPI counters, per-thread CPI and imbalance).
divide-and-conquer
by spcl
"Split a large multi-phase kernel into named stages so a profile ranks them and a wrong answer bisects to one. Use when phases hide under one profile symbol or a rejected run needs localizing."
solver
by spcl
"Solver kernel rules: sequential dependence vs. free loop, why reordering changes the answer not the speed, why fewer iterations is wrong. Use for Newton, Krylov, multigrid, or ODE solver kernels."
lang-cpp
by spcl
"C++ loop-parallelization and std::execution rules, -std=c++20, for this benchmark including the host half of .cu/.hip. Use whenever writing a .cpp/.cu/.hip file, on a build error or wrong answer."
lang-c
by spcl
"C loop-parallelization rules for this benchmark: dependence tests, vectorization, -std=c23 gate. Use whenever writing/editing a .c kernel: build error, wrong answer, slower-than-baseline score."
lang-cuda
by spcl
"CUDA correctness rules for this benchmark: run-twice reproducibility gate, null-workspace trap, poison-pattern check. Use whenever editing a .cu kernel: correct: false, all-zero result."
lang-python
by spcl
"Python delivery contract for this benchmark: the functional/in-place ABIs, what the timer charges, rewrites that beat numba. Use whenever delivering a .py kernel: wrong answer or MemoryError."
lang-hip
by spcl
"HIP correctness rules for this benchmark: warpSize is 64 on CDNA, run-twice reproducibility gate, serialized-dispatch race check. Use whenever editing a .hip kernel: correct: false, nondeterminism."
lang-fortran
by spcl
"Fortran bind(C) ABI, column-major 1-based rewrite rules, and the -std=f2018 gate for this benchmark. Use whenever writing or editing a .f90 kernel, on a link failure or a numeric mismatch."
openmp-c
by spcl
"OpenMP threading in C. Use whenever you write #pragma omp parallel for, simd, or reduction, hit a race, wrong answer, or an -fopenmp build error in a C loop."
openmp-cpp
by spcl
"OpenMP threading in C++. Use whenever you write #pragma omp parallel for, simd, reduction, or declare reduction, hit a race, wrong answer, or an -fopenmp build error in a C++ loop."
openacc
by spcl
"OpenACC GPU offload on NVIDIA. Use whenever you write #pragma acc parallel loop, acc kernels, copyin/copyout, or check -Minfo=accel, on an NVHPC build for an NVIDIA GPU."
openmp-fortran
by spcl
"OpenMP threading in Fortran. Use whenever you write !$omp parallel do, simd, reduction, or maxloc, hit a race, wrong answer, or an -fopenmp build error in a Fortran loop."
nsys
by spcl
What the NVIDIA device trace from profile returns for a cuda submission (tool nsys), what it cannot answer, and what each refusal means.