|
const std = @import("std"); |
|
const builtin = @import("builtin"); |
|
|
|
// Zig Version: 0.11.0 |
|
// Zig Build Command: zig build |
|
// Zig Run Command: zig build -h |
|
// zig build run_dolly-v2 |
|
// zig build run_gpt-2 |
|
// zig build run_gpt-j |
|
// zig build run_gpt-neox |
|
// zig build run_mnist |
|
// zig build run_mpt |
|
// zig build run_replit |
|
// zig build run_starcoder |
|
// zig build run_test-grad0 |
|
// zig build run_test-mul-mat0 |
|
// zig build run_test-mul-mat2 |
|
// zig build run_test-opt |
|
// zig build run_test-vec1 |
|
// zig build run_test0 |
|
// zig build run_test1 |
|
// zig build run_test2 |
|
// zig build run_test3 |
|
// zig build run_zig_test0 |
|
// zig build run_zig_test1 |
|
// zig build run_zig_test2 |
|
// zig build run_zig_test3 |
|
pub fn build(b: *std.build.Builder) void { |
|
const target = b.standardTargetOptions(.{}); |
|
const optimize = b.standardOptimizeOption(.{}); |
|
const lib = b.addStaticLibrary(.{ |
|
.name = "ggml", |
|
.target = target, |
|
.optimize = optimize, |
|
}); |
|
lib.addIncludePath(.{ .path = "./include" }); |
|
lib.addIncludePath(.{ .path = "./include/ggml" }); |
|
lib.addCSourceFiles(&.{ |
|
"src/ggml.c", |
|
}, &.{"-std=c11"}); |
|
lib.linkLibC(); |
|
lib.linkLibCpp(); |
|
b.installArtifact(lib); |
|
|
|
// examples |
|
const examples = .{ |
|
"dolly-v2", |
|
"gpt-2", |
|
"gpt-j", |
|
"gpt-neox", |
|
"mnist", |
|
"mpt", |
|
"replit", |
|
"starcoder", |
|
// "whisper", |
|
}; |
|
inline for (examples) |name| { |
|
const exe = b.addExecutable(.{ |
|
.name = name, |
|
.target = target, |
|
.optimize = optimize, |
|
}); |
|
exe.addIncludePath(.{ .path = "./include" }); |
|
exe.addIncludePath(.{ .path = "./include/ggml" }); |
|
exe.addIncludePath(.{ .path = "./examples" }); |
|
// exe.addIncludePath("./examples/whisper"); |
|
exe.addCSourceFiles(&.{ |
|
std.fmt.comptimePrint("examples/{s}/main.cpp", .{name}), |
|
"examples/common.cpp", |
|
"examples/common-ggml.cpp", |
|
// "examples/whisper/whisper.cpp", |
|
}, &.{"-std=c++11"}); |
|
exe.linkLibrary(lib); |
|
b.installArtifact(exe); |
|
const run_cmd = b.addRunArtifact(exe); |
|
run_cmd.step.dependOn(b.getInstallStep()); |
|
if (b.args) |args| run_cmd.addArgs(args); |
|
const run_step = b.step("run_" ++ name, "Run examples"); |
|
run_step.dependOn(&run_cmd.step); |
|
} |
|
|
|
// tests |
|
const tests = if (builtin.target.cpu.arch == .x86_64) .{ |
|
// "test-blas0", |
|
// "test-grad0", |
|
"test-mul-mat0", |
|
// "test-mul-mat1", |
|
"test-mul-mat2", |
|
// "test-opt", |
|
// "test-svd0", |
|
// "test-vec0", |
|
"test-vec1", |
|
// "test-vec2", |
|
"test0", |
|
"test1", |
|
"test2", |
|
"test3", |
|
} else .{ |
|
// "test-blas0", |
|
// "test-grad0", |
|
"test-mul-mat0", |
|
// "test-mul-mat1", |
|
"test-mul-mat2", |
|
// "test-opt", |
|
// "test-svd0", |
|
// "test-vec0", |
|
// "test-vec1", |
|
// "test-vec2", |
|
"test0", |
|
"test1", |
|
"test2", |
|
"test3", |
|
}; |
|
inline for (tests) |name| { |
|
const exe = b.addExecutable(.{ |
|
.name = name, |
|
.target = target, |
|
.optimize = optimize, |
|
}); |
|
exe.addIncludePath(.{ .path = "./include" }); |
|
exe.addIncludePath(.{ .path = "./include/ggml" }); |
|
exe.addCSourceFiles(&.{ |
|
std.fmt.comptimePrint("tests/{s}.c", .{name}), |
|
}, &.{"-std=c11"}); |
|
exe.linkLibrary(lib); |
|
b.installArtifact(exe); |
|
const run_cmd = b.addRunArtifact(exe); |
|
run_cmd.step.dependOn(b.getInstallStep()); |
|
if (b.args) |args| run_cmd.addArgs(args); |
|
const run_step = b.step("run_" ++ name, "Run tests"); |
|
run_step.dependOn(&run_cmd.step); |
|
} |
|
|
|
// zig_tests |
|
const zig_tests = .{ |
|
"test0", |
|
"test1", |
|
"test2", |
|
"test3", |
|
}; |
|
inline for (zig_tests) |name| { |
|
const exe = b.addExecutable(.{ |
|
.name = name, |
|
.root_source_file = .{ .path = std.fmt.comptimePrint("tests/{s}.zig", .{name}) }, |
|
.target = target, |
|
.optimize = optimize, |
|
}); |
|
exe.addIncludePath(.{ .path = "./include" }); |
|
exe.addIncludePath(.{ .path = "./include/ggml" }); |
|
exe.linkLibrary(lib); |
|
b.installArtifact(exe); |
|
const run_cmd = b.addRunArtifact(exe); |
|
run_cmd.step.dependOn(b.getInstallStep()); |
|
if (b.args) |args| run_cmd.addArgs(args); |
|
const run_step = b.step("run_zig_" ++ name, "Run zig_tests"); |
|
run_step.dependOn(&run_cmd.step); |
|
} |
|
} |
|
|