1
1
# Define the default target now so that it is always the first target
2
- BUILD_TARGETS = main quantize quantize-stats perplexity embedding vdot q8dot train-text-from-scratch convert-llama2c-to-ggml simple batched save-load-state server embd-input-test gguf llama-bench baby-llama beam-search speculative infill benchmark-matmult parallel finetune export-lora tests/test-c.o
2
+ BUILD_TARGETS = \
3
+ main quantize quantize-stats perplexity embedding vdot q8dot train-text-from-scratch convert-llama2c-to-ggml \
4
+ simple batched batched-bench save-load-state server embd-input-test gguf llama-bench llava baby-llama beam-search \
5
+ speculative infill benchmark-matmult parallel finetune export-lora tests/test-c.o
3
6
4
7
# Binaries only useful for tests
5
- TEST_TARGETS = tests/test-llama-grammar tests/test-grammar-parser tests/test-double-float tests/test-grad0 tests/test-opt tests/test-quantize-fns tests/test-quantize-perf tests/test-sampling tests/test-tokenizer-0-llama tests/test-tokenizer-0-falcon tests/test-tokenizer-1-llama tests/test-tokenizer-1-bpe
8
+ TEST_TARGETS = \
9
+ tests/test-llama-grammar tests/test-grammar-parser tests/test-double-float tests/test-grad0 tests/test-opt \
10
+ tests/test-quantize-fns tests/test-quantize-perf tests/test-sampling tests/test-tokenizer-0-llama \
11
+ tests/test-tokenizer-0-falcon tests/test-tokenizer-1-llama tests/test-tokenizer-1-bpe
6
12
7
13
# Code coverage output files
8
14
COV_TARGETS = *.gcno tests/*.gcno *.gcda tests/*.gcda *.gcov tests/*.gcov lcov-report gcovr-report
@@ -172,6 +178,24 @@ else
172
178
MK_CPPFLAGS += -DNDEBUG
173
179
endif
174
180
181
+ ifdef LLAMA_SANITIZE_THREAD
182
+ MK_CFLAGS += -fsanitize=thread -g
183
+ MK_CXXFLAGS += -fsanitize=thread -g
184
+ MK_LDFLAGS += -fsanitize=thread -g
185
+ endif
186
+
187
+ ifdef LLAMA_SANITIZE_ADDRESS
188
+ MK_CFLAGS += -fsanitize=address -fno-omit-frame-pointer -g
189
+ MK_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer -g
190
+ MK_LDFLAGS += -fsanitize=address -fno-omit-frame-pointer -g
191
+ endif
192
+
193
+ ifdef LLAMA_SANITIZE_UNDEFINED
194
+ MK_CFLAGS += -fsanitize=undefined -g
195
+ MK_CXXFLAGS += -fsanitize=undefined -g
196
+ MK_LDFLAGS += -fsanitize=undefined -g
197
+ endif
198
+
175
199
ifdef LLAMA_SERVER_VERBOSE
176
200
MK_CPPFLAGS += -DSERVER_VERBOSE=$(LLAMA_SERVER_VERBOSE)
177
201
endif
@@ -512,12 +536,21 @@ ggml.o: ggml.c ggml.h ggml-cuda.h
512
536
ggml-alloc.o : ggml-alloc.c ggml.h ggml-alloc.h
513
537
$(CC ) $(CFLAGS ) -c $< -o $@
514
538
515
- OBJS += ggml-alloc.o
539
+ ggml-backend.o : ggml-backend.c ggml.h ggml-backend.h
540
+ $(CC ) $(CFLAGS ) -c $< -o $@
541
+
542
+ OBJS += ggml-alloc.o ggml-backend.o
516
543
517
- llama.o : llama.cpp ggml.h ggml-alloc.h ggml-cuda.h ggml-metal.h llama.h
544
+ llama.o : llama.cpp ggml.h ggml-alloc.h ggml-backend.h ggml- cuda.h ggml-metal.h llama.h
518
545
$(CXX ) $(CXXFLAGS ) -c $< -o $@
519
546
520
- common.o : common/common.cpp common/common.h build-info.h common/log.h
547
+ COMMON_H_DEPS = common/common.h common/sampling.h build-info.h common/log.h
548
+ COMMON_DEPS = $(COMMON_H_DEPS ) common.o sampling.o
549
+
550
+ common.o : common/common.cpp $(COMMON_H_DEPS )
551
+ $(CXX ) $(CXXFLAGS ) -c $< -o $@
552
+
553
+ sampling.o : common/sampling.cpp $(COMMON_H_DEPS )
521
554
$(CXX ) $(CXXFLAGS ) -c $< -o $@
522
555
523
556
console.o : common/console.cpp common/console.h
@@ -539,19 +572,22 @@ clean:
539
572
# Examples
540
573
#
541
574
542
- main : examples/main/main.cpp build-info.h ggml.o llama.o common.o console.o grammar-parser.o $(OBJS )
575
+ main : examples/main/main.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) console.o grammar-parser.o $(OBJS )
543
576
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
544
577
@echo
545
578
@echo ' ==== Run ./main -h for help. ===='
546
579
@echo
547
580
548
- infill : examples/infill/infill.cpp build-info.h ggml.o llama.o common.o console.o grammar-parser.o $(OBJS )
581
+ infill : examples/infill/infill.cpp build-info.h ggml.o llama.o $(COMMON_DEPS ) console.o grammar-parser.o $(OBJS )
582
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
583
+
584
+ simple : examples/simple/simple.cpp build-info.h ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
549
585
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
550
586
551
- simple : examples/simple/simple .cpp build-info.h ggml.o llama.o common.o $(OBJS )
587
+ batched : examples/batched/batched .cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
552
588
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
553
589
554
- batched : examples/batched/batched.cpp build-info.h ggml.o llama.o common.o $(OBJS )
590
+ batched-bench : examples/batched-bench /batched-bench .cpp build-info.h ggml.o llama.o common.o $(OBJS )
555
591
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
556
592
557
593
quantize : examples/quantize/quantize.cpp build-info.h ggml.o llama.o $(OBJS )
@@ -560,60 +596,68 @@ quantize: examples/quantize/quantize.cpp build-info.h ggml.
560
596
quantize-stats : examples/quantize-stats/quantize-stats.cpp build-info.h ggml.o llama.o $(OBJS )
561
597
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
562
598
563
- perplexity : examples/perplexity/perplexity.cpp build-info.h ggml.o llama.o common.o $(OBJS )
599
+ perplexity : examples/perplexity/perplexity.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
564
600
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
565
601
566
- embedding : examples/embedding/embedding.cpp build-info.h ggml.o llama.o common.o $(OBJS )
602
+ embedding : examples/embedding/embedding.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
567
603
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
568
604
569
- save-load-state : examples/save-load-state/save-load-state.cpp build-info.h ggml.o llama.o common.o $(OBJS )
605
+ save-load-state : examples/save-load-state/save-load-state.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
570
606
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
571
607
572
- server : examples/server/server.cpp examples/server/httplib.h examples/server/json.hpp examples/server/index.html.hpp examples/server/index.js.hpp examples/server/completion.js.hpp build-info.h ggml.o llama.o common.o grammar-parser.o $(OBJS )
608
+ server : examples/server/server.cpp examples/server/httplib.h examples/server/json.hpp examples/server/index.html.hpp examples/server/index.js.hpp examples/server/completion.js.hpp build-info.h ggml.o llama.o $( COMMON_DEPS ) grammar-parser.o $(OBJS )
573
609
$(CXX ) $(CXXFLAGS ) -Iexamples/server $(filter-out % .h,$(filter-out % .hpp,$^ ) ) -o $@ $(LDFLAGS ) $(LWINSOCK2 )
574
610
575
- $(LIB_PRE ) embdinput$(DSO_EXT ) : examples/embd-input/embd-input.h examples/embd-input/embd-input-lib.cpp build-info.h ggml.o llama.o common.o $(OBJS )
611
+ $(LIB_PRE ) embdinput$(DSO_EXT ) : examples/embd-input/embd-input.h examples/embd-input/embd-input-lib.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
576
612
$(CXX ) --shared $(CXXFLAGS ) $(filter-out % .h,$(filter-out % .hpp,$^ ) ) -o $@ $(LDFLAGS )
577
613
578
614
579
- embd-input-test : $(LIB_PRE ) embdinput$(DSO_EXT ) examples/embd-input/embd-input-test.cpp build-info.h ggml.o llama.o common.o $(OBJS )
615
+ embd-input-test : $(LIB_PRE ) embdinput$(DSO_EXT ) examples/embd-input/embd-input-test.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
580
616
$(CXX ) $(CXXFLAGS ) $(filter-out % $(DSO_EXT ) ,$(filter-out % .h,$(filter-out % .hpp,$^ ) ) ) -o $@ $(LDFLAGS ) -L. -lembdinput
581
617
582
618
gguf : examples/gguf/gguf.cpp ggml.o llama.o $(OBJS )
583
619
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
584
620
585
- train-text-from-scratch : examples/train-text-from-scratch/train-text-from-scratch.cpp ggml.o llama.o common.o train.o $(OBJS )
621
+ train-text-from-scratch : examples/train-text-from-scratch/train-text-from-scratch.cpp ggml.o llama.o $( COMMON_DEPS ) train.o $(OBJS )
586
622
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
587
623
588
624
convert-llama2c-to-ggml : examples/convert-llama2c-to-ggml/convert-llama2c-to-ggml.cpp ggml.o llama.o $(OBJS )
589
625
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
590
626
591
- llama-bench : examples/llama-bench/llama-bench.cpp build-info.h ggml.o llama.o common.o $(OBJS )
627
+ llama-bench : examples/llama-bench/llama-bench.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
592
628
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
593
629
594
- baby-llama : examples/baby-llama/baby-llama.cpp ggml.o llama.o common.o train.o $(OBJS )
630
+ llava : examples/llava/llava.cpp examples/llava/llava-utils.h examples/llava/clip.cpp examples/llava/clip.h common/stb_image.h ggml.o llama.o $(COMMON_DEPS ) $(OBJS )
631
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS ) -Wno-cast-qual
632
+
633
+ baby-llama : examples/baby-llama/baby-llama.cpp ggml.o llama.o $(COMMON_DEPS ) train.o $(OBJS )
595
634
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
596
635
597
- beam-search : examples/beam-search/beam-search.cpp build-info.h ggml.o llama.o common.o $(OBJS )
636
+ beam-search : examples/beam-search/beam-search.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
598
637
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
599
638
600
- finetune : examples/finetune/finetune.cpp build-info.h ggml.o llama.o common.o train.o $(OBJS )
639
+ finetune : examples/finetune/finetune.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) train.o $(OBJS )
601
640
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
602
641
603
- export-lora : examples/export-lora/export-lora.cpp build-info.h ggml.o llama.o common.o $(OBJS )
642
+ export-lora : examples/export-lora/export-lora.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
604
643
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
605
644
606
- speculative : examples/speculative/speculative.cpp build-info.h ggml.o llama.o common.o grammar-parser.o $(OBJS )
645
+ speculative : examples/speculative/speculative.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) grammar-parser.o $(OBJS )
607
646
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
608
647
609
- parallel : examples/parallel/parallel.cpp build-info.h ggml.o llama.o common.o $(OBJS )
648
+ parallel : examples/parallel/parallel.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
610
649
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
611
650
612
651
ifdef LLAMA_METAL
613
652
metal : examples/metal/metal.cpp ggml.o $(OBJS )
614
653
$(CXX ) $(CXXFLAGS ) $^ -o $@ $(LDFLAGS )
615
654
endif
616
655
656
+ ifeq ($(UNAME_S ) ,Darwin)
657
+ swift : examples/batched.swift
658
+ (cd examples/batched.swift; make build)
659
+ endif
660
+
617
661
build-info.h : $(wildcard .git/index) scripts/build-info.sh
618
662
@sh scripts/build-info.sh $(CC ) > $@ .tmp
619
663
@if ! cmp -s $@ .tmp $@ ; then \
@@ -634,48 +678,48 @@ benchmark-matmult: examples/benchmark/benchmark-matmult.cpp build-info.h ggml.o
634
678
run-benchmark-matmult : benchmark-matmult
635
679
./$@
636
680
637
- .PHONY : run-benchmark-matmult
681
+ .PHONY : run-benchmark-matmult swift
638
682
639
683
vdot : pocs/vdot/vdot.cpp ggml.o $(OBJS )
640
684
$(CXX ) $(CXXFLAGS ) $^ -o $@ $(LDFLAGS )
641
685
642
686
q8dot : pocs/vdot/q8dot.cpp ggml.o $(OBJS )
643
687
$(CXX ) $(CXXFLAGS ) $^ -o $@ $(LDFLAGS )
644
688
645
- tests/test-llama-grammar : tests/test-llama-grammar.cpp build-info.h ggml.o common.o grammar-parser.o $(OBJS )
689
+ tests/test-llama-grammar : tests/test-llama-grammar.cpp build-info.h ggml.o $( COMMON_DEPS ) grammar-parser.o $(OBJS )
646
690
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
647
691
648
- tests/test-grammar-parser : tests/test-grammar-parser.cpp build-info.h ggml.o llama.o common.o grammar-parser.o $(OBJS )
692
+ tests/test-grammar-parser : tests/test-grammar-parser.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) grammar-parser.o $(OBJS )
649
693
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
650
694
651
- tests/test-double-float : tests/test-double-float.cpp build-info.h ggml.o llama.o common.o $(OBJS )
695
+ tests/test-double-float : tests/test-double-float.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
652
696
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
653
697
654
- tests/test-grad0 : tests/test-grad0.cpp build-info.h ggml.o llama.o common.o $(OBJS )
698
+ tests/test-grad0 : tests/test-grad0.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
655
699
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
656
700
657
- tests/test-opt : tests/test-opt.cpp build-info.h ggml.o llama.o common.o $(OBJS )
701
+ tests/test-opt : tests/test-opt.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
658
702
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
659
703
660
- tests/test-quantize-fns : tests/test-quantize-fns.cpp build-info.h ggml.o llama.o common.o $(OBJS )
704
+ tests/test-quantize-fns : tests/test-quantize-fns.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
661
705
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
662
706
663
- tests/test-quantize-perf : tests/test-quantize-perf.cpp build-info.h ggml.o llama.o common.o $(OBJS )
707
+ tests/test-quantize-perf : tests/test-quantize-perf.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
664
708
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
665
709
666
- tests/test-sampling : tests/test-sampling.cpp build-info.h ggml.o llama.o common.o $(OBJS )
710
+ tests/test-sampling : tests/test-sampling.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
667
711
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
668
712
669
- tests/test-tokenizer-0-falcon : tests/test-tokenizer-0-falcon.cpp build-info.h ggml.o llama.o common.o $(OBJS )
713
+ tests/test-tokenizer-0-falcon : tests/test-tokenizer-0-falcon.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
670
714
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
671
715
672
- tests/test-tokenizer-0-llama : tests/test-tokenizer-0-llama.cpp build-info.h ggml.o llama.o common.o $(OBJS )
716
+ tests/test-tokenizer-0-llama : tests/test-tokenizer-0-llama.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
673
717
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
674
718
675
- tests/test-tokenizer-1-bpe : tests/test-tokenizer-1-bpe.cpp build-info.h ggml.o llama.o common.o $(OBJS )
719
+ tests/test-tokenizer-1-bpe : tests/test-tokenizer-1-bpe.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
676
720
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
677
721
678
- tests/test-tokenizer-1-llama : tests/test-tokenizer-1-llama.cpp build-info.h ggml.o llama.o common.o $(OBJS )
722
+ tests/test-tokenizer-1-llama : tests/test-tokenizer-1-llama.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
679
723
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
680
724
681
725
tests/test-c.o : tests/test-c.c llama.h
0 commit comments