
    a,j 9                     d   U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZmZ d d	lmZmZ  ej        e          Zej        e d
<   dZ!e"e d<    ed           G d d                      Z# ed           G d d                      Z$ ed           G d d                      Z% G d de          Z&de'e(         de"de'e#         fdZ)de'e(         de"de'e#         fdZ*	 d7de(de(de"de+e'e(         e'e#         f         fdZ,d e(fd!Z-d"e'e(         d#e'e#         de(dz  fd$Z.d%Z/d&Z0d'Z1 G d( d)          Z2 G d* d+e          Z3 G d, d-e          Z4 G d. d/          Z5	 d8d0e6d1e(dz  d2e"d3e'e&         d4e7e(         d5e"ddfd6Z8dS )9    N)ABCabstractmethod)Callable)ThreadPoolExecutor)	dataclass)BaseHTTPRequestHandlerThreadingHTTPServer)parse_qsurlparse)
DictLoaderEnvironment)get_world_sizetcpstore_clientlogger      N@_DEFAULT_FETCH_TIMEOUTT)slotsc                   0    e Zd ZU eed<   eed<   d Zd ZdS )Responsestatus_codetextc                 Z    | j         dk    rt          d| j          d| j                   d S )N   zHTTP : )r   RuntimeErrorr   selfs    a/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/torch/distributed/debug/_frontend.pyraise_for_statuszResponse.raise_for_status#   s<    s""Ft'7FF49FFGGG #"    c                 4    t          j        | j                  S N)jsonloadsr   r   s    r   r#   zResponse.json'   s    z$)$$$r    N)__name__
__module____qualname__int__annotations__strr   r#    r    r   r   r      sL         
IIIH H H% % % % %r    r   c                   $    e Zd ZU eed<   eed<   dS )NavLinkpathlabelN)r%   r&   r'   r*   r)   r+   r    r   r-   r-   +   s"         
IIIJJJJJr    r-   c                   6    e Zd ZU eed<   edgef         ed<   dS )Router.   HTTPRequestHandlerhandlerN)r%   r&   r'   r*   r)   r   bytesr+   r    r   r1   r1   1   s5         
III+,e3444444r    r1   c                       e Zd ZU eZeed<   edee	         fd            Z
edee         fd            Zdeeef         fdZdedz  fdZdefdZdS )	DebugHandlerfetch_timeoutreturnc                     d S r"   r+   r   s    r   routeszDebugHandler.routes:   s    %(Sr    c                     d S r"   r+   r   s    r   	nav_linkszDebugHandler.nav_links=   s    *-#r    c                     i S r"   r+   r   s    r   	templateszDebugHandler.templates@   s    	r    Nc                     d S r"   r+   r   s    r   dumpzDebugHandler.dumpC   s    tr    c                 N    t          |           j                                        S r"   )typer%   lowerr   s    r   dump_filenamezDebugHandler.dump_filenameF   s    Dzz"((***r    )r%   r&   r'   r   r7   floatr)   r   listr1   r:   r-   r<   dictr*   r>   r@   rD   r+   r    r   r6   r6   7   s         1M5111(U((( ^(-4=--- ^-4S>    cDj    +s + + + + + +r    r6   urlstimeoutr8   c                     dd l d}dt          dt          ffd}t          |          5 }t	          |                    ||                     }d d d            n# 1 swxY w Y   |S )Nr      urlr8   c                    	                      |           }t          |j        |j                  S # j        j        $ r}t          dd|           cY d }~S d }~wj        j        $ r}t          dd|           cY d }~S d }~wt          $ r1}t          dt          |          j	         d|           cY d }~S d }~ww xY w)NrI     z	Timeout:   zConnectionError:   r   )
postr   r   r   
exceptionsTimeoutConnectionError	ExceptionrB   r%   )rL   resperequestsrI   s      r   getzfetch_thread_pool.<locals>.getU   s   	===g=66DD,di888"* 	2 	2 	2CQ11111111"2 	: 	: 	:C!8Q!8!899999999 	= 	= 	=CDGG$4!;!;!;!;<<<<<<<<	=s?   04 CACC-B?CC&B>8C>C)max_workers)rY   r*   r   r   rF   map)rH   rI   r[   rZ   executorrespsrY   s    `    @r   fetch_thread_poolr_   O   s    OOOK	= 	= 	= 	= 	= 	= 	= 	= 	= 
	4	4	4 .X\\#t,,--. . . . . . . . . . . . . . . Ls   $AA"%A"c                     dd l dj        dt          dt          ffddt          t                   dt          t                   ffd}t          j         ||                     S )Nr   sessionrL   r8   c                 ,  K   	 |                      |          4 d {V }|                                 d {V }t          |j        |          cd d d           d {V  S # 1 d {V swxY w Y   d S # t          j        $ r}t          dd|           cY d }~S d }~wj        $ r1}t          dt          |          j         d|           cY d }~S d }~wt          $ r1}t          dt          |          j         d|           cY d }~S d }~ww xY w)NrO   zTimeoutError: rP   r   rQ   )
rR   r   r   statusasyncioTimeoutErrorClientErrorrB   r%   rV   )ra   rL   rW   r   rX   aiohttps        r   fetchzfetch_aiohttp.<locals>.fetchk   s     		=||C(( 3 3 3 3 3 3 3D!YY[[((((((T223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 # 	7 	7 	7C!5!!5!566666666" 	= 	= 	=CDGG$4!;!;!;!;<<<<<<<< 	= 	= 	=CDGG$4!;!;!;!;<<<<<<<<	=sd   A5 /A"A5 "
A,,A5 /A,0A5 5DBDD)&CDD"&DDDrH   c                   K                                  }                    |          4 d {V t          t          j        fd| D               d {V           cd d d           d {V  S # 1 d {V swxY w Y   d S )N)totalrN   c                 (    g | ]} |          S r+   r+   ).0rL   rh   ra   s     r   
<listcomp>z1fetch_aiohttp.<locals>.gather.<locals>.<listcomp>z   s%    .S.S.SsuuWc/B/B.S.S.Sr    )ClientTimeoutClientSessionrF   rd   gather)rH   client_timeoutra   rg   rh   rI   s     @r   rp   zfetch_aiohttp.<locals>.gatherw   sQ      ..W.==(((@@ 	V 	V 	V 	V 	V 	V 	VGgn.S.S.S.S.Sd.S.S.STTTTTTTUU	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	Vs   .A88
BB)rg   ro   r*   r   rF   rd   run)rH   rI   rp   rg   rh   s    ` @@r   fetch_aiohttprs   f   s     NNN
=W2 
= 
= 
= 
= 
= 
= 
= 
=V49 Vh V V V V V V V V
 ;vvd||$$$r     endpointargsc                $    t                      }d t          t                                D             }|                    |          } fd|D             }	 t	          ||          }n!# t
          $ r t          ||          }Y nw xY w||fS )Nc                     g | ]}d | S )rankr+   )rl   rs     r   rm   zfetch_all.<locals>.<listcomp>   s    8881J1JJ888r    c                 H    g | ]}|                                  d  d S )z	/handler/?)decode)rl   addrrv   ru   s     r   rm   zfetch_all.<locals>.<listcomp>   s7    LLLd9999499LLLr    rN   )r   ranger   	multi_getrs   ImportErrorr_   )ru   rv   rI   storekeysaddrsr^   s   ``     r   	fetch_allr      s     E88n&6&6 7 7888DOOD!!ELLLLLeLLLE:eW555 : : :!%999: %<s   A- -B
