
from manim import *



class  lowerCAmelCase__   (       snake_case__       ):



  '''simple docstring'''






  def 		_lowerCamelCase	(self  : Union[str, Any]    )   ->       Optional[Any]:
        snake_case_						       =							Rectangle(height=0.5	, width=0.5    )
        snake_case_						       =							Rectangle(height=0.46	, width=0.46    ).set_stroke(width=0    )
        snake_case_						       =							Rectangle(height=0.25	, width=0.25    )

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

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

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

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

        snake_case_						       =							[]
        snake_case_						       =							[]

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

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

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

        self.add(*__snake_case	, *__snake_case    )

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

        snake_case_						       =							[]

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

        self.add(*__snake_case    )

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

        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(__snake_case	, __snake_case    )

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

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

        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(__snake_case	, run_time=3    )    )

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

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

                    self.remove(
                        *__snake_case	, *__snake_case	, )

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

        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(__snake_case	, run_time=3    )    )

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



'''simple docstring'''





def   snake_case_       (							_a     :							int = 1_000			):
      return sum(i for i in range(_a			) if i % 3 == 0 or i % 5 == 0			)


if __name__ == "__main__":
     print(F"""{solution() = }""")

