{"library":"pyopencl","title":"PyOpenCL","description":"PyOpenCL is a Python wrapper for OpenCL, providing access to GPUs, CPUs, and other parallel compute devices for high-performance computing. It offers a Pythonic, object-oriented interface, integrates seamlessly with NumPy, and includes automatic error checking. The library is actively maintained with frequent releases, and its current version is 2026.1.2.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install pyopencl"],"cli":null},"imports":["import pyopencl as cl","import pyopencl.array as cla"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import pyopencl as cl\nimport numpy as np\n\ndef run_opencl_kernel():\n    # 1. Create a context\n    try:\n        ctx = cl.create_some_context()\n    except cl.LogicError as e:\n        print(f\"Error creating OpenCL context: {e}\")\n        print(\"Please ensure you have OpenCL drivers/ICD installed.\")\n        return\n\n    # 2. Create a command queue\n    queue = cl.CommandQueue(ctx)\n\n    # 3. Prepare host data\n    a = np.random.rand(50000).astype(np.float32)\n\n    # 4. Create device buffers and transfer data\n    mf = cl.mem_flags\n    a_buf = cl.Buffer(ctx, mf.READ_WRITE | mf.COPY_HOST_PTR, hostbuf=a)\n\n    # 5. Define and build the OpenCL kernel program\n    prg = cl.Program(ctx, \"\"\"\n    __kernel void twice(__global float *a) {\n        int gid = get_global_id(0);\n        a[gid] = 2*a[gid];\n    }\n    \"\"\").build()\n\n    # 6. Execute the kernel\n    # global_size is the total number of work-items\n    # local_size (None) lets the OpenCL driver decide\n    prg.twice(queue, a.shape, None, a_buf)\n\n    # 7. Create output array and transfer data back to host\n    result = np.empty_like(a)\n    cl.enqueue_copy(queue, result, a_buf).wait()\n\n    # 8. Verify the result\n    print(\"Original first 5 elements:\", a[:5])\n    print(\"Resulting first 5 elements:\", result[:5])\n    assert np.allclose(result, 2*a)\n    print(\"Kernel executed successfully and results verified!\")\n\nif __name__ == '__main__':\n    run_opencl_kernel()","lang":"python","description":"This quickstart demonstrates a basic PyOpenCL workflow: creating an OpenCL context and command queue, preparing data on the host (NumPy array), transferring it to the device, compiling and executing a simple OpenCL kernel (doubling array elements), and transferring results back to the host.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"2025.1","pypi_latest":"2026.1.2","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":60,"avg_install_s":4.1,"avg_import_s":0.54,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyopencl","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyopencl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.1,"import_time_s":0.38,"mem_mb":13.7,"disk_size":"90M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyopencl","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyopencl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.9,"import_time_s":0.62,"mem_mb":15.2,"disk_size":"97M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyopencl","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyopencl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.8,"import_time_s":0.9,"mem_mb":17,"disk_size":"86M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyopencl","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyopencl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.9,"import_time_s":0.52,"mem_mb":12.7,"disk_size":"85M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyopencl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.38,"mem_mb":11.7,"disk_size":"103.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyopencl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":4.8,"import_time_s":0.42,"mem_mb":11.7,"disk_size":"100M"}]}}