Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
KewkLW authored Jun 21, 2024
1 parent 3b2e849 commit 5757b61
Show file tree
Hide file tree
Showing 2 changed files with 122 additions and 0 deletions.
43 changes: 43 additions & 0 deletions text_append_node.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# text_append_node.py

class TextAppendNode:
def __init__(self):
pass

@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"current_text": ("STRING", {"multiline": True}),
"append_text": ("STRING", {"multiline": True}),
},
}

RETURN_TYPES = ("STRING",)
FUNCTION = "append_text"
CATEGORY = "🧔🏻‍♂️🇰 🇪 🇼 🇰 "

def append_text(self, current_text, append_text):
current_lines = [line.strip() for line in current_text.split('\n') if line.strip()]
append_lines = [line.strip() for line in append_text.split('\n') if line.strip()]

result = []

# If current_text is empty, start with append_text
if not current_lines:
return (append_text,)

# Append new text to each line of the current text
for current_line in current_lines:
for append_line in append_lines:
result.append(f"{current_line} {append_line}")

return ('\n'.join(result),)

NODE_CLASS_MAPPINGS = {
"TextAppendNode": TextAppendNode
}

NODE_DISPLAY_NAME_MAPPINGS = {
"TextAppendNode": "Text Append"
}
79 changes: 79 additions & 0 deletions vramdebugplus.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# with all due respect to cubiq for the original code https://github.com/cubiq/ComfyUI_essentials
import model_management
import torch
import gc
import psutil

class VRAM_Debug_Plus:
def __init__(self):
pass

@classmethod
def INPUT_TYPES(s):
return {
"required": {
"empty_cache": ("BOOLEAN", {"default": True}),
"gc_collect": ("BOOLEAN", {"default": True}),
"unload_all_models": ("BOOLEAN", {"default": False}),
"display_mode": (["Simple", "Detailed"], {"default": "Simple"}),
},
"optional": {
"any_input": ("*", {}),
"image_pass": ("IMAGE",),
"model_pass": ("MODEL",),
}
}

RETURN_TYPES = ("*", "IMAGE", "MODEL", "INT", "INT", "STRING")
RETURN_NAMES = ("any_output", "image_pass", "model_pass", "freemem_before", "freemem_after", "memory_report")
FUNCTION = "VRAMdebug"
CATEGORY = "🧔🏻‍♂️🇰 🇪 🇼 🇰 "
DESCRIPTION = """
Performs VRAM management operations and provides detailed memory usage reports.
Returns inputs unchanged, used as triggers. Reports free VRAM before and after operations.
"""

def VRAMdebug(self, empty_cache, gc_collect, unload_all_models, display_mode, image_pass=None, model_pass=None, any_input=None):
freemem_before = model_management.get_free_memory()
total_memory = torch.cuda.get_device_properties(0).total_memory

if empty_cache:
torch.cuda.empty_cache()
model_management.soft_empty_cache()
if unload_all_models:
model_management.unload_all_models()
if gc_collect:
gc.collect()

freemem_after = model_management.get_free_memory()

memory_report = self.generate_memory_report(freemem_before, freemem_after, total_memory, display_mode)

return (any_input, image_pass, model_pass, int(freemem_before), int(freemem_after), memory_report)

def generate_memory_report(self, freemem_before, freemem_after, total_memory, display_mode):
used_before = total_memory - freemem_before
used_after = total_memory - freemem_after
freed_memory = freemem_after - freemem_before

if display_mode == "Simple":
return f"Free VRAM: {freemem_before:,.0f} -> {freemem_after:,.0f} ({freed_memory:+,.0f})"
else:
report = f"VRAM Report:\n"
report += f"Total VRAM: {total_memory:,.0f}\n"
report += f"Free VRAM Before: {freemem_before:,.0f} ({freemem_before/total_memory:.1%})\n"
report += f"Free VRAM After: {freemem_after:,.0f} ({freemem_after/total_memory:.1%})\n"
report += f"Used VRAM Before: {used_before:,.0f} ({used_before/total_memory:.1%})\n"
report += f"Used VRAM After: {used_after:,.0f} ({used_after/total_memory:.1%})\n"
report += f"VRAM Freed: {freed_memory:,.0f} ({freed_memory/total_memory:.1%})\n"
report += f"System RAM Usage: {psutil.virtual_memory().percent:.1f}%"
return report

# Node class mappings
NODE_CLASS_MAPPINGS = {
"VRAM_Debug_Plus": VRAM_Debug_Plus
}

NODE_DISPLAY_NAME_MAPPINGS = {
"VRAM_Debug_Plus": "VRAM Debug+"
}

0 comments on commit 5757b61

Please sign in to comment.