o
    i                     @   s&  d dl Z i dddddddd	d
dddddddddddddddddddddd d!d"d#i d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdO	ZdPedQefdRdSZe dTZdUedQefdVdWZdS )X    Nz1.0)   r   z1.1)r   r   z1.2)   r   z1.3)r   r   z1.4)r   r   z2.0)   r   z2.1)r   r   z2.2)r   r   z2.3)   r   z3.0)r   r   z3.1)   r   z3.2)r   r   z4.0)   r   z4.1)r   r   z4.2)   r   z4.3)r   r   z5.0)   r   z6.0)	   r   z6.1)r
   r   z6.2)r
   r   z6.3)
   r   z6.4)r   r   z6.5)r   r   z7.0)   r   z7.1)r   r   z7.2)r   r   z7.3)r   r   z7.4)r   r   z7.5)r   r   z7.6)r   r   z7.7)r   r   z7.8)r   r	   z8.0)   r   z8.1)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r	   )r   r
   )   r   )r   r   )	z8.2z8.3z8.4z8.5z8.6z8.7z8.8z9.0z9.1ptx_versionreturnc                 C   s>   zt |  \}}d| d|  W S  ty   td|  dw )a  
    Maps the PTX ISA version to the minimal CUDA driver, nvPTXCompiler, or nvJitLink version
    that is needed to load a PTX of the given ISA version.

    Parameters
    ----------
    ptx_version : str
        PTX ISA version as a string, e.g. "8.8" for PTX ISA 8.8. This is the ``.version``
        directive in the PTX header.

    Returns
    -------
    int
        Minimal CUDA version as 1000 * major + 10 * minor, e.g. 12090 for CUDA 12.9.

    Raises
    ------
    ValueError
        If the PTX version is unknown.

    Examples
    --------
    >>> get_minimal_required_driver_ver_from_ptx_ver("8.8")
    12090
    >>> get_minimal_required_driver_ver_from_ptx_ver("7.0")
    11000
    i  r   z(Unknown or unsupported PTX ISA version: N)_ptx_to_cudaKeyError
ValueError)r   majorminor r   [/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/cuda/bindings/utils/_ptx_utils.py*get_minimal_required_cuda_ver_from_ptx_ver7   s   r   z\.version\s+([0-9]+\.[0-9]+)ptxc                 C   s    t | }|r|dS td)aO  
    Extract the PTX ISA version string from PTX source code.

    Parameters
    ----------
    ptx : str
        The PTX assembly source code as a string.

    Returns
    -------
    str
        The PTX ISA version string, e.g., "8.8".

    Raises
    ------
    ValueError
        If the .version directive is not found in the PTX source.

    Examples
    --------
    >>> ptx = r'''
    ... .version 8.8
    ... .target sm_86
    ... .address_size 64
    ...
    ... .visible .entry test_kernel()
    ... {
    ...     ret;
    ... }
    ... '''
    >>> get_ptx_ver(ptx)
    '8.8'
    r   z=No .version directive found in PTX source. Is it a valid PTX?)_ptx_ver_patternsearchgroupr   )r   mr   r   r   get_ptx_ver_   s   
"
r   )rer   strintr   compiler   r   r   r   r   r   <module>   s   	
 !"#/
%