Python wrapper for Nvidia CUDA parallel computation API with object cleanup, automatic error checking, and convenient abstractions.
{
"context": "This criteria evaluates how well the engineer uses PyCUDA's advanced memory management features, specifically memory pools and unified/managed memory capabilities. The focus is on proper usage of DeviceMemoryPool, PageLockedMemoryPool, managed memory allocation functions, and pool statistics tracking.",
"type": "weighted_checklist",
"checklist": [
{
"name": "DeviceMemoryPool usage",
"description": "Creates and uses a pycuda.tools.DeviceMemoryPool instance for device memory allocations. The pool should be initialized properly and used for allocating device memory buffers.",
"max_score": 20
},
{
"name": "PageLockedMemoryPool usage",
"description": "Creates and uses a pycuda.tools.PageLockedMemoryPool instance for page-locked host memory allocations. The pool should be properly initialized and used for allocating page-locked memory.",
"max_score": 15
},
{
"name": "Managed memory allocation",
"description": "Uses PyCUDA's managed memory allocation functions (such as pycuda.driver.managed_empty or pycuda.driver.mem_alloc_managed) to create unified memory that can be accessed from both CPU and GPU. Should properly specify attachment modes if applicable.",
"max_score": 25
},
{
"name": "Pool-based allocation",
"description": "Allocates memory using the pool's allocate() method and demonstrates that multiple allocations can be made from the same pool. Memory addresses should be properly tracked.",
"max_score": 15
},
{
"name": "Memory pool freeing",
"description": "Returns allocated memory back to the pool for reuse, either explicitly through pool methods or through proper cleanup mechanisms that allow pool reuse.",
"max_score": 10
},
{
"name": "Pool statistics",
"description": "Retrieves and uses allocation statistics from the device memory pool, such as the number of active allocations. This may involve accessing pool attributes or methods that track allocation state.",
"max_score": 10
},
{
"name": "Context initialization",
"description": "Properly initializes a CUDA context using pycuda.autoinit or explicit context creation (pycuda.driver.init, Device, Context) before performing memory operations.",
"max_score": 5
}
]
}tessl i tessl/pypi-pycuda@2025.1.0docs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10