| 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); | |
| } | |
| } | |