o
    Ti                     @   s0   d dl Z d dlZddlmZ G dd deZdS )    N   )	OpBuilderc                       sb   e Zd ZdZdZ fddZdd Zdd Zd	d
 Zdd Z	dd Z
dd Zd fdd	Z  ZS )AsyncIOBuilderDS_BUILD_AIOasync_ioc                    s   t  j| jd d S )N)name)super__init__NAMEself	__class__ Y/home/ubuntu/.local/lib/python3.10/site-packages/deepspeed/ops/op_builder/xpu/async_io.pyr	      s   zAsyncIOBuilder.__init__c                 C   s   d| j  dS )Nzdeepspeed.ops.aio._op)r
   r   r   r   r   absolute_name   s   zAsyncIOBuilder.absolute_namec                 C   s   g dS )N)z%csrc/aio/py_lib/deepspeed_py_copy.cppzcsrc/aio/py_lib/py_ds_aio.cppz$csrc/aio/py_lib/deepspeed_py_aio.cppz+csrc/aio/py_lib/deepspeed_py_aio_handle.cppz(csrc/aio/py_lib/deepspeed_aio_thread.cppz'csrc/aio/common/deepspeed_aio_utils.cppz(csrc/aio/common/deepspeed_aio_common.cppz'csrc/aio/common/deepspeed_aio_types.cppz(csrc/aio/py_lib/deepspeed_pin_tensor.cppz*csrc/aio/py_lib/deepspeed_py_io_handle.cppz$csrc/aio/py_lib/deepspeed_cpu_op.cppz)csrc/aio/py_lib/deepspeed_aio_op_desc.cppr   r   r   r   r   sources      zAsyncIOBuilder.sourcesc                 C   s   ddgS )Nzcsrc/aio/py_libzcsrc/aio/commonr   r   r   r   r   include_paths&   r   zAsyncIOBuilder.include_pathsc                 C   sj   dd l }|  }|  }tt|jddd \}}|dkr&|dkr&d}nd}ddd	|d
dd|d|dgS )Nr   .   r   z
-std=c++17z
-std=c++14z-gz-Wallz-O0z-sharedz-fPICz-Wno-reorderz-fopenmp-laio)torchcpu_arch
simd_widthmapint__version__split)r   r   CPU_ARCH
SIMD_WIDTHTORCH_MAJORTORCH_MINORCPP_STDr   r   r   cxx_args)   s&   zAsyncIOBuilder.cxx_argsc                 C   s   dgS )Nr   r   r   r   r   r   extra_ldflagsA   s   zAsyncIOBuilder.extra_ldflagsc                 C   s   t g dg dg dd}d}| D ]=\}}|\}}}t|}|d urP|||g}	tj|	tjtjd}
|
 dkr?d} |S | | j	 d	| d
|   |S q|S )N)z-lz
libaio-devapt)z-Qlibaiopacman)z-qzlibaio-develyum)dpkgr)   rpmF)stdoutstderrr   Tz: please install the z package with )
dictitemsshutilwhich
subprocessPopenPIPEwaitwarningr
   )r   libsfoundpkgmgrdataflaglibtoolpathcmdresultr   r   r   check_for_libaio_pkgD   s*   


z#AsyncIOBuilder.check_for_libaio_pkgFc                    sH   |  dd}|r|s| | j d |   | d t |o#|S )Nio_pgetevents)aiozI requires the dev libaio .so object and headers but these were not found.zIf libaio is already installed (perhaps from source), try setting the CFLAGS and LDFLAGS environment variables to where it can be found.)has_functionr7   r
   rB   r   is_compatible)r   verboseaio_compatibler   r   r   rF   Y   s   zAsyncIOBuilder.is_compatible)F)__name__
__module____qualname__	BUILD_VARr
   r	   r   r   r   r%   r&   rB   rF   __classcell__r   r   r   r   r      s    r   )r1   r3   builderr   r   r   r   r   r   <module>   s   