Bblobc                 V    t          j        |           }t          j        |d          S )N   )indent)r#   r$   dumps)r   parseds     r   format_jsonr      s&    ZF:fQ''''r    r   r^   c                    d t          |          D             }|sdS t          |           }|t          |          z
  }d| d| dg}|D ]%\  }}|                    d| d|j                    &d                    |          S )	zHReturn a summary string if any workers failed, or None if all succeeded.c                 2    g | ]\  }}|j         d k    ||fS )r   )r   )rl   irz   s      r   rm   z(format_fetch_summary.<locals>.<listcomp>   s,    JJJAQ]c5I5Iq!f5I5I5Ir    NzPARTIAL DATA: /z workers respondedz  Rank r   
)	enumeratelenappendr   join)r   r^   failedrj   oklinesry   rW   s           r   format_fetch_summaryr      s    JJ5!1!1JJJF tJJE	V	B<b<<5<<<=E 4 4
d2t22ty22333399Ur    ac  
<!doctype html>
<head>
    <title>{% block title %}{% endblock %} - PyTorch Distributed</title>
    <link rel="shortcut icon" type="image/x-icon" href="https://pytorch.org/favicon.ico?">

    <style>
        body {
            margin: 0;
            font-family:
                -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,
                "Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji",
                "Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
            font-size: 1rem;
            font-weight: 400;
            line-height: 1.5;
            color: #212529;
            text-align: left;
            background-color: #fff;
        }
        h1, h2, h2, h4, h5, h6, .h1, .h2, .h2, .h4, .h5, .h6 {
            margin-bottom: .5rem;
            font-weight: 500;
            line-height: 1.2;
        }
        nav {
            background-color: rgba(0, 0, 0, 0.17);
            padding: 10px;
            display: flex;
            align-items: center;
            padding: 16px;
            justify-content: flex-start;
        }
        nav h1 {
            display: inline-block;
            margin: 0;
        }
        nav a {
           margin: 0 8px;
        }
        section {
            max-width: 1280px;
            padding: 16px;
            margin: 0 auto;
        }
        pre {
            white-space: pre-wrap;
            max-width: 100%;
        }
    </style>
