From a4a8c70f1c5bb18b39d5a91ca7015c4461143223 Mon Sep 17 00:00:00 2001 From: chenghuaWang <2923277184@qq.com> Date: Sat, 26 Oct 2024 10:54:30 +0000 Subject: [PATCH] fix: megre confict bugs --- examples/CMakeLists.txt | 638 +----------------- examples/demo_qwen_xp.cpp | 2 +- .../{benchmark.cpp => mllm_benchmark.cpp} | 0 src/Layer.hpp | 44 +- src/Tensor.cpp | 4 - 5 files changed, 36 insertions(+), 652 deletions(-) rename examples/{benchmark.cpp => mllm_benchmark.cpp} (100%) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 5e8ac285..487d9bdf 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,603 +1,3 @@ -<<<<<<< HEAD -# cpu executables -if(NOT QNN AND NOT MLLM_BUILD_XNNPACK_BACKEND) -add_executable(main_llama ${PROJECT_SOURCE_DIR}/examples/main_llama.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} ${DIR_SRC} # ${DIR_SRC_QUANT} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.hpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(main_llama PRIVATE -fopenmp) - target_link_libraries(main_llama PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(main_llama PRIVATE -fopenmp) - target_link_libraries(main_llama PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(main_alpaca - ${PROJECT_SOURCE_DIR}/examples/main_alpaca.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} # ${DIR_SRC_QUANT} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.hpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(main_alpaca PRIVATE -fopenmp) - target_link_libraries(main_alpaca PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(main_alpaca PRIVATE -fopenmp) - target_link_libraries(main_alpaca PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(main_llava - ${PROJECT_SOURCE_DIR}/examples/main_llava.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp - ${PROJECT_SOURCE_DIR}/src/processor/ClipPreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(main_llava PRIVATE -fopenmp) - target_link_libraries(main_llava PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(main_llava PRIVATE -fopenmp) - target_link_libraries(main_llava PUBLIC MLLM_CPU -fopenmp) -endif () - - -add_executable(main_tinyllama - ${PROJECT_SOURCE_DIR}/examples/main_tinyllama.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} # ${DIR_SRC_QUANT} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.hpp -) - -if (MLLM_OPENMP_STATIC) - target_compile_options(main_tinyllama PRIVATE -fopenmp) - target_link_libraries(main_tinyllama PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(main_tinyllama PRIVATE -fopenmp) - target_link_libraries(main_tinyllama PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(main_fuyu - ${PROJECT_SOURCE_DIR}/examples/main_fuyu.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unigram/Unigram.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unigram/Unigram.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unigram/trie.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.hpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.hpp - ${PROJECT_SOURCE_DIR}/src/processor/FuyuPreProcess.hpp - ${PROJECT_SOURCE_DIR}/src/processor/FuyuPreProcess.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(main_fuyu PRIVATE -fopenmp) - target_link_libraries(main_fuyu PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(main_fuyu PRIVATE -fopenmp) - target_link_libraries(main_fuyu PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(main_vit - ${PROJECT_SOURCE_DIR}/examples/main_vit.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unigram/Unigram.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unigram/Unigram.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unigram/trie.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.hpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.hpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(main_vit PRIVATE -fopenmp) - target_link_libraries(main_vit PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(main_vit PRIVATE -fopenmp) - target_link_libraries(main_vit PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(main_clip - ${PROJECT_SOURCE_DIR}/examples/main_clip.cpp - ${DIR_SRC_CPU} ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} # ${DIR_SRC_QUANT} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.hpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.hpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp - ${PROJECT_SOURCE_DIR}/src/processor/ClipPreProcess.cpp - ${PROJECT_SOURCE_DIR}/src/processor/ClipPreProcess.hpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(main_clip PRIVATE -fopenmp) - target_link_libraries(main_clip PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(main_clip PRIVATE -fopenmp) - target_link_libraries(main_clip PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(main_imagebind - ${PROJECT_SOURCE_DIR}/examples/main_imagebind.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} # ${DIR_SRC_QUANT} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.hpp - ${DIR_SRC_PROCESSOE} - ${DIR_THIRDPARTY_AUDIO} - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.hpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(main_imagebind PRIVATE -fopenmp) - target_link_libraries(main_imagebind PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(main_imagebind PRIVATE -fopenmp) - target_link_libraries(main_imagebind PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_stablelm - ${PROJECT_SOURCE_DIR}/examples/demo_stablelm.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_stablelm PRIVATE -fopenmp) - target_link_libraries(demo_stablelm PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_stablelm PRIVATE -fopenmp) - target_link_libraries(demo_stablelm PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_llama - ${PROJECT_SOURCE_DIR}/examples/demo_llama.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_llama PRIVATE -fopenmp) - target_link_libraries(demo_llama PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_llama PRIVATE -fopenmp) - target_link_libraries(demo_llama PUBLIC MLLM_CPU -fopenmp) -endif () - - - -add_executable(demo_fuyu - ${PROJECT_SOURCE_DIR}/examples/demo_fuyu.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unigram/Unigram.cpp - ${PROJECT_SOURCE_DIR}/src/processor/FuyuPreProcess.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_fuyu PRIVATE -fopenmp) - target_link_libraries(demo_fuyu PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_fuyu PRIVATE -fopenmp) - target_link_libraries(demo_fuyu PUBLIC MLLM_CPU -fopenmp) -endif () - - -add_executable(demo_vit - ${PROJECT_SOURCE_DIR}/examples/demo_vit.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_vit PRIVATE -fopenmp) - target_link_libraries(demo_vit PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_vit PRIVATE -fopenmp) - target_link_libraries(demo_vit PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_clip - ${PROJECT_SOURCE_DIR}/examples/demo_clip.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp - ${PROJECT_SOURCE_DIR}/src/processor/ClipPreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_clip PRIVATE -fopenmp) - target_link_libraries(demo_clip PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_clip PRIVATE -fopenmp) - target_link_libraries(demo_clip PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_imagebind - ${PROJECT_SOURCE_DIR}/examples/demo_imagebind.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} # ${DIR_SRC_QUANT} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${DIR_SRC_PROCESSOE} - ${DIR_THIRDPARTY_AUDIO} - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_imagebind PRIVATE -fopenmp) - target_link_libraries(demo_imagebind PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_imagebind PRIVATE -fopenmp) - target_link_libraries(demo_imagebind PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_imagebind_1mod - ${PROJECT_SOURCE_DIR}/examples/demo_imagebind_1mod.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} # ${DIR_SRC_QUANT} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${DIR_SRC_PROCESSOE} - ${DIR_THIRDPARTY_AUDIO} - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_imagebind_1mod PRIVATE -fopenmp) - target_link_libraries(demo_imagebind_1mod PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_imagebind_1mod PRIVATE -fopenmp) - target_link_libraries(demo_imagebind_1mod PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_tinyllama - ${PROJECT_SOURCE_DIR}/examples/demo_tinyllama.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} # ${DIR_SRC_QUANT} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.hpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_tinyllama PRIVATE -fopenmp) - target_link_libraries(demo_tinyllama PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_tinyllama PRIVATE -fopenmp) - target_link_libraries(demo_tinyllama PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_sparse_llama - ${PROJECT_SOURCE_DIR}/examples/demo_sparse_llama.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} # ${DIR_SRC_QUANT} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.hpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_sparse_llama PRIVATE -fopenmp) - target_link_libraries(demo_sparse_llama PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_sparse_llama PRIVATE -fopenmp) - target_link_libraries(demo_sparse_llama PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_elastic_llama - ${PROJECT_SOURCE_DIR}/examples/demo_elastic_llama.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} # ${DIR_SRC_QUANT} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.hpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.hpp -) -# target_compile_definitions(demo_elastic_llama PRIVATE MLLM_QKK_64) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_elastic_llama PRIVATE -fopenmp) - target_link_libraries(demo_elastic_llama PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_elastic_llama PRIVATE -fopenmp) - target_link_libraries(demo_elastic_llama PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_llava - ${PROJECT_SOURCE_DIR}/examples/demo_llava.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp - ${PROJECT_SOURCE_DIR}/src/processor/ClipPreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_llava PRIVATE -fopenmp) - target_link_libraries(demo_llava PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_llava PRIVATE -fopenmp) - target_link_libraries(demo_llava PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_gemma - ${PROJECT_SOURCE_DIR}/examples/demo_gemma.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_gemma PRIVATE -fopenmp) - target_link_libraries(demo_gemma PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_gemma PRIVATE -fopenmp) - target_link_libraries(demo_gemma PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_qwen - ${PROJECT_SOURCE_DIR}/examples/demo_qwen.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unicode.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/UnicodeData.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_qwen PRIVATE -fopenmp) - target_link_libraries(demo_qwen PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - # target_link_libraries(demo_qwen PUBLIC MLLM_CPU) - target_compile_options(demo_qwen PRIVATE -fopenmp) - target_link_libraries(demo_qwen PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_mistral - ${PROJECT_SOURCE_DIR}/examples/demo_mistral.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_mistral PRIVATE -fopenmp) - target_link_libraries(demo_mistral PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_mistral PRIVATE -fopenmp) - target_link_libraries(demo_mistral PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_yi - ${PROJECT_SOURCE_DIR}/examples/demo_yi.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_yi PRIVATE -fopenmp) - target_link_libraries(demo_yi PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_yi PRIVATE -fopenmp) - target_link_libraries(demo_yi PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_opt - ${PROJECT_SOURCE_DIR}/examples/demo_opt.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_opt PRIVATE -fopenmp) - target_link_libraries(demo_opt PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_opt PRIVATE -fopenmp) - target_link_libraries(demo_opt PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_phi3 - ${PROJECT_SOURCE_DIR}/examples/demo_phi3.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_phi3 PRIVATE -fopenmp) - target_link_libraries(demo_phi3 PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_phi3 PRIVATE -fopenmp) - target_link_libraries(demo_phi3 PUBLIC MLLM_CPU -fopenmp) -endif () - - -add_executable(demo_minicpm - ${PROJECT_SOURCE_DIR}/examples/demo_minicpm.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (ARM AND NOT APK) - target_compile_options(demo_minicpm PRIVATE -fopenmp) - target_link_libraries(demo_minicpm PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_minicpm PRIVATE -fopenmp) - target_link_libraries(demo_minicpm PUBLIC MLLM_CPU -fopenmp) -endif () - -add_executable(demo_smollm - ${PROJECT_SOURCE_DIR}/examples/demo_smollm.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unicode.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/UnicodeData.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(demo_smollm PRIVATE -fopenmp) - target_link_libraries(demo_smollm PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(demo_smollm PRIVATE -fopenmp) - target_link_libraries(demo_smollm PUBLIC MLLM_CPU -fopenmp) -endif () - -# add_executable(demo_openelm -# ${PROJECT_SOURCE_DIR}/examples/demo_openelm.cpp -# ${DIR_SRC_CPU} -# ${DIR_SRC_MEM_MANAGER} -# ${DIR_SRC_EXP} -# ${DIR_SRC} -# ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp -# ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp -# ${PROJECT_SOURCE_DIR}/src/tokenizers/Unicode.cpp -# ${PROJECT_SOURCE_DIR}/src/tokenizers/UnicodeData.cpp -# ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -# ) -# if (MLLM_OPENMP_STATIC) -# target_compile_options(demo_openelm PRIVATE -fopenmp) -# target_link_libraries(demo_openelm PUBLIC MLLM_CPU -fopenmp -static-openmp) -# else () -# target_compile_options(demo_openelm PRIVATE -fopenmp) -# target_link_libraries(demo_openelm PUBLIC MLLM_CPU -fopenmp) -# endif () - -# add_executable(demo_dclm -# ${PROJECT_SOURCE_DIR}/examples/demo_dclm.cpp -# ${DIR_SRC_CPU} -# ${DIR_SRC_MEM_MANAGER} -# ${DIR_SRC_EXP} -# ${DIR_SRC} -# ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp -# ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp -# ${PROJECT_SOURCE_DIR}/src/tokenizers/Unicode.cpp -# ${PROJECT_SOURCE_DIR}/src/tokenizers/UnicodeData.cpp -# ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -# ) -# if (MLLM_OPENMP_STATIC) -# target_compile_options(demo_dclm PRIVATE -fopenmp) -# target_link_libraries(demo_dclm PUBLIC MLLM_CPU -fopenmp -static-openmp) -# else () -# target_compile_options(demo_dclm PRIVATE -fopenmp) -# target_link_libraries(demo_dclm PUBLIC MLLM_CPU -fopenmp) -# endif () - -add_executable(benchmark_llm - ${PROJECT_SOURCE_DIR}/examples/benchmark.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unicode.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/UnicodeData.cpp - ${PROJECT_SOURCE_DIR}/src/processor/PreProcess.cpp -) -if (MLLM_OPENMP_STATIC) - target_compile_options(benchmark_llm PRIVATE -fopenmp) - target_link_libraries(benchmark_llm PUBLIC MLLM_CPU -fopenmp -static-openmp) -else () - target_compile_options(benchmark_llm PRIVATE -fopenmp) - target_link_libraries(benchmark_llm PUBLIC MLLM_CPU -fopenmp) -endif () - - -endif() # end of cpu executables - -# QNN demo -if(QNN) - # qnn executables - add_executable(main_qwen_npu - ${PROJECT_SOURCE_DIR}/examples/main_qwen_npu.cpp - ${DIR_SRC_CPU} ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} ${DIR_SRC} -======= macro(func_link_libaries target) if (MLLM_OPENMP_STATIC) target_compile_options(${target} PRIVATE -fopenmp) @@ -612,6 +12,9 @@ macro(func_link_libaries target) target_link_libraries(${target} PUBLIC MLLM_CPU MLLM_QNN ${CMAKE_DL_LIBS} -fopenmp -static-openmp) endif () endif() + if (MLLM_BUILD_XNNPACK_BACKEND) + target_link_libraries(${target} PRIVATE MLLM_CPU MllmXnnpackBackend) + endif() endmacro() @@ -622,7 +25,6 @@ macro(func_llm_add_executable target) ${DIR_SRC_MEM_MANAGER} ${DIR_SRC_EXP} ${DIR_SRC} ->>>>>>> upstream/main ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp ${PROJECT_SOURCE_DIR}/src/tokenizers/Unicode.cpp @@ -648,30 +50,6 @@ macro(func_vlm_add_executable target) ${DIR_SRC_PROCESSOE} ${DIR_THIRDPARTY_AUDIO} ) -<<<<<<< HEAD - target_compile_definitions(main_qwen_npu PRIVATE USE_QNN) - if (ARM) - target_compile_options(main_qwen_npu PRIVATE -fopenmp) - target_link_libraries(main_qwen_npu PUBLIC MLLM_CPU MLLM_QNN ${CMAKE_DL_LIBS} -fopenmp -static-openmp) - endif () -endif() - -# Xnn demo -if(MLLM_BUILD_XNNPACK_BACKEND) - add_executable(demo_qwen_xp - ${PROJECT_SOURCE_DIR}/examples/demo_qwen_xp.cpp - ${DIR_SRC_CPU} - ${DIR_SRC_MEM_MANAGER} - ${DIR_SRC_EXP} - ${DIR_SRC} - ${PROJECT_SOURCE_DIR}/src/tokenizers/Tokenizer.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/BPE/Bpe.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/Unicode.cpp - ${PROJECT_SOURCE_DIR}/src/tokenizers/UnicodeData.cpp - ) - target_link_libraries(demo_qwen_xp PUBLIC MllmXnnpackBackend MLLM_CPU) -endif() -======= func_link_libaries(${target}) endmacro() @@ -679,7 +57,8 @@ endmacro() ## new demos -func_llm_add_executable(benchmark) +if(NOT MLLM_BUILD_XNNPACK_BACKEND) +func_llm_add_executable(mllm_benchmark) func_llm_add_executable(demo_llama) func_llm_add_executable(demo_tinyllama) func_llm_add_executable(demo_stablelm) @@ -703,7 +82,7 @@ func_vlm_add_executable(demo_vit) func_vlm_add_executable(demo_clip) func_vlm_add_executable(demo_imagebind) func_vlm_add_executable(demo_imagebind_1mod) -# func_vlm_add_executable(demo) +endif() # QNN demo if(QNN) @@ -711,7 +90,9 @@ if(QNN) endif() - +if(MLLM_BUILD_XNNPACK_BACKEND) + func_llm_add_executable(demo_qwen_xp) +endif() # old main @@ -756,4 +137,3 @@ endif() # func_o_vlm_add_executable(main_vit) # func_o_vlm_add_executable(main_clip) # func_o_avlm_add_executable(main_imagebind) ->>>>>>> upstream/main diff --git a/examples/demo_qwen_xp.cpp b/examples/demo_qwen_xp.cpp index 63435090..e654dcb0 100644 --- a/examples/demo_qwen_xp.cpp +++ b/examples/demo_qwen_xp.cpp @@ -62,7 +62,7 @@ int main(int argc, char **argv) { for (int i = 0; i < in_strs.size(); ++i) { auto input_str = addSystemPrompt(in_strs[i]); - auto input_tensor = tokenizer.tokenize(input_str, i); + auto input_tensor = tokenizer.tokenize(input_str); std::cout << "[Q] " << in_strs[i] << std::endl; std::cout << "[A] " << std::flush; diff --git a/examples/benchmark.cpp b/examples/mllm_benchmark.cpp similarity index 100% rename from examples/benchmark.cpp rename to examples/mllm_benchmark.cpp diff --git a/src/Layer.hpp b/src/Layer.hpp index 4589e196..0ec311ce 100644 --- a/src/Layer.hpp +++ b/src/Layer.hpp @@ -80,7 +80,10 @@ class Layer { renameX_names.push_back(input_name); const vector suffixs = {"-view", ".split-0", ".split-1", ".split-2", "-cat", "-split-0-48"}; vector new_names; - for (const auto &in_x_name : renameX_names) { + bool can_break = true; + auto in_x_name = renameX_names[0]; + while (can_break) { + can_break = false; for (const auto &suffix : suffixs) { if (in_x_name.rfind(suffix) == (in_x_name.size() - suffix.size())) { const auto r_name = in_x_name.substr(0, in_x_name.size() - suffix.size()); @@ -93,7 +96,7 @@ class Layer { } } } - * / renameX_names.insert(renameX_names.end(), new_names.begin(), new_names.end()); + renameX_names.insert(renameX_names.end(), new_names.begin(), new_names.end()); for (const auto x_name : renameX_names) { auto name = name_X_to_num(x_name, saved_list_idx); layername_2_tensorname[name] = name; @@ -141,25 +144,31 @@ class Layer { layer_next_names = {"out-" + op_->name()}; } for (const auto &layer_next_name : layer_next_names) { - if (layername_2_tensorname.find(layer_next_name) == layername_2_tensorname.end()) { - if (param_["type"] == KVCACHE) { - layername_2_tensorname[layer_next_name] = layer_next_name; - init_reset_KVCache(inputs[0].name()); - } else { - layername_2_tensorname[layer_next_name] = name_num_to_X(layer_next_name); + string next_name; + if (use_layername_2_tensorname) { + if (layername_2_tensorname.find(layer_next_name) == layername_2_tensorname.end()) { + if (param_["type"] == KVCACHE) { + layername_2_tensorname[layer_next_name] = layer_next_name; + init_reset_KVCache(inputs[0].name(), module); + } else { + layername_2_tensorname[layer_next_name] = name_num_to_X(layer_next_name); + } } + next_name = layername_2_tensorname[layer_next_name]; + } else { + next_name = layer_next_name; } - auto next_name = layername_2_tensorname[layer_next_name]; - if (Tensor::graphs.find(next_name) == Tensor::graphs.end()) { - Tensor::graphs[next_name] = std::make_shared(backend_); - Tensor::graphs[next_name]->setName(next_name); + if (activation_tensors.find(next_name) == activation_tensors.end()) { + activation_tensors[next_name] = std::make_shared(backend_); + activation_tensors[next_name]->setName(next_name); + activation_tensors[next_name]->setModule(module); } } if (module->doLoad) { vector> output_result = {}; for (const auto &layer_next_name : layer_next_names) { - auto next_name = layername_2_tensorname[layer_next_name]; - output_result.push_back(*Tensor::graphs[next_name]); + string next_name = use_layername_2_tensorname ? layername_2_tensorname[layer_next_name] : layer_next_name; + output_result.push_back(*activation_tensors[next_name]); } return output_result; } @@ -188,9 +197,8 @@ class Layer { } vector> output_tensors = {}; for (const auto &layer_next_name : layer_next_names) { - auto next_name = layername_2_tensorname[layer_next_name]; - next_names.push_back(next_name); - output_tensors.push_back(Tensor::graphs[next_name]); + string next_name = use_layername_2_tensorname ? layername_2_tensorname[layer_next_name] : layer_next_name; + output_tensors.push_back(activation_tensors[next_name]); } #ifdef DEBUGOPTIME auto start_t = mllm_time_us(); @@ -217,7 +225,7 @@ class Layer { #endif vector> output_result = {}; for (const auto &layer_next_name : layer_next_names) { - auto next_name = layername_2_tensorname[layer_next_name]; + string next_name = use_layername_2_tensorname ? layername_2_tensorname[layer_next_name] : layer_next_name; #ifdef DEBUGSAVETENSOR activation_tensors[next_name]->saveNData(layer_next_name); #endif diff --git a/src/Tensor.cpp b/src/Tensor.cpp index 9124b265..4e228365 100644 --- a/src/Tensor.cpp +++ b/src/Tensor.cpp @@ -10,10 +10,6 @@ #include "Types.hpp" #include "backends/cpu/CPUTensorFunction.hpp" -#ifdef MLLM_BUILD_XNNPACK_BACKEND -#include "backends/xnnpack/XnnpackBackend.hpp" -#endif - #include #include #include