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
@@ -520,7 +544,13 @@ OBJS += ggml-alloc.o ggml-backend.o
520
544
llama.o : llama.cpp ggml.h ggml-alloc.h ggml-backend.h ggml-cuda.h ggml-metal.h llama.h
521
545
$(CXX ) $(CXXFLAGS ) -c $< -o $@
522
546
523
- 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 )
524
554
$(CXX ) $(CXXFLAGS ) -c $< -o $@
525
555
526
556
console.o : common/console.cpp common/console.h
@@ -542,19 +572,22 @@ clean:
542
572
# Examples
543
573
#
544
574
545
- 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 )
546
576
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
547
577
@echo
548
578
@echo ' ==== Run ./main -h for help. ===='
549
579
@echo
550
580
551
- 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 )
552
582
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
553
583
554
- simple : examples/simple/simple.cpp build-info.h ggml.o llama.o common.o $(OBJS )
584
+ simple : examples/simple/simple.cpp build-info.h ggml.o llama.o $( COMMON_DEPS ) $(OBJS )
555
585
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
556
586
557
- batched : examples/batched/batched.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 )
588
+ $(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
589
+
590
+ batched-bench : examples/batched-bench/batched-bench.cpp build-info.h ggml.o llama.o common.o $(OBJS )
558
591
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
559
592
560
593
quantize : examples/quantize/quantize.cpp build-info.h ggml.o llama.o $(OBJS )
@@ -563,53 +596,56 @@ quantize: examples/quantize/quantize.cpp build-info.h ggml.
563
596
quantize-stats : examples/quantize-stats/quantize-stats.cpp build-info.h ggml.o llama.o $(OBJS )
564
597
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
565
598
566
- 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 )
567
600
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
568
601
569
- 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 )
570
603
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
571
604
572
- 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 )
573
606
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
574
607
575
- 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 )
576
609
$(CXX ) $(CXXFLAGS ) -Iexamples/server $(filter-out % .h,$(filter-out % .hpp,$^ ) ) -o $@ $(LDFLAGS ) $(LWINSOCK2 )
577
610
578
- $(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 )
579
612
$(CXX ) --shared $(CXXFLAGS ) $(filter-out % .h,$(filter-out % .hpp,$^ ) ) -o $@ $(LDFLAGS )
580
613
581
614
582
- 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 )
583
616
$(CXX ) $(CXXFLAGS ) $(filter-out % $(DSO_EXT ) ,$(filter-out % .h,$(filter-out % .hpp,$^ ) ) ) -o $@ $(LDFLAGS ) -L. -lembdinput
584
617
585
618
gguf : examples/gguf/gguf.cpp ggml.o llama.o $(OBJS )
586
619
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
587
620
588
- 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 )
589
622
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
590
623
591
624
convert-llama2c-to-ggml : examples/convert-llama2c-to-ggml/convert-llama2c-to-ggml.cpp ggml.o llama.o $(OBJS )
592
625
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
593
626
594
- 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 )
595
628
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
596
629
597
- 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 )
598
634
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
599
635
600
- 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 )
601
637
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
602
638
603
- 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 )
604
640
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
605
641
606
- 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 )
607
643
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
608
644
609
- 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 )
610
646
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
611
647
612
- 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 )
613
649
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
614
650
615
651
ifdef LLAMA_METAL
@@ -650,40 +686,40 @@ vdot: pocs/vdot/vdot.cpp ggml.o $(OBJS)
650
686
q8dot : pocs/vdot/q8dot.cpp ggml.o $(OBJS )
651
687
$(CXX ) $(CXXFLAGS ) $^ -o $@ $(LDFLAGS )
652
688
653
- 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 )
654
690
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
655
691
656
- 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 )
657
693
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
658
694
659
- 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 )
660
696
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
661
697
662
- 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 )
663
699
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
664
700
665
- 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 )
666
702
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
667
703
668
- 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 )
669
705
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
670
706
671
- 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 )
672
708
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
673
709
674
- 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 )
675
711
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
676
712
677
- 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 )
678
714
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
679
715
680
- 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 )
681
717
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
682
718
683
- 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 )
684
720
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
685
721
686
- 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 )
687
723
$(CXX ) $(CXXFLAGS ) $(filter-out % .h,$^ ) -o $@ $(LDFLAGS )
688
724
689
725
tests/test-c.o : tests/test-c.c llama.h
0 commit comments