</head>

<nav>
    <h1>Torch Distributed Debug Server</h1>

    {{ nav_links | safe }}
</nav>

<section class="content">
  {% block header %}{% endblock %}
  {% block content %}{% endblock %}
</section>
    a  
{% extends "base.html" %}
{% block header %}
    <h1>{% block title %}{{title}}{% endblock %}</h1>
{% endblock %}
{% block content %}
    {% for i, (addr, resp) in enumerate(zip(addrs, resps)) %}
        <h2>Rank {{ i }}: {{ addr }}</h2>
        {% if resp.status_code != 200 %}
            <p>Failed to fetch: status={{ resp.status_code }}</p>
            <pre>{{ resp.text }}</pre>
        {% else %}
            <pre>{{ resp.text }}</pre>
        {% endif %}
    {% endfor %}
{% endblock %}
    a  
{% extends "base.html" %}
{% block header %}
    <h1>{% block title %}{{ title }}{% endblock %}</h1>
{% endblock %}
{% block content %}
    {% for i, (addr, resp) in enumerate(zip(addrs, resps)) %}
        <h2>Rank {{ i }}: {{ addr }}</h2>
        {% if resp.status_code != 200 %}
            <p>Failed to fetch: status={{ resp.status_code }}</p>
            <pre>{{ resp.text }}</pre>
        {% else %}
            <pre>{{ format_json(resp.text) }}</pre>
        {% endif %}
    {% endfor %}
{% endblock %}
    c            	       N    e Zd Z	 ddee         dededdfdZddZdd	Z	dd
Z
dS )PeriodicDumperr   handlers
output_dirinterval_secondsr8   Nc                 n    || _         || _        || _        t          j                    | _        d | _        d S r"   )	_handlers_output_dir_interval_seconds	threadingEvent_stop_event_thread)r   r   r   r   s       r   __init__zPeriodicDumper.__init__  s6     "%!1$?,,04r    c                     t          j        | j        d           t          j        | j        dd          | _        | j                                         d S )NT)exist_okz distributed.debug.PeriodicDumper)targetdaemonname)osmakedirsr   r   Thread_runr   startr   s    r   r   zPeriodicDumper.start  sZ    
D$t4444 '93
 
 

 	r    c                 |    | j                                          | j        | j                                         d S d S r"   )r   setr   r   r   s    r   stopzPeriodicDumper.stop&  sA    <#L $#r    c                    | j                                         sY| j        D ]}	 |                                }n=# t          $ r0 t
                              d|                                           Y Rw xY w|Yt          j	        d          }|                                 d| d}t          j                            | j        |          }	 t          |d          5 }|                    |           d d d            n# 1 swxY w Y   # t          $ r t
                              d|           Y w xY w| j                             | j                   | j                                         Wd S d S )NzFailed to dump %sz%Y%m%d_%H%M%S_z.txtwzFailed to write dump to %s)r   is_setr   r@   rV   r   	exceptionrD   timestrftimer   r.   r   r   openwritewaitr   )r   r3   content	timestampfilenamer.   fs          r   r   zPeriodicDumper._run+  s   "))++ 	:> I I%llnnGG    $$%8':O:O:Q:QRRRH ? M/::	%3355GG	GGGw||D$4h??IdC )A((() ) ) ) ) ) ) ) ) ) ) ) ) ) )  I I I$$%A4HHHHHI!!$"8999# "))++ 	: 	: 	: 	: 	:sE   ;7A54A5DD5DD	DD		D%D65D6r   r8   N)r%   r&   r'   rF   r6   r*   rE   r   r   r   r   r+   r    r   r   r     s        
 #'	
