a
    ==icÁ  ã                
   @   s@   d Z ddlmZ ddlm  mZ dd„ Zdd„ Zddd„Z	dS )z
ONNXIFI a Caffe2 net
é    )Ú
caffe2_pb2Nc                 C   s   t  | t|ƒ¡S )z
    Set onnxifi option
    )ÚCÚonnxifi_set_optionÚstr)Úoption_nameZoption_value© r   úk/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/caffe2/python/onnx/onnxifi.pyr      s    r   c                 C   s
   t  | ¡S )z
    Get onnxifi option
    )r   Úonnxifi_get_option)r   r   r   r   r	      s    r	   é   FTc                 C   sî   t  ¡ }t|ƒt ju r|}n€t|ƒtu rœ| ¡ D ]^\}}t  ¡ }||_|jj 	|¡ |j
 	t jjgt|jjƒ ¡ t jj|j
d< |j 	|g¡ q0||_||_t |  ¡ | ¡ |r´|ng |	durÂ|	ng |||||||
|¡}t  ¡ }| |¡ |S )z[
    Transform the caffe2_net by collapsing ONNXIFI-runnable nodes into Onnxifi c2 ops
    r   N)r   ZTensorBoundShapesÚtypeÚdictÚitemsZTensorBoundShapeÚnameÚshapeÚdimsÚextendZdim_typeZCONSTANTÚlenZBATCHZshapesÚmax_batch_sizeZmax_feature_lenr   ZonnxifiZSerializeToStringZNetDefZParseFromString)Zpred_netZinput_shapesr   Zmax_seq_sizeÚdebugZuse_onnxZmerge_fp32_inputs_into_fp16Zadjust_batchZ
block_listZweight_namesZnet_ssa_rewrittenÚtimeoutZshape_hintsÚkÚvZtbsZpred_net_strZpred_net_cutr   r   r   Úonnxifi_caffe2_net   s:    

õ
r   )
r
   r
   FTFTNNFr   )
Ú__doc__Zcaffe2.protor   Z!caffe2.python._import_c_extensionÚpythonZ_import_c_extensionr   r   r	   r   r   r   r   r   Ú<module>   s   	          ô