File size: 2,343 Bytes
84a3a22
 
 
 
51d6ddc
fcfb979
51d6ddc
ef27c52
51d6ddc
84a3a22
 
fcfb979
51d6ddc
84a3a22
51d6ddc
 
 
 
 
 
 
fcfb979
51d6ddc
fcfb979
51d6ddc
fcfb979
51d6ddc
 
fcfb979
51d6ddc
 
 
84a3a22
 
fcfb979
 
84a3a22
 
 
 
 
fcfb979
 
 
 
 
 
84a3a22
 
 
 
 
 
fcfb979
84a3a22
 
fcfb979
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import gradio as gr
import requests
import time

# --- CONFIGURATION ---
# Your AMD MI300X Droplet IP
DROPLET_IP = "134.199.195.151" 
API_URL = "https://1af129b49ef1ef36-134-199-192-140.serveousercontent.com/translate"

# --- LOGIC ---
def ghost_translate(cuda_code):
    # Step 1: Initial UI Feedback
    yield "👻 Ghost-Coder: Analyzing CUDA Kernel...", "Loading..."
    
    try:
        # Step 2: Real API Call to your MI300X
        response = requests.post(API_URL, json={"code": cuda_code}, timeout=120)
        
        if response.status_code == 200:
            hip_code = response.json().get("hip_code", "// Error: No code returned")
            
            # Step 3: Agentic Visual Steps (Self-Healing Simulation)
            yield "🔄 Analyzing HIP logic on ROCm stack...", "Generating..."
            time.sleep(1)
            yield "🛠️ Verifying syntax and memory offsets...", "Verifying..."
            time.sleep(1)
            yield "✅ Self-Healing successful! HIP Code generated.", hip_code
        else:
            yield f"❌ Droplet Error: {response.status_code}", "// Check bridge logs on MI300X terminal"
            
    except Exception as e:
        yield f"❌ Connection Error: Ensure bridge is running on {DROPLET_IP}", str(e)

# --- UI DESIGN ---
# Using gr.Blocks() for a professional, agentic look
with gr.Blocks() as demo:
    gr.Markdown("# 👻 Ghost-Coder: Autonomous CUDA-to-HIP Agent")
    gr.Markdown("### Powered by AMD Instinct™ MI300X | Qwen2.5-Coder-32B")
    
    with gr.Row():
        with gr.Column():
            input_code = gr.Code(
                label="Paste CUDA Code Here", 
                language="cpp", 
                lines=15, 
                value="// Example CUDA Kernel\n__global__ void add(int *a) { ... }"
            )
            run_btn = gr.Button("Translate & Verify", variant="primary")
        
        with gr.Column():
            output_code = gr.Code(label="Generated HIP Code", language="cpp", lines=15)
            logs = gr.Textbox(label="Agent Status & Self-Healing Logs", interactive=False)

    # Linking the button to our translation function
    run_btn.click(ghost_translate, inputs=[input_code], outputs=[logs, output_code])

# Launching the app with the 'Soft' theme moved to the launch method
demo.queue().launch(theme=gr.themes.Soft())