





'''simple docstring'''

from manim import *


class       a_  (       snake_case_ ):

    '''simple docstring'''


    def     snake_case_(	self )	->     str:
        _SCREAMING_SNAKE_CASE             =    Rectangle(height=0.5				,	width=0.5 )
        _SCREAMING_SNAKE_CASE             =    Rectangle(height=0.46				,	width=0.46 ).set_stroke(width=0 )
        _SCREAMING_SNAKE_CASE             =    Rectangle(height=0.25				,	width=0.25 )

        _SCREAMING_SNAKE_CASE             =    [mem.copy() for i in range(6 )]
        _SCREAMING_SNAKE_CASE             =    [mem.copy() for i in range(6 )]
        _SCREAMING_SNAKE_CASE             =    VGroup(*A ).arrange(A				,	buff=0 )
        _SCREAMING_SNAKE_CASE             =    VGroup(*A ).arrange(A				,	buff=0 )
        _SCREAMING_SNAKE_CASE             =    VGroup(A				,	A ).arrange(A				,	buff=0 )
        _SCREAMING_SNAKE_CASE             =    Text("""CPU"""				,	font_size=24 )
        _SCREAMING_SNAKE_CASE             =    Group(A				,	A ).arrange(A				,	buff=0.5				,	aligned_edge=A )
        cpu.move_to([-2.5, -0.5, 0] )
        self.add(A )

        _SCREAMING_SNAKE_CASE             =    [mem.copy() for i in range(4 )]
        _SCREAMING_SNAKE_CASE             =    VGroup(*A ).arrange(A				,	buff=0 )
        _SCREAMING_SNAKE_CASE             =    Text("""GPU"""				,	font_size=24 )
        _SCREAMING_SNAKE_CASE             =    Group(A				,	A ).arrange(A				,	buff=0.5				,	aligned_edge=A )
        gpu.move_to([-1, -1, 0] )
        self.add(A )

        _SCREAMING_SNAKE_CASE             =    [mem.copy() for i in range(6 )]
        _SCREAMING_SNAKE_CASE             =    VGroup(*A ).arrange(A				,	buff=0 )

        _SCREAMING_SNAKE_CASE             =    Text("""Model"""				,	font_size=24 )
        _SCREAMING_SNAKE_CASE             =    Group(A				,	A ).arrange(A				,	buff=0.5				,	aligned_edge=A )
        model.move_to([3, -1.0, 0] )
        self.add(A )

        _SCREAMING_SNAKE_CASE             =    []
        _SCREAMING_SNAKE_CASE             =    []

        for i, rect in enumerate(A ):
            rect.set_stroke(A )

            _SCREAMING_SNAKE_CASE             =    Rectangle(height=0.46 / 4				,	width=0.46 / 3 ).set_stroke(width=0.0 ).set_fill(A				,	opacity=0.7 )

            if i == 0:
                cpu_target.next_to(cpu_left_col_base[0].get_corner(DOWN + LEFT )				,	buff=0.02				,	direction=A )
                cpu_target.set_x(cpu_target.get_x() + 0.1 )
            elif i == 3:
                cpu_target.next_to(model_cpu_arr[0]				,	direction=A				,	buff=0.0 )
            else:
                cpu_target.next_to(model_cpu_arr[i - 1]				,	direction=A				,	buff=0.0 )
            self.add(A )
            model_cpu_arr.append(A )

        self.add(*A				,	*A )

        _SCREAMING_SNAKE_CASE             =    [meta_mem.copy() for i in range(6 )]
        _SCREAMING_SNAKE_CASE             =    [meta_mem.copy() for i in range(6 )]
        _SCREAMING_SNAKE_CASE             =    VGroup(*A ).arrange(A				,	buff=0 )
        _SCREAMING_SNAKE_CASE             =    VGroup(*A ).arrange(A				,	buff=0 )
        _SCREAMING_SNAKE_CASE             =    VGroup(A				,	A ).arrange(A				,	buff=0 )
        _SCREAMING_SNAKE_CASE             =    Text("""Disk"""				,	font_size=24 )
        _SCREAMING_SNAKE_CASE             =    Group(A				,	A ).arrange(A				,	buff=0.5				,	aligned_edge=A )
        disk.move_to([-4.0, -1.25, 0] )
        self.add(A				,	A )

        _SCREAMING_SNAKE_CASE             =    []

        for i in range(6 ):
            _SCREAMING_SNAKE_CASE             =    fill.copy().set_fill(A				,	opacity=0.8 )
            target.move_to(disk_left_col_base[i] ).scale(0.5 )
            cpu_disk_arr.append(A )

        self.add(*A )

        _SCREAMING_SNAKE_CASE             =    Square(side_length=2.2 )
        key.move_to([-5, 2, 0] )

        _SCREAMING_SNAKE_CASE             =    MarkupText(
            f'<b>Key:</b>\n\n<span fgcolor=\'{YELLOW}\'>●</span> Empty Model'				,	font_size=18				,	)

        key_text.move_to([-5, 2.4, 0] )

        self.add(A				,	A )

        _SCREAMING_SNAKE_CASE             =    MarkupText(
            f'<span fgcolor=\'{BLUE}\'>●</span> Checkpoint'				,	font_size=18				,	)

        blue_text.next_to(A				,	DOWN * 2.4				,	aligned_edge=key_text.get_left() )
        self.add(A )

        _SCREAMING_SNAKE_CASE             =    MarkupText(f'The offloaded weights are all sent to the CPU.'				,	font_size=24 )
        step_a.move_to([2, 2, 0] )

        self.play(Write(A				,	run_time=3 ) )

        for i in range(6 ):
            _SCREAMING_SNAKE_CASE             =    cpu_disk_arr[i]
            _SCREAMING_SNAKE_CASE             =    rect.copy().set_fill(A				,	opacity=0.8 ).scale(2.0 )
            cpa.generate_target()
            cpa.target.move_to(model_base[i] )

            if i == 0:
                rect.set_fill(A				,	opacity=0.8 )
                rect.generate_target()
                rect.target.move_to(cpu_left_col_base[0] ).scale(2.0 )

                self.remove(
                    *A				,	*A				,	)

            else:
                rect.generate_target()
                rect.target.move_to(cpu_left_col_base[i] ).scale(2.0 )
            self.play(MoveToTarget(A )				,	MoveToTarget(A )				,	model_base[i].animate.set_stroke(A ) )
        self.play(FadeOut(A ) )

        _SCREAMING_SNAKE_CASE             =    MarkupText(
            f'Finally, hooks are added to each weight in the model\nto transfer the weights from CPU to GPU\n\t\tand back when needed.'				,	font_size=24				,	)
        step_a.move_to([2, 2, 0] )

        self.play(Write(A				,	run_time=3 ) )

        _SCREAMING_SNAKE_CASE             =    []
        _SCREAMING_SNAKE_CASE             =    []
        for i in range(6 ):
            _SCREAMING_SNAKE_CASE             =    Arrow(start=A				,	end=A				,	color=A				,	buff=0.5 )
            a.next_to(model_base[i].get_left()				,	A				,	buff=0.2 )
            arrows.append(A )
            animations.append(Write(A ) )
        self.play(*A )
        self.wait()










'''simple docstring'''

import safs


class       a_  (       safs.SaFileSystem ):

    '''simple docstring'''



