64 lines
2.3 KiB
Makefile
64 lines
2.3 KiB
Makefile
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
# Copyright (C) 2026 David (Corey) Herrera
|
|
# Foundry Blackhole backend — Phase 3 conversion tools.
|
|
#
|
|
# RUN THE CONVERSION ON THE CARD HOST, not the Mac. Spec §8.4 said the Mac, on the
|
|
# reasoning that this is bulk scalar work and the card host is 2 no-AVX cores at
|
|
# 1.8 GHz — but the binding constraint is MEMORY, not CPU: peak RSS is 76-215 MB
|
|
# on the card host against 641 MB on macOS, where MADV_DONTNEED is advisory-weak and
|
|
# the whole GGUF mapping is held. The checkpoints are on the card host anyway.
|
|
# MiniCPM5-1B is ~45 s there; the full 50.9 GiB Qwen3.8 is ~23 minutes.
|
|
#
|
|
# make
|
|
# ./build/ft_tt_gguf_plan model.gguf # sizes and fit, no conversion
|
|
# ./build/ft_tt_convert_gguf model.gguf model.fttw --ledger production
|
|
# ./build/ft_tt_pcc_gate model.gguf --format all
|
|
# ./build/ft_tt_fttw_list model.fttw # what an artifact ACTUALLY holds
|
|
#
|
|
# The peak-RSS acceptance is measured, not assumed:
|
|
# /usr/bin/time -l ./build/ft_tt_convert_gguf ... (macOS)
|
|
# /usr/bin/time -v ./build/ft_tt_convert_gguf ... (Linux)
|
|
|
|
CC ?= cc
|
|
CONVERT := ..
|
|
TT := ../..
|
|
BUILD := build
|
|
|
|
CFLAGS := -std=c99 -O2 -g \
|
|
-Wall -Wextra -Werror -pedantic \
|
|
-Wshadow -Wconversion -Wstrict-prototypes -Wformat=2 \
|
|
-fstack-protector-strong \
|
|
-I$(CONVERT) -I$(TT)
|
|
|
|
LDLIBS := -lm
|
|
|
|
SOURCES := $(CONVERT)/ft_bfp.c \
|
|
$(CONVERT)/ft_float_convert.c \
|
|
$(CONVERT)/ft_gguf_map.c \
|
|
$(CONVERT)/ft_gguf_dequant.c \
|
|
$(CONVERT)/ft_tt_precision_ledger.c \
|
|
$(CONVERT)/ft_tt_weight_convert.c \
|
|
$(CONVERT)/ft_tt_capacity_plan.c \
|
|
$(CONVERT)/ft_tt_artifact_provenance.c \
|
|
$(CONVERT)/ft_tt_artifact_cache.c \
|
|
$(TT)/ft_tt_tilize.c
|
|
|
|
PROGRAMS := ft_tt_convert_gguf ft_tt_pcc_gate ft_tt_ppl_arm_gguf ft_tt_fttw_list ft_tt_gguf_plan
|
|
TARGETS := $(addprefix $(BUILD)/,$(PROGRAMS))
|
|
|
|
.PHONY: all clean
|
|
|
|
all: $(TARGETS)
|
|
|
|
$(BUILD):
|
|
mkdir -p $(BUILD)
|
|
|
|
# Whole-program builds on purpose: GNU make 3.81 compares mtimes at one-second
|
|
# granularity, so an incremental build can silently serve a stale object
|
|
# (coding-best-practices.md §9).
|
|
$(BUILD)/%: %.c $(SOURCES) | $(BUILD)
|
|
$(CC) $(CFLAGS) $(SOURCES) $< -o $@ $(LDLIBS)
|
|
|
|
clean:
|
|
rm -rf $(BUILD)
|