
    i]              	       8   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dFdGdHdIdJdKdLdMZdNedOefdPZ e j
                  dQ      ZdRedOefdSZy)T    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   )z8.2z8.3z8.4z8.5z8.6z8.7z8.8ptx_versionreturnc                 j    	 t         |    \  }}d|z  d|z  z   S # t        $ r t        d|        dw xY 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minors      h/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/cuda/bindings/utils/_ptx_utils.py*get_minimal_required_cuda_ver_from_ptx_verr   5   sP    8]#K0ue|b5j(( ]CK=QRX\\]s    2z\.version\s+([0-9]+\.[0-9]+)ptxc                 h    t         j                  |       }|r|j                  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   ms     r   get_ptx_verr   ]   s2    D 	$AwwqzXYY    )rer   strintr   compiler   r    r    r   <module>r&      s   
*	6*	6* 
6* 
6	*
 
6* 
6* 
6* 
6* 
6* 
6* 
6* 
6* 
6* 
6* 
6*  
6!*" 
6#*$ 
6%*& 
6'*( 
6)** 
7+*, 
7-*. 
7/*0 
71*2 
73*4 
75*6 
77*8 
79*: 
7;*< 
7=*> 
7?*@ 
7A*B 
7C*D 
7E*F S*Z ]C  ]C  ]J 2::=> &ZS &ZS &Zr    