59 lines
1.7 KiB
CMake
59 lines
1.7 KiB
CMake
#
|
|
# mnist-common
|
|
|
|
set(TEST_TARGET mnist-common)
|
|
add_library(${TEST_TARGET} STATIC mnist-common.cpp)
|
|
target_link_libraries(${TEST_TARGET} PRIVATE ggml common)
|
|
|
|
#
|
|
# mnist-eval
|
|
|
|
set(TEST_TARGET mnist-eval)
|
|
add_executable(${TEST_TARGET} mnist-eval.cpp)
|
|
target_link_libraries(${TEST_TARGET} PRIVATE ggml common mnist-common)
|
|
|
|
#
|
|
# mnist-train
|
|
|
|
set(TEST_TARGET mnist-train)
|
|
add_executable(${TEST_TARGET} mnist-train.cpp)
|
|
target_link_libraries(${TEST_TARGET} PRIVATE ggml common mnist-common)
|
|
|
|
|
|
#
|
|
# mnist-wasm
|
|
if (EMSCRIPTEN)
|
|
set(TARGET mnist)
|
|
|
|
add_executable(${TARGET} mnist-common.cpp)
|
|
target_link_libraries(${TARGET} PRIVATE ggml ggml-cpu)
|
|
|
|
set_target_properties(${TARGET} PROPERTIES LINK_FLAGS " \
|
|
--bind \
|
|
-s FORCE_FILESYSTEM=1 \
|
|
-s USE_PTHREADS=1 \
|
|
-s PTHREAD_POOL_SIZE=10 \
|
|
-s ASSERTIONS=1 \
|
|
-s WASM=1 \
|
|
-s EXPORTED_RUNTIME_METHODS=\"['ccall', 'cwrap', 'setValue', 'getValue']\" \
|
|
-s EXPORTED_FUNCTIONS=\"['_wasm_eval','_wasm_random_digit','_malloc','_free']\" \
|
|
-s ALLOW_MEMORY_GROWTH=1 \
|
|
--preload-file ${CMAKE_CURRENT_SOURCE_DIR}/mnist-f32.gguf@/ \
|
|
--preload-file ${CMAKE_CURRENT_SOURCE_DIR}/t10k-images-idx3-ubyte@/ \
|
|
")
|
|
|
|
# Copy output to web directory
|
|
add_custom_command(
|
|
TARGET ${TARGET} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${CMAKE_BINARY_DIR}/bin/mnist.js
|
|
${CMAKE_CURRENT_SOURCE_DIR}/web/mnist.js
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${CMAKE_BINARY_DIR}/bin/mnist.wasm
|
|
${CMAKE_CURRENT_SOURCE_DIR}/web/mnist.wasm
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${CMAKE_BINARY_DIR}/bin/mnist.worker.js
|
|
${CMAKE_CURRENT_SOURCE_DIR}/web/mnist.worker.js
|
|
)
|
|
endif()
|