Модуль расширения kjbuckets C предоставляет структуру данных «graph», которая, как я считаю, дает вам то, что вы хотите.
Проблема в том, что вы вызываете
threadCount = omp_get_num_threads();
вне параллельного блока, так что это 1, и ваш цикл внутри
mulMatrAndVecMP(vec1, A, z, (threadNum * N) / threadCount, N / threadCount, N);
выходит за пределы.
Установка
threadCount = 4
вместо этого должна решить вашу проблему.
Как вы можете прочитать здесь , вызов возвращает количество потоков в текущей команде, а текущей команды нет.
Редактировать: будьте осторожны, если N не делится на количество потоков: ваш код пропускает некоторые строки умножения.