
    ;i	                         S SK Jr  S SKrS SKJr  S SKr\" SSS9r " S S\R                  5      r " S	 S
\R                  5      r	g)    )TypeVarN)nnTztorch.nn.Module)boundc                   N   ^  \ rS rSrSU 4S jjrS\R                  4S jrSrU =r	$ )LinearFP8Mixed   c                    > [         TU ]  XU5        S U l        S U l        / SQn[	        U5       H  u  pVXUS-      :  d  M  X`l          O   [	        U5       H  u  pVX$US-      :  d  M  X`l          g    g N)i   i   i   i         @   r      super__init__bw_codefw_code	enumeratebszbsz2selfinput_featuresoutput_featuresbiasarrayik	__class__s          p/home/dmtnaga/Documents/work/airagagent/rag_env/lib/python3.13/site-packages/bitsandbytes/research/nn/modules.pyr   LinearFP8Mixed.__init__   u    $?8e$DAa!e, % e$DAq1u-	 %    xc           	         U R                   c  [        R                  R                  SSSS5      R	                  UR
                  5      U l        [        R                  R                  SSSS5      R	                  UR
                  5      U l         [        R                  R                  UU R                  R                  5       U R                   U R                  U R                  U R                  S9nU R                  b  X R                  -  nU$ NT               )r   r   r   r   )r   bnb
functionalcreate_fp8_maptodevicer   researchmatmul_fp8_mixedweighttr   r   r   r   r%   outs      r!   forwardLinearFP8Mixed.forward   s    <<>>88q!QGJJ188TDL>>88q!QGJJ188TDLll++KKMMOLLLL , 
 99 99C
r$   r   r   r   r   T
__name__
__module____qualname____firstlineno__r   torchTensorr8   __static_attributes____classcell__r    s   @r!   r   r            r$   r   c                   N   ^  \ rS rSrSU 4S jjrS\R                  4S jrSrU =r	$ )LinearFP8Global-   c                    > [         TU ]  XU5        S U l        S U l        / SQn[	        U5       H  u  pVXUS-      :  d  M  X`l          O   [	        U5       H  u  pVX$US-      :  d  M  X`l          g    g r   r   r   s          r!   r   LinearFP8Global.__init__.   r#   r$   r%   c           	         U R                   c  [        R                  R                  SSSS5      R	                  UR
                  5      U l        [        R                  R                  SSSS5      R	                  UR
                  5      U l         [        R                  " UU R                  R                  5       U R                   U R                  U R                  U R                  S9nU R                  b  X R                  -  nU$ r'   )r   r-   r.   r/   r0   r1   r   matmul_fp8_globalr4   r5   r   r   r   r6   s      r!   r8   LinearFP8Global.forward<   s    <<>>88q!QGJJ188TDL>>88q!QGJJ188TDL##KKMMOLLLL
 99 99C
r$   r:   r;   r<   rE   s   @r!   rH   rH   -   rF   r$   rH   )
typingr   rA   r   bitsandbytesr-   r   Linearr   rH    r$   r!   <module>rS      s?       C()RYY Dbii r$   