MCPcopy Create free account
hub / github.com/appdevforall/CodeOnTheGo / main

Function main

subprojects/llama.cpp/tests/test-opt.cpp:899–1003  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

897
898
899int main(void) {
900 ggml_log_set(nullptr, nullptr);
901 ggml_backend_load_all();
902 const size_t dev_count = ggml_backend_dev_count();
903 printf("Testing %zu devices\n\n", dev_count);
904 size_t n_ok = 0;
905
906 std::vector<ggml_backend_dev_t> devs;
907 std::vector<ggml_backend_t> backends;
908
909 for (size_t i = 0; i < dev_count; ++i) {
910 devs.push_back(ggml_backend_dev_get(i));
911
912 ggml_backend_t backend = ggml_backend_dev_init(devs[i], NULL);
913 GGML_ASSERT(backend != NULL);
914
915 auto * reg = ggml_backend_dev_backend_reg(devs[i]);
916 auto ggml_backend_set_n_threads_fn = (ggml_backend_set_n_threads_t) ggml_backend_reg_get_proc_address(reg, "ggml_backend_set_n_threads");
917 if (ggml_backend_set_n_threads_fn) {
918 ggml_backend_set_n_threads_fn(backend, std::thread::hardware_concurrency() / 2);
919 }
920 backends.push_back(backend);
921 }
922
923 size_t n_total = 0;
924 for (enum ggml_opt_optimizer_type optim : { GGML_OPT_OPTIMIZER_TYPE_ADAMW, GGML_OPT_OPTIMIZER_TYPE_SGD }) {
925 for (size_t i = 0; i < dev_count; ++i) {
926 // Put the backend to be tested in front so that it's prioritized:
927 std::vector<ggml_backend_t> backends_modded = { backends[i] };
928 backends_modded.insert(backends_modded.end(), backends.begin(), backends.end());
929
930 ggml_backend_sched_t backend_sched = ggml_backend_sched_new(
931 backends_modded.data(), nullptr, backends_modded.size(), GGML_DEFAULT_GRAPH_SIZE, false, true);
932
933 char const* devname = ggml_backend_dev_name(devs[i]);
934 printf("Backend %zu/%zu: %s\n", i + 1, dev_count, devname);
935 printf(" Device description: %s\n", ggml_backend_dev_description(devs[i]));
936 size_t free, total; // NOLINT
937 ggml_backend_dev_memory(devs[i], &free, &total);
938 printf(" Device memory: %zu MB (%zu MB free)\n", total / 1024 / 1024, free / 1024 / 1024);
939 printf("\n");
940
941 bool skip;
942 {
943 struct ggml_init_params params = {
944 /*.mem_size =*/ 6*ggml_tensor_overhead(),
945 /*.mem_buffer =*/ nullptr,
946 /*.no_alloc =*/ true,
947 };
948 ggml_context * ctx = ggml_init(params);
949 ggml_tensor * a = ggml_new_tensor_1d(ctx, GGML_TYPE_F32, 1);
950 ggml_set_param(a);
951 ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_F32, 1);
952 ggml_tensor * c = ggml_new_tensor_1d(ctx, GGML_TYPE_F32, 1);
953 ggml_tensor * d = ggml_new_tensor_1d(ctx, GGML_TYPE_F32, 1);
954
955 ggml_tensor * t = nullptr;
956 switch (optim) {

Callers

nothing calls this directly

Calls 15

ggml_log_setFunction · 0.85
ggml_backend_load_allFunction · 0.85
ggml_backend_dev_countFunction · 0.85
ggml_backend_dev_getFunction · 0.85
ggml_backend_dev_initFunction · 0.85
ggml_backend_sched_newFunction · 0.85
ggml_backend_dev_nameFunction · 0.85
ggml_backend_dev_memoryFunction · 0.85
ggml_tensor_overheadFunction · 0.85

Tested by

no test coverage detected