当前,ggml、llama.cpp和whisper.cpp项目共享相同的ggml
库源,但具有不同的CMake脚本。这些脚本针对项目的特定需求进行了调整,彼此之间非常相似 - 它们都构建ggml
。尽管如此,由于手动重写它们并将更改从一个仓库应用到另一个仓库,仍然存在一些差异。
在这个任务中的目标是统一、去重和简化ggml
的构建过程,使用跨项目共享的适当的CMake脚本。这将简化未来的更改,并有助于其他依赖于ggml
的第三方项目。有关此主题的更多讨论可以在以下链接找到:
- Feature: A unified configure (and build) process for llama.cpp #5890
- add way to compile ggml with intel mkl ggml#804
为了实现这一目标,llama.cpp
和whisper.cpp
中的与ggml
相关的源代码可能需要重新组织到子文件夹中,以模拟子模块。我们避免使用实际的git
子模块,因为我认为它有一些缺点。相反,我们在3个仓库之间进行手动同步。无论如何,在我们完成这个任务后,如果将来决定这样做,切换到ggml
子模块会变得容易得多。
关于现有的Makefiles(位于llama.cpp
和whisper.cpp
中),我们应该将其保留为另一种构建系统。它不必支持所有可能的后端和配置,就像主要的CMake构建系统那样。Makefile维护将是低优先级的任务。
在构建系统得到改进后,我们可以考虑通过生成构建时配置(例如config.h
)来扩展它,以提高兼容性,正如在#5890中建议的那样。但目前这仍处于低优先级。
1条答案
按热度按时间4nkexdtk1#
这个问题已关闭,因为自标记为过期以来已经14天没有活动。