
    [Th                     B    S SK r S SKJr   " S S\ R                  5      rg)    Nc                   p    \ rS rSrSr\R                  S\R                  S\R                  4S j5       r	Sr
g)Sharder   aT  
This is an interface which allows user to create more advanced
sharding strategies that are not easily be composed by the
`ShardingSpec`.

:class:`torch.distributed._shard.sharding_plan.ShardingPlan` could
take an object of the `Sharder` and call `shard` to shard the module,
then replace the original module with sharded module returned.
modulereturnc                     g)a)  
Shard a module base on the implementation of this method, and
return the sharded version of the module.

Args:
    module (:class:`torch.nn.Module`):
        The module to apply sharding to.
Returns:
    A :class:`torch.nn.Module` object that represents a module
    that's already been sharded.
N )selfr   s     X/var/www/auris/envauris/lib/python3.13/site-packages/torch/distributed/_shard/sharder.pyshardSharder.shard   s        r	   N)__name__
__module____qualname____firstlineno____doc__abcabstractmethodnnModuler   __static_attributes__r	   r   r   r   r      s7     	BII "))  r   r   )r   torch.nnr   ABCr   r	   r   r   <module>r      s    
 cgg r   