5 
5|$
5 
5  	
5
 

5 
5 
5 
5          
: : : : : :r    r   c                   @    e Zd ZU ej        Zej        ed<   dZe	ed<   dS )_IPv6HTTPServeraddress_familyi   request_queue_sizeN)
r%   r&   r'   socketAF_INET6r   AddressFamilyr)   r   r(   r+   r    r   r   r   E  s8         +1?NF(:::""""""r    r   c            	           e Zd ZU ded<   d Zd ZdefdZdeee	e         f         fdZ
defdZd	efd
edededefdZd	S )r2   FrontendServerfrontendc                 Z    t                               d| j        d         ||z             d S )Nz%s %sr   )r   infoclient_address)r   formatrv   s      r   log_messagezHTTPRequestHandler.log_messageM  s7    "TM	
 	
 	
 	
 	
r    c                 :    | j                             |            d S r"   )r   _handle_requestr   s    r   do_GETzHTTPRequestHandler.do_GETT  s    %%d+++++r    r8   c                 4    t          | j                  j        S r"   )r   r.   r   s    r   get_pathzHTTPRequestHandler.get_pathW  s    	""''r    c                 D    t          |                                           S r"   )r
   get_raw_queryr   s    r   	get_queryzHTTPRequestHandler.get_queryZ  s    **,,---r    c                 4    t          | j                  j        S r"   )r   r.   queryr   s    r   r   z HTTPRequestHandler.get_raw_query]  s    	""((r    Nr   defaultrB   c                 d    |                                  }||vr|S  |||         d                   S )Nr   )r   )r   r   r   rB   r   s        r   get_query_argz HTTPRequestHandler.get_query_arg`  s;       uNtE$KN###r    )r%   r&   r'   r)   r   r   r*   r   rG   rF   r   r   objectrB   r   r+   r    r   r2   r2   J  s         
 
 
, , ,(# ( ( ( (.4T#Y/ . . . .)s ) ) ) ) ,0c$ $$"($7;$	$ $ $ $ $ $r    r2   c                   h    e Zd Z	 ddedee         dz  fdZddZddZde	ddfd	Z
d
ededefdZdS )r   Nportr   c                    |ddl m}  |            }d                    d |D                       }t          t          t
          d}|D ])}|                    |                                           *t          |          }t          |d          | _
        | j
        j                            t          t          t          |           i | _        |D ]-}|                                D ]}|j        | j        |j        <   .|| _        t)          d	t*          fd
| i          }	d|f}
t-          |
|	          | _        t1          j        | j        ddd          | _        | j                                         d S )Nr   )default_handlersr   c              3   j   K   | ].}|                                 D ]}d |j         d|j         dV  /dS )z    <a href="z">z</a> <!--@lint-ignore-->N)r<   r.   r/   )rl   r3   links      r   	<genexpr>z*FrontendServer.__init__.<locals>.<genexpr>u  sq       
 
))++
 
  NDIMMMMM
 
 
 
 
 
 
r    )z	base.htmlzraw_resp.htmlzjson_resp.htmlT)loaderenable_async)zipr   r   r<   r2   r   rt   r+   z distributed.debug.FrontendServer)r   rv   r   r   )'torch.distributed.debug._debug_handlersr   r   BASE_TEMPLATERAW_RESP_TEMPLATEJSON_RESP_TEMPLATEupdater>   r   r   
_jinja_envglobalsr   r   r   _routesr:   r3   r.   r   rB   r2   r   _serverr   r   _server   r   )r   r   r   r   nav_htmlall_templatesr3   r   routeRequestHandlerClassserver_addresss              r   r   zFrontendServer.__init__j  s   
 PPPPPP''))H 99 
 
