MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / main

Function main

smallthinker/tests/test-opt.cpp:841–904  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

839}
840
841int main(void) {
842 const size_t dev_count = ggml_backend_dev_count();
843 printf("Testing %zu devices\n\n", dev_count);
844 size_t n_ok = 0;
845
846 std::vector<ggml_backend_dev_t> devs;
847 std::vector<ggml_backend_t> backends;
848
849 for (size_t i = 0; i < dev_count; ++i) {
850 devs.push_back(ggml_backend_dev_get(i));
851
852 ggml_backend_t backend = ggml_backend_dev_init(devs[i], NULL);
853 GGML_ASSERT(backend != NULL);
854
855 if (ggml_backend_is_cpu(backend)) {
856 ggml_backend_cpu_set_n_threads(backend, std::thread::hardware_concurrency() / 2);
857 }
858
859 backends.push_back(backend);
860 }
861
862 for (size_t i = 0; i < dev_count; ++i) {
863 // Put the backend to be tested in front so that it's prioritized:
864 std::vector<ggml_backend_t> backends_modded = {backends[i]};
865 backends_modded.insert(backends_modded.end(), backends.begin(), backends.end());
866
867 ggml_backend_sched_t backend_sched = ggml_backend_sched_new(
868 backends_modded.data(), nullptr, backends_modded.size(), GGML_DEFAULT_GRAPH_SIZE, false, true);
869
870 printf("Backend %zu/%zu: %s\n", i + 1, dev_count, ggml_backend_dev_name(devs[i]));
871 printf(" Device description: %s\n", ggml_backend_dev_description(devs[i]));
872 size_t free, total; // NOLINT
873 ggml_backend_dev_memory(devs[i], &free, &total);
874 printf(" Device memory: %zu MB (%zu MB free)\n", total / 1024 / 1024, free / 1024 / 1024);
875 printf("\n");
876
877 std::pair<int, int> result = test_backend(backend_sched, backends[i]);
878
879 printf(" %d/%d tests passed\n", result.first, result.second);
880 printf(" Backend %s: ", ggml_backend_name(backends[i]));
881 if (result.first == result.second) {
882 printf("\033[1;32mOK\033[0m\n");
883 n_ok++;
884 } else {
885 printf("\033[1;31mFAIL\033[0m\n");
886 }
887
888 printf("\n");
889
890 ggml_backend_sched_free(backend_sched);
891 }
892
893 for (ggml_backend_t backend : backends) {
894 ggml_backend_free(backend);
895 }
896
897 printf("%zu/%zu backends passed\n", n_ok, dev_count);
898 if (n_ok != dev_count) {

Callers

nothing calls this directly

Calls 15

ggml_backend_dev_countFunction · 0.85
printfFunction · 0.85
ggml_backend_dev_getFunction · 0.85
ggml_backend_dev_initFunction · 0.85
ggml_backend_dev_nameFunction · 0.85
ggml_backend_dev_memoryFunction · 0.85
test_backendFunction · 0.70
ggml_backend_is_cpuFunction · 0.50
ggml_backend_sched_newFunction · 0.50
ggml_backend_nameFunction · 0.50

Tested by

no test coverage detected