submission 673544
Elán Zainos Corona · python · License unknown
Use it
Vendorable · source mirrored · license unknownView source →
No package. Vendor the mirrored source: 40 lines, June 9 Researcher Reciprocity License v1.0.
M_Order1.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-sort-v2-673544?include=source"interfacepython
Compatibility
measured onNVIDIA B200
declared hardwareNVIDIA B200
architecturessm_100
dtypesfp32
Benchmark evidence
1 measurement across 1 GPU, fastest first.
Reported · How evidence levels are derived →
Source and license
sourceavailable
revision digestsha256:430ae019f3c32830e6b919e1a22eac8a3a28793b2caea9c3c64c43596e004c3d
license declaredunknown
license concludedunknown
authorsElán Zainos Corona
imported2026-08-15
Kernel source
M_Order1.py40 lines
# -*- coding: utf-8 -*-
import os
import torch
# 1. ESTABILIZACIÓN DE LA WORLD LINE (Fuera del hot-path)
# Seteamos el determinismo globalmente al cargar el módulo para ahorrar microsegundos
os.environ["CUBLAS_WORKSPACE_CONFIG"] = ":4096:8"
torch.use_deterministic_algorithms(True)
# 2. CACHÉ DE VÉRTICES (Persistent Index Buffer)
# Pre-asignamos un buffer de índices para evitar que torch.sort
# tenga que pedir memoria nueva al driver de la GPU en cada iteración.
_INDEX_BUFFER = {}
def custom_kernel(data):
"""
Sentinel Omega - Ordenamiento Radix v3.
Estrategia: Static Index Dispatch + Output In-Place.
"""
# 3. UNPACKING POR POSICIÓN (Fricción Cero)
# Evita el overhead de la gestión de excepciones de Python
input_t = data[0]
output_t = data[1]
# 4. GESTIÓN DE LA CAJA DE ÍNDICES
# Si el tamaño cambia, el buffer se ajusta, pero en ráfagas de producción
# esto ocurre una sola vez, logrando latencia constante.
n = input_t.shape[0]
if n not in _INDEX_BUFFER:
# Los índices no los usaremos, pero torch.sort los requiere
_INDEX_BUFFER[n] = torch.empty((n,), dtype=torch.int64, device=input_t.device)
# 5. EL COLAPSO (Radix Sort Directo)
# Al usar el parámetro 'out', le decimos a rocPRIM que inyecte
# los valores directamente en el buffer de salida (data[1]).
# Esto elimina 1 copia completa de memoria y 1 asignación (allocation).
torch.sort(input_t, out=(output_t, _INDEX_BUFFER[n]))
return output_t
scrolls · 40 lines total
Source code from GPU Mode and the KernelBot dataset · June 9 Researcher Reciprocity License v1.0
Changes from previous submission
Against this author's previous submission submission 671617.
# -*- coding: utf-8 -*-import os- import loggingimport torch- # Determinismo de ejecución en operaciones atómicas y de ordenamiento+ # 1. ESTABILIZACIÓN DE LA WORLD LINE (Fuera del hot-path)+ # Seteamos el determinismo globalmente al cargar el módulo para ahorrar microsegundosos.environ["CUBLAS_WORKSPACE_CONFIG"] = ":4096:8"+ torch.use_deterministic_algorithms(True)- # Configuración de telemetría obligatoria- logging.basicConfig(level=logging.INFO)- logger = logging.getLogger("Sentinel_Omega_Sort")+ # 2. CACHÉ DE VÉRTICES (Persistent Index Buffer)+ # Pre-asignamos un buffer de índices para evitar que torch.sort+ # tenga que pedir memoria nueva al driver de la GPU en cada iteración.+ _INDEX_BUFFER = {}def custom_kernel(data):"""- Motor de ordenamiento ascendente para arreglos 1D masivos.- Optimización basada en la evasión de asignación de memoria intermedia- y delegación al backend rocPRIM subyacente de PyTorch.+ Sentinel Omega - Ordenamiento Radix v3.+ Estrategia: Static Index Dispatch + Output In-Place."""- try:- # Desempaquetado estricto- input_tensor = data[0]- output = data[1]-- torch.use_deterministic_algorithms(True)-- # Ejecución del ordenamiento.- # torch.sort invoca rocprim::radix_sort en hardware AMD.- # Se captura exclusivamente el tensor de valores, omitiendo los índices.- sorted_vals, _ = torch.sort(input_tensor)-- # Copia directa en memoria (in-place) sobre el búfer de salida preasignado.- # Elimina la sobrecarga de instanciación de nuevos tensores en VRAM.- output.copy_(sorted_vals)-- return output+ # 3. UNPACKING POR POSICIÓN (Fricción Cero)+ # Evita el overhead de la gestión de excepciones de Python+ input_t = data[0]+ output_t = data[1]++ # 4. GESTIÓN DE LA CAJA DE ÍNDICES+ # Si el tamaño cambia, el buffer se ajusta, pero en ráfagas de producción+ # esto ocurre una sola vez, logrando latencia constante.+ n = input_t.shape[0]+ if n not in _INDEX_BUFFER:+ # Los índices no los usaremos, pero torch.sort los requiere+ _INDEX_BUFFER[n] = torch.empty((n,), dtype=torch.int64, device=input_t.device)- except Exception as e:- logger.error(f"Falla técnica en motor de ordenamiento: {str(e)}")- raise e+ # 5. EL COLAPSO (Radix Sort Directo)+ # Al usar el parámetro 'out', le decimos a rocPRIM que inyecte+ # los valores directamente en el buffer de salida (data[1]).+ # Esto elimina 1 copia completa de memoria y 1 asignación (allocation).+ torch.sort(input_t, out=(output_t, _INDEX_BUFFER[n]))++ return output_t
scrolls · 67 diff lines total
Best evidence level for this revision: reported
JSON