U
    ‰dÅ  ã                   @   s:   d dl m  m  mZ d dlmZ G dd„ dejƒZdS )é    N)Ú	workspacec                   @   s.   e Zd Zddd„Zdd„ Zdd„ Zd	d
„ ZdS )ÚComputeLossNÚ c                 C   s   || _ || _d| _d| _d S ©Nr   )Ú	blob_nameÚoptsÚiterÚvalue)Úselfr   r   © r   úJ/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/contrib/playground/compute_loss.pyÚ__init__   s    zComputeLoss.__init__c                 C   s   d| _ d| _d S r   )r   r	   )r
   r   r   r   ÚReset   s    zComputeLoss.Resetc              	   C   sz   d}t | jd d | jd d | jd d  ƒD ](}|t d | jd d || j¡¡7 }q0|  j|7  _|  jd7  _dS )	z$Average values of a blob on each gpur   ÚdistributedZfirst_xpu_idZnum_xpusz{}_{}/{}Zdeviceé   N)Úranger   r   Z	FetchBlobÚformatr   r	   r   )r
   r	   Úidxr   r   r   ÚAdd   s    ÿÿ
  ÿ
zComputeLoss.Addc                 C   s&   | j d d | j | j }|  ¡  |S )Nr   Z
num_shards)r   r	   r   r   )r
   Úresultr   r   r   ÚCompute    s    zComputeLoss.Compute)Nr   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   
   s   
r   )Zcaffe2.contrib.playground.meterÚcontribZ
playgroundZmeterZMeterZcaffe2.pythonr   r   r   r   r   r   Ú<module>   s   