Initial build variant auto detection

This commit is contained in:
niansa 2023-05-25 09:18:30 +02:00
parent 1e037f868d
commit bdfdaedc80

View File

@ -49,11 +49,24 @@ Dlhandle *get_implementation(std::ifstream& f, const std::string& buildVariant)
return nullptr; return nullptr;
} }
static
bool requires_avxonly() {
#ifdef __x86_64__
return !__builtin_cpu_supports("avx2") && !__builtin_cpu_supports("fma");
#else
return false; // Don't know how to handle ARM
#endif
}
LLModel *LLModel::construct(const std::string &modelPath, std::string buildVariant) { LLModel *LLModel::construct(const std::string &modelPath, std::string buildVariant) {
//TODO: Auto-detect //TODO: Auto-detect
if (buildVariant == "auto") { if (buildVariant == "auto") {
if (requires_avxonly()) {
buildVariant = "avxonly";
} else {
buildVariant = "default"; buildVariant = "default";
} }
}
// Read magic // Read magic
std::ifstream f(modelPath, std::ios::binary); std::ifstream f(modelPath, std::ios::binary);
if (!f) return nullptr; if (!f) return nullptr;