Установка библиотеки Фортран Экспокит (Windows / Ubuntu) - PullRequest
0 голосов
/ 03 июля 2018

Я ищу матричные экспоненты, для которых, очевидно, подходит библиотека Expokit. К сожалению, в отличие от Lapack или OpenMP, его нелегко установить из Cygwin или Mingw для Windows. Поэтому я скачал библиотеку с здесь , однако после распаковки она состоит исключительно из файлов .f с небольшим руководством по их использованию. Единственный сайт, который я нашел в Интернете, не очень широко используется (Fortran Wiki) , так как он не дает никаких сведений о том, как связана библиотека Expokit.

Я был бы очень признателен за любые рекомендации по установке Expokit в Windows или, в качестве альтернативы, в Ubuntu, если Windows не подходит.

Внесение изменений, предложенных ripero, и запуск «make sample_d» в Ubuntu, я получаю журнал, показанный ниже. Я предполагаю, что это означает, что образец был успешно скомпилирован, но я понятия не имею, как это позволяет мне использовать Expokit в качестве библиотеки в моих программах на Фортране. Может ли кто-нибудь дать руководство по этому вопросу?

XX:~/programs/expokit/expokit/fortran$ make sample_d
f77 -O3 -c blas.f
blas.f:404:72:

    10 assign 30 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
blas.f:409:19:

    20    go to next,(30, 50, 70, 110)
                   1
Warning: Deleted feature: Assigned GOTO statement at (1)
blas.f:411:72:

       assign 50 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
blas.f:420:72:

       assign 70 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
blas.f:427:72:

       assign 110 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
blas.f:1621:72:

    10 assign 30 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
blas.f:1628:19:

          go to next,(30, 50, 70, 90, 110)
                   1
Warning: Deleted feature: Assigned GOTO statement at (1)
blas.f:1630:72:

       assign 50 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
blas.f:1639:72:

       assign 70 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
blas.f:1644:72:

   100 assign 110 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
blas.f:1671:72:

    85 assign 90 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
blas.f:1689:16:

       go to next,(  50, 70, 90, 110 )
                1
Warning: Deleted feature: Assigned GOTO statement at (1)
f77 -O3 -c lapack.f
f77 -o sample_d sample_d.o clock.o expokit.o mataid.o blas.o lapack.o 

1 Ответ

0 голосов
/ 04 июля 2018

Ваш компилятор Fortran не может скомпилировать файл sample_d.f из-за нестандартного оператора формата. Исходный код того же файла содержит инструкции, как это исправить, если это произойдет:

 9001 format( <mprint>(1X,D11.4) )    
*--- Some compliers (e.g., g77) generate 'Unsupported FORMAT specifier' 
* with the specification above. In this case, simply use this form: 
* 9001 format( 5(1X,D11.4) )

Если вы прокомментируете первую строку выше (добавьте * в качестве первого символа строки) и раскомментируете последнюю строку (удалите начальную *), ошибка должна исчезнуть.


Я не думаю, что есть особая важность для запуска make sample_d, кроме того, что нужно убедиться, что объектные файлы созданы и что пример программы может быть скомпилирован и связан с ними для создания рабочего двоичного файла.

Во-первых, вы должны знать, что вы скомпилировали Expokit и одну из примеров программ, используя то, что их Makefile называет случай 3, где необходимые подпрограммы BLAS и LAPACK предоставляются файлами blas.o и lapack.o, соответственно, скомпилированными от своих партнеров .f, предоставленных Expokit.

# Among the 3 possibilities below, uncomment the appropriate
# case for your environment and comment the others.

# case 1: works when LAPACK and BLAS are installed.
OBJLIBS =
LIBS    = -llapack -lblas

# case 2: works when LAPACK is not installed but BLAS is.
#LIBS    = -lblas
#OBJLIBS = lapack.o

# case 3: works when neither LAPACK nor BLAS are installed.
#OBJLIBS = blas.o lapack.o
#LIBS   =

Если в вашей системе уже есть библиотеки BLAS и LAPACK, они, скорее всего, более оптимизированы, чем библиотеки blas.o и lapack.o, и вам, вероятно, захочется изменить регистр в Makefile (добавить / удалить ведущий # комментировать / раскомментировать соответствующие определения OBJLIBS и LIBS), чтобы вы могли использовать систему BLAS и LAPACK.

Чтобы использовать Expokit в ваших программах на Fortran, вам необходимо вызвать из вашего исходного кода соответствующие подпрограммы (см. Статью Expokit и исходный код expokit.f и mataid.f, чтобы прочитать о предоставленных подпрограммах) и тогда самое простое - добавить к вашей ссылке следующую строку

  1. объектные файлы: expokit.o mataid.o, за которыми следуют все объектные файлы, перечисленные в активной переменной OBJLIBS в Makefile Expokit, если таковые имеются; и
  2. библиотеки: все перечисленные в активной переменной LIBS в Makefile Expokit, если таковые имеются.
...