o
    so™i•  ã                   @  sT   d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 G dd„ deƒZdS )é    )ÚannotationsN)ÚBase)Úexpect)Úrotary_embeddingc                   @  s|   e Zd Zeddd„ƒZeddd„ƒZeddd„ƒZedd	d
„ƒZeddd„ƒZeddd„ƒZ	eddd„ƒZ
eddd„ƒZdS )ÚRotaryEmbeddingÚreturnÚNonec                  C  s¤   t jjdg d¢dgd} tj dddd¡ tj¡}tj d	d
d¡ tj	¡}tj d
d¡ tj¡}tj d
d¡ tj¡}t
||||d}t| ||||g|gdd d S )Nr   ©ÚinputÚ	cos_cacheÚ	sin_cacheÚposition_idsÚoutput©ÚinputsÚoutputsé   é   é   é   r   é2   ©r   r   )r   Útest_rotary_embedding©r   r   Úname©ÚonnxÚhelperÚ	make_nodeÚnpÚrandomÚrandÚastypeÚfloat32ÚuniformÚint64r   r   ©ÚnodeÚ
input_dataÚposition_ids_dataÚsin_cache_dataÚcos_cache_dataÚexpected_output© r-   ú_/home/ubuntu/.local/lib/python3.10/site-packages/onnx/backend/test/case/node/rotaryembedding.pyÚexport_rotary_embedding   s$   ýÿ

üz'RotaryEmbedding.export_rotary_embeddingc                  C  sª   d} t jjdg d¢dg| d}tj ddd¡ tj¡}tj d	d
d¡ tj	¡}tj d
d¡ tj¡}tj d
d¡ tj¡}t
||||| d}t|||||g|gdd d S )Nr   r   r	   r   )r   r   Ú	num_headsr   r   é    r   r   r   )r   r0   Útest_rotary_embedding_3d_inputr   r   )r0   r'   r(   r)   r*   r+   r,   r-   r-   r.   Ú export_rotary_embedding_3d_input'   s0   üû

üz0RotaryEmbedding.export_rotary_embedding_3d_inputc                  C  s¨   t jjdg d¢dgdd} tj dddd	¡ tj¡}tj d
dd¡ tj	¡}tj dd¡ tj¡}tj dd¡ tj¡}t
||||dd}t| ||||g|gdd d S )Nr   r	   r   é   ©r   r   Úinterleavedr   r   r   r   r   r   r   )r   r6   Ú!test_rotary_embedding_interleavedr   r   r&   r-   r-   r.   Ú#export_rotary_embedding_interleavedE   ó.   üû

üz3RotaryEmbedding.export_rotary_embedding_interleavedc                  C  s¨   t jjdg d¢dgdd} tj dddd¡ tj¡}tj d	d
d¡ tj	¡}tj d
d¡ tj¡}tj d
d¡ tj¡}t
||||dd}t| ||||g|gdd d S )Nr   r	   r   r   ©r   r   Úrotary_embedding_dimr   r   r   r   r   r   )r   r;   Ú%test_rotary_embedding_with_rotary_dimr   r   r&   r-   r-   r.   Ú'export_rotary_embedding_with_rotary_dimb   r9   z7RotaryEmbedding.export_rotary_embedding_with_rotary_dimc                  C  s¬   t jjdg d¢dgddd} tj dddd	¡ tj¡}tj d
dd¡ tj	¡}tj dd¡ tj¡}tj dd¡ tj¡}t
||||ddd}t| ||||g|gdd d S )Nr   r	   r   r   r4   )r   r   r;   r6   r   r   r   r   r   r   )r   r6   r;   Ú1test_rotary_embedding_with_interleaved_rotary_dimr   r   r&   r-   r-   r.   Ú3export_rotary_embedding_with_interleaved_rotary_dim   s2   ûú	

üzCRotaryEmbedding.export_rotary_embedding_with_interleaved_rotary_dimc                  C  sŠ   t jjdg d¢dgd} tj dddd¡ tj¡}tj ddd¡ tj¡}tj ddd¡ tj¡}t|||ƒ}t	| |||g|gd	d
 d S )Nr   ©r
   r   r   r   r   r   r   r   r   Ú%test_rotary_embedding_no_position_idsr   ©
r   r   r   r   r    r!   r"   r#   r   r   ©r'   r(   r*   r+   r,   r-   r-   r.   Ú'export_rotary_embedding_no_position_idsž   s   ý
üz7RotaryEmbedding.export_rotary_embedding_no_position_idsc                  C  s   t jjdg d¢dgdd} tj dddd	¡ tj¡}tj ddd¡ tj¡}tj ddd¡ tj¡}t|||dd
}t	| |||g|gdd d S )Nr   r@   r   r4   r5   r   r   r   r   )r6   Ú1test_rotary_embedding_no_position_ids_interleavedr   rB   rC   r-   r-   r.   Ú3export_rotary_embedding_no_position_ids_interleaved³   ó*   üü
üzCRotaryEmbedding.export_rotary_embedding_no_position_ids_interleavedc                  C  s   t jjdg d¢dgdd} tj dddd¡ tj¡}tj ddd¡ tj¡}tj ddd¡ tj¡}t|||dd	}t	| |||g|gd
d d S )Nr   r@   r   r   r:   r   r   r   )r;   Ú0test_rotary_embedding_no_position_ids_rotary_dimr   rB   rC   r-   r-   r.   Ú2export_rotary_embedding_no_position_ids_rotary_dimÎ   rG   zBRotaryEmbedding.export_rotary_embedding_no_position_ids_rotary_dimN)r   r   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr/   r3   r8   r=   r?   rD   rF   rI   r-   r-   r-   r.   r      s"    r   )Ú
__future__r   Únumpyr   r   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   Ú&onnx.reference.ops.op_rotary_embeddingr   r   r-   r-   r-   r.   Ú<module>   s   