Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Tools] Использование OpenMP в Fortran, Как подключить omp_lib.f? 
V
    Опции темы
OlikFleur
Дата 25.1.2011, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет



Здравствуйте!

Пытаюсь подключить заголовочный файл для распараллеливания вычислений по потокам. Пыталась подключать omp_lib.f. Вот код, с помощью которого я подключаю заголовочный файл:

Код

#ifdef _OPENMP 
   include 'omp_lib.f'  !needed for OMP_GET_NUM_THREADS()
#endif


В ответ компилятор выдает ошибки:

Код

1>D:\Console3\Console3\Source1.F90(3): warning #5117: Bad # preprocessor line
1>C:\Program Files\Intel\Compiler\11.0\074\fortran\include\omp_lib.f(35): error #6218: This statement is positioned incorrectly and/or has syntax errors.
1>C:\Program Files\Intel\Compiler\11.0\074\fortran\include\omp_lib.f(62): error #6790: This is an invalid statement; an END [PROGRAM]  statement is required.
1>C:\Program Files\Intel\Compiler\11.0\074\fortran\include\omp_lib.f(62): error #6785: This name does not match the unit name.   [OMP_LIB_KINDS]
1>D:\Console3\Console3\Source1.F90(5): warning #5117: Bad # preprocessor line


Пишу на Fortran под Visual Studio 2005 с использованием компилятора Intel Visual Fortran Compiler 11.0.074.


Подскажите, пожалуйста, почему компилятор ругается на стандартную библиотеку и как с этим справиться?

Заранее спасибо!
PM MAIL   Вверх
FCM
Дата 25.1.2011, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



По умолчанию в Фортране "Сишные" препроцессорные #-директивы могут не обрабатываться.
(Для этого в Intel надо использовать fpp-препроцессор)

Можно попробовать так

!DEC$ IF DEFINED ( _OPENMP )
   INCLUDE 'omp_lib.h'
!DEC$ ENDIF

Еще можно попробовать вместо INCLUDE ...  
USE OMP_LIB

( возможно для OPENMP необходима опция компилятора - что-нибудь типа  /Qopenmp)



Это сообщение отредактировал(а) FCM - 26.1.2011, 11:05
PM MAIL   Вверх
OlikFleur
Дата 26.1.2011, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет



Спасибо, FCM!

Сделала так:

Код

!DEC$ IF DEFINED ( _OPENMP )
   include 'omp_lib.f'  !needed for OMP_GET_NUM_THREADS()
!DEC$ endif


Теперь  omp_lib вроде бы подключается, но все равно не воспринимает функции этой библиотеки:

Код

1>Source1.obj : error LNK2019: unresolved external symbol _OMP_GET_THREAD_NUM referenced in function _MAIN__
1>Source1.obj : error LNK2019: unresolved external symbol _OMP_GET_NUM_THREADS referenced in function _MAIN__

PM MAIL   Вверх
FCM
Дата 27.1.2011, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



1) Должно быть omp_lib.h, а не omp_lib.f.
(а лучше просто USE OMP_LIB)

2) Нужно зайти в свойства проекта и во вкладке Fortran/Language 
и в пункте Process OpenMP Directives выставить Generate Parallel Code
(что соответствует ранее упомянутой опции компиялтора /Qopenmp )
PM MAIL   Вверх
OlikFleur
Дата 27.1.2011, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет



FCM, спасибо, теперь все работает!
PM MAIL   Вверх
FCM
Дата 22.2.2011, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



PS
При использовании OpenMP в Фортране два символа !$ заменяют условную (т.е. при условии определенности макроса _OPENMP) компиляцию . Например,
Код

...
!$  USE OMP_LIB
...
!$  WRITE(*,*)  OMP_GET_NUM_PROCS()
... 



Это сообщение отредактировал(а) FCM - 22.2.2011, 10:40
PM MAIL   Вверх
OlikFleur
Дата 28.2.2011, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет



Большое спасибо! Очень полезное замечание!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




[ Время генерации скрипта: 0.0406 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.