Как связать PETSc с кодом C (с броненосцем)?

#c #armadillo #petsc

Вопрос:

У меня есть фрагмент кода на C (main.cpp), который использует armadillo для подготовки очень БОЛЬШОЙ разреженной матрицы и ее r.h.s, которые должны быть решены как x = Ab.

Проблема: В armadillo не существует параллельно-итерационно-линейного разреженного решателя. И я подумываю рассмотреть PETSc, в котором есть много способных решателей. Но я понятия не имею, как связать это с моим main.cpp код.

Подсказки: 1 — Мой код последовательный, однако armadillo использует потоковый процесс. 2 — PETSc параллелен на основе MPI, и в C.

Как я могу связать/скомпилировать/запустить PETSc с моего main.cpp? Любая помощь будет высоко оценена …

Ответ №1:

По умолчанию PETSc создаст единую библиотеку. Предположим, что вы установили пакет, а не остались в дереве исходных текстов. Для компиляции вам нужно-I/путь/к/petsc/включить, а затем связать вам нужно-L/путь/к/petsc/lib-lpetsc.