mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2026-09-27 21:46:57 +02:00
tests: add -b/--backend option to test-llama-archs for testing a specific backend (#27372)
* tests: add backend option to test-llama-archs * Update tests/test-llama-archs.cpp Co-authored-by: Johannes Gäßler <[email protected]> * remove extra space --------- Co-authored-by: Johannes Gäßler <[email protected]>
This commit is contained in:
co-authored by
Johannes Gäßler
parent
6e60f35608
commit
d2e54583c7
@@ -93,6 +93,7 @@ static void usage(char ** argv) {
|
||||
LOG(" -d, --stdev <stdev> Set the standard deviation of the tensor initialization distribution (default: 0.1f)\n");
|
||||
LOG(" -o, --out <dir> Save generated test models to <dir> instead of running backend tests\n");
|
||||
LOG(" -v <N> Set log verbosity level\n");
|
||||
LOG(" -b, --backend <backend> Run only on the given backend device\n");
|
||||
LOG(" -h, --help Show this help message\n\n");
|
||||
LOG("Examples:\n");
|
||||
LOG(" %s\n", argv[0]);
|
||||
@@ -704,7 +705,7 @@ static int save_models(const std::string & arch_filter, const size_t seed, const
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int test_backends(const std::string & arch_filter, const size_t seed, const float stdev, const int verbosity) {
|
||||
static int test_backends(const std::string & arch_filter, const size_t seed, const float stdev, const int verbosity, const char * target_backend) {
|
||||
struct user_data_t {
|
||||
struct {
|
||||
ggml_log_callback callback;
|
||||
@@ -746,6 +747,9 @@ static int test_backends(const std::string & arch_filter, const size_t seed, con
|
||||
const size_t device_count = ggml_backend_dev_count();
|
||||
for (size_t i = 0; i < device_count; i++) {
|
||||
ggml_backend_dev_t dev = ggml_backend_dev_get(i);
|
||||
if (target_backend != nullptr && strcmp(target_backend, ggml_backend_dev_name(dev)) != 0) {
|
||||
continue;
|
||||
}
|
||||
dev_configs.emplace_back(std::vector<ggml_backend_dev_t>{dev}, ggml_backend_dev_description(dev), LLAMA_SPLIT_MODE_LAYER);
|
||||
max_device_label_length = std::max(max_device_label_length, dev_configs.back().label.length());
|
||||
|
||||
@@ -756,7 +760,9 @@ static int test_backends(const std::string & arch_filter, const size_t seed, con
|
||||
}
|
||||
}
|
||||
|
||||
dev_configs.emplace_back(devices_meta, "Meta", LLAMA_SPLIT_MODE_TENSOR);
|
||||
if (target_backend == nullptr) {
|
||||
dev_configs.emplace_back(devices_meta, "Meta", LLAMA_SPLIT_MODE_TENSOR);
|
||||
}
|
||||
}
|
||||
|
||||
size_t max_arch_name_length = 0;
|
||||
@@ -907,6 +913,7 @@ int main(int argc, char ** argv) {
|
||||
size_t seed = rd();
|
||||
float stdev = 0.1f;
|
||||
std::string out;
|
||||
const char * target_backend = nullptr;
|
||||
|
||||
int verbosity = LOG_LEVEL_ERROR;
|
||||
|
||||
@@ -961,6 +968,19 @@ int main(int argc, char ** argv) {
|
||||
usage(argv);
|
||||
return 1;
|
||||
}
|
||||
} else if (strcmp(argv[i], "-b") == 0 || strcmp(argv[i], "--backend") == 0) {
|
||||
if (i + 1 < argc) {
|
||||
const char * backend_name = argv[++i];
|
||||
ggml_backend_dev_t dev = ggml_backend_dev_by_name(backend_name);
|
||||
if (dev == nullptr) {
|
||||
LOG_ERR("%s: unknown backend device: %s\n", __func__, backend_name);
|
||||
return 1;
|
||||
}
|
||||
target_backend = ggml_backend_dev_name(dev);
|
||||
} else {
|
||||
usage(argv);
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
LOG_ERR("%s: unknown argument: %s\n", __func__, argv[i]);
|
||||
usage(argv);
|
||||
@@ -977,7 +997,7 @@ int main(int argc, char ** argv) {
|
||||
if (!out.empty()) {
|
||||
return save_models(arch_filter, seed, stdev, verbosity, out);
|
||||
}
|
||||
return test_backends(arch_filter, seed, stdev, verbosity);
|
||||
return test_backends(arch_filter, seed, stdev, verbosity, target_backend);
|
||||
} catch (const std::exception & err) {
|
||||
fprintf(stderr, "encountered runtime error: %s\n", err.what());
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user