#
 
 
 
 
 '.0)
 )

   	6 	6G  !2!2!4!45555M**%V$GGG&&#	 	' 	
 	
 	
 JL 	9 	9G )) 9 9+0=UZ((9 " # !
 
 d&~7JKK ';3	
 
 
 	r    r8   c                     	 | j                                          d S # t          $ r t                              d           Y d S w xY w)Nz got exception in frontend server)r   serve_foreverrV   r   r   r   s    r   r   zFrontendServer._serve  s_    	AL&&((((( 	A 	A 	A?@@@@@@	As    $AAc                 8    | j                                          d S r"   )r   r   r   s    r   r   zFrontendServer.join  s    r    reqc                    |                                 }|| j        vr|                    dd|            d S | j        |         }	  ||          }n`# t          t          f$ rL}t
                              d|           |                    ddt          |                      Y d }~d S d }~ww xY w|                    d           |	                    dd           |
                                 |j                            |           d S )	Ni  zHandler not found: z-Exception in frontend server when handling %si  zException: r   zContent-typez	text/html)r   r   
send_errorrV   
SystemExitr   r   reprsend_responsesend_headerend_headerswfiler   )r   r   r.   r3   rW   rX   s         r   r   zFrontendServer._handle_request  s&   ||~~t|##NN3 <d < <===F,t$		73<<DD:& 	 	 	?   NN3 7d1gg 7 7888FFFFF	 	#444	s   A B0$AB++B0templatekwargsc                 p     | j                             |          j        di |                                S )Nr+   )r   get_templaterenderencode)r   r  r  s      r   render_templatezFrontendServer.render_template  s7    <t++H55<FFvFFMMOOOr    r"   r   )r%   r&   r'   r(   rF   r6   r   r   r   r2   r   r*   r   r4   r  r+   r    r   r   r   i  s         /3; ;; |$t+; ; ; ;zA A A A   #5 $    .P Pv P% P P P P P Pr    r   r   dump_dirdump_intervalr   enabled_dumpsr7   c                    |D ]	}||_         
t                              t          j                   t          | |          }t                              d|j        j                   d }|Mt          fd|D             ||          }|
                                 t                              d||           	 |                                 ||                                 d S d S # ||                                 w w xY w)N)r   r   z"Frontend server started on port %dc                 @    g | ]}|                                 v |S r+   )rD   )rl   r3   r  s     r   rm   zmain.<locals>.<listcomp>  s:       ((**m;; ;;;r    z2Periodic dumper started, writing to %s every %.0fs)r7   r   setLevelloggingINFOr   r   r   server_portr   r   r   r   )	r   r  r  r   r  r7   r3   serverdumpers	       `    r   mainr    s#     . . -
OOGL!!!999F
KK4fn6PQQQ$(F   '  
 
 
 	@	
 	
 	
KKMMMMM 6KKMMMM s   :C( (D)rt   r   )9rd   r#   r  r   r   r   r   abcr   r   collections.abcr   concurrent.futuresr   dataclassesr   http.serverr   r	   urllib.parser
   r   jinja2r   r   torch.distributed.debug._storer   r   	getLoggerr%   r   Loggerr)   r   rE   r   r-   r1   r6   rF   r*   r_   rs   tupler   r   r   r   r   r   r   r   r2   r   r(   r   r  r+   r    r   <module>r%     sb      				       # # # # # # # # $ $ $ $ $ $ 1 1 1 1 1 1 ! ! ! ! ! ! C C C C C C C C + + + + + + + + * * * * * * * * J J J J J J J J +*844 4 4 4 $  $ $ $ 	% 	% 	% 	% 	% 	% 	% 	%        
 5 5 5 5 5 5 5 5
+ + + + +3 + + +0DI  $x.    .%S	 %E %d8n % % % %4  " /4
49d8n$%    (c ( ( ( (

S	 
$x. 
S4Z 
 
 
 
$>@ $ 0-: -: -: -: -: -: -: -:j# # # # #) # # #
$ $ $ $ $/ $ $ $>_P _P _P _P _P _P _P _PP  & &
&Dj& & < 	&
 s8& & 
& & & & & &r    