forked from AMD-AGI/AgentKernelArena
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
executable file
·153 lines (136 loc) · 5.75 KB
/
Copy pathMakefile
File metadata and controls
executable file
·153 lines (136 loc) · 5.75 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# Makefile for KernelBench HIP Kernel Development
# Dynamic ROCm Environment Setup
SHELL := /bin/bash
PYTHON_VERSION := 3.12
VENV_DIR := .venv
REQUIREMENTS := requirements.txt
# Detect ROCm version (supports 7.1, 7.0, 6.4)
ROCM_VERSION := $(shell \
if [ -d /opt/rocm-7.1.0 ] || [ -d /opt/rocm-7.1 ]; then echo "7.1"; \
elif [ -d /opt/rocm-7.0.0 ] || [ -d /opt/rocm-7.0 ]; then echo "7.0"; \
elif [ -d /opt/rocm-6.4.1 ] || [ -d /opt/rocm-6.4.0 ] || [ -d /opt/rocm-6.4 ]; then echo "6.4"; \
else echo "unknown"; fi)
ROCM_PATH_DETECTED := $(shell \
if [ -d /opt/rocm-7.1.0 ]; then echo "/opt/rocm-7.1.0"; \
elif [ -d /opt/rocm-7.1 ]; then echo "/opt/rocm-7.1"; \
elif [ -d /opt/rocm-7.0.0 ]; then echo "/opt/rocm-7.0.0"; \
elif [ -d /opt/rocm-7.0 ]; then echo "/opt/rocm-7.0"; \
elif [ -d /opt/rocm-6.4.1 ]; then echo "/opt/rocm-6.4.1"; \
elif [ -d /opt/rocm-6.4.0 ]; then echo "/opt/rocm-6.4.0"; \
elif [ -d /opt/rocm-6.4 ]; then echo "/opt/rocm-6.4"; \
else echo "/opt/rocm"; fi)
# ROCm environment variables
export ROCM_PATH := $(ROCM_PATH_DETECTED)
export CMAKE_PREFIX_PATH := $(ROCM_PATH_DETECTED):$(ROCM_PATH_DETECTED)/hip:/usr/local:/usr
export MAX_JOBS := 8
export HIP_FORCE_DEV_KERNARG := 1
export HSA_NO_SCRATCH_RECLAIM := 1
.PHONY: help setup setup-venv setup-flydsl verify-flydsl clean cleanup-venv cleanup-works install-cursor-agent act vllm
help:
@echo "AgentKernelArena Evaluation Framework - Makefile Commands"
@echo "======================================================"
@echo "make setup - Complete environment setup (venv + deps, includes FlyDSL by default)"
@echo "make setup WITH_FLYDSL=0 - Setup without FlyDSL"
@echo "make setup-flydsl - Install and verify FlyDSL dependency for flydsl2flydsl tasks"
@echo "make verify-flydsl - Verify FlyDSL import and ROCm PyTorch GPU availability"
@echo "make clean - Remove virtual environment"
WITH_FLYDSL ?= 1
setup: setup-venv
ifeq ($(WITH_FLYDSL),1)
setup: setup-flydsl
endif
setup-venv:
@echo "Detected ROCm version: $(ROCM_VERSION) at $(ROCM_PATH_DETECTED)"
@if [ "$(ROCM_VERSION)" = "unknown" ]; then \
echo "ERROR: Could not detect ROCm installation"; \
exit 1; \
fi
@echo "Creating virtual environment with uv..."
@uv venv $(VENV_DIR) --python $(PYTHON_VERSION)
@echo "✓ Virtual environment created"
@echo "Installing PyTorch for ROCm $(ROCM_VERSION)..."
@source $(VENV_DIR)/bin/activate && \
uv pip install --upgrade pip setuptools wheel && \
uv pip install setuptools==75.8.0 && \
uv pip install setuptools_scm packaging && \
if [ "$(ROCM_VERSION)" = "7.1" ]; then \
uv pip install --pre torch torchvision --index-url https://download.pytorch.org/whl/nightly/rocm7.1; \
elif [ "$(ROCM_VERSION)" = "7.0" ]; then \
uv pip install --pre torch torchvision --index-url https://download.pytorch.org/whl/nightly/rocm7.0; \
else \
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.4; \
fi
@echo "✓ PyTorch installed"
@echo "Installing Python dependencies..."
@if [ ! -f $(REQUIREMENTS) ]; then \
echo "Creating requirements.txt..."; \
echo "# Core ML libraries" > $(REQUIREMENTS); \
echo "torch" >> $(REQUIREMENTS); \
echo "" >> $(REQUIREMENTS); \
echo "# Build tools" >> $(REQUIREMENTS); \
echo "ninja" >> $(REQUIREMENTS); \
echo "" >> $(REQUIREMENTS); \
echo "# LLM service dependencies" >> $(REQUIREMENTS); \
echo "pyyaml" >> $(REQUIREMENTS); \
echo "httpx" >> $(REQUIREMENTS); \
echo "" >> $(REQUIREMENTS); \
echo "# Utilities" >> $(REQUIREMENTS); \
echo "numpy" >> $(REQUIREMENTS); \
fi
@source $(VENV_DIR)/bin/activate && uv pip install -r $(REQUIREMENTS)
@echo "✓ Setup complete! Activate with: source $(VENV_DIR)/bin/activate"
setup-flydsl: setup-venv
@echo "Installing FlyDSL..."
@source $(VENV_DIR)/bin/activate && \
uv pip install flydsl
@$(MAKE) verify-flydsl
@echo "✓ FlyDSL installed"
verify-flydsl:
@echo "Verifying FlyDSL and ROCm PyTorch GPU availability..."
@source $(VENV_DIR)/bin/activate && \
python3 -c 'import flydsl, torch; assert torch.cuda.is_available(), "torch.cuda.is_available() is False; FlyDSL GPU tasks require ROCm PyTorch with GPU access"; print("✓ FlyDSL import OK:", getattr(flydsl, "__version__", "unknown")); print("✓ ROCm PyTorch GPU OK:", torch.cuda.get_device_name(0))'
cleanup-venv:
@echo "Removing virtual environment and build caches..."
@rm -rf $(VENV_DIR)
@find . -type d -name "build_cache" -exec rm -rf {} + 2>/dev/null || true
@echo "✓ Clean complete"
cleanup-works:
@echo "Removing workspace directories and logs..."
@rm -rf workspace_*
@rm -rf logs
@echo "✓ Workspace directories and logs removed"
install-cursor-agent:
@echo "Installing Cursor agent..."
@curl https://cursor.com/install -fsSL | bash
ACTIVATE_VENV_CMD = exec bash -c "source .venv/bin/activate && exec bash"
act:
$(ACTIVATE_VENV_CMD)
# Run vLLM server with latest ROCm 6.4.1 and vLLM 0.10.1
vllm:
@if ss -ltn | grep ':30001 ' > /dev/null; then \
echo "vLLM server is already running on port 30001."; \
else \
docker run -d \
--ipc=host \
--network=host \
--privileged \
--cap-add=SYS_ADMIN \
--cap-add=SYS_PTRACE \
--device=/dev/kfd \
--device=/dev/dri \
--device=/dev/mem \
--group-add=render \
--security-opt=seccomp=unconfined \
rocm/vllm:rocm6.4.1_vllm_0.10.1_20250909 \
vllm serve Qwen/Qwen3-Coder-30B-A3B-Instruct \
--served-model-name llamas_team_local_llm \
--api-key dummy \
--host 0.0.0.0 \
--port 30001 \
--enable-auto-tool-choice \
--tool-call-parser hermes \
--trust-remote-code; \
echo "Don't forget to set local_llm_enabled: true in configs/config.yml"; \
echo "vLLM server will be running on port 30001, please wait 3 minutes for it to start..."; \
echo "You can use docker logs -f container_id to check the server status"; \
fi