Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Работа с Intel Fortran через Visual Studio 2003 и не только

Автор: atlet65
Дата сообщения: 09.05.2006 15:13
Подскажите, как выполняется активизация IFC8.1.028pro. А то при выполнении компиляции выпадает сообщение о неверной лицензии. Как же неверная если она эвалюейт лицензия полученная с сайта Intel. Спасибо за подсказку. Atlet.
Автор: dima333a
Дата сообщения: 09.05.2006 15:20
atlet65


Цитата:
Подскажите, как выполняется активизация IFC8.1.028pro


Вообщето насколько я помню, никакой активации не надо. Компилятор еще на стадии установки спрашивает лицензионный файл. Если лицензионный файл инвалид, то помоему ничего нельзя даже установить..... Возможно время вашей временной лицензии уже истекло (там помоему 30 дней)?

Сходите в варезник, там помогут
Автор: XPEHOMETP
Дата сообщения: 09.05.2006 20:26
Прописывается это дело в переменные среды. Должна быть переменная с названием INTEL_LICENSE_FILE, и значение соответствующее, типа C:\Program Files\Common Files\Intel\Licenses, в эту папку кидается файл лицензии. Компилятор при установке вроде сам должен все это прописать в переменных и создать папочку, а положить туда лицензию, кажись, надо ручками.
Автор: KChernov
Дата сообщения: 10.05.2006 10:59
Еще такой вопрос - есть рабочее пространство и в нем несколько проектов.
Как сделать, чтобы из одного проекта мб использовать файлы другого?
Пробовал настраивать зависимости между проектами - не помогло
Можно конечно один и тот же файл подключить к нескольким проектам, но вот помню, что с компаковском были какие-то ссылки...
Автор: Cyrillique
Дата сообщения: 12.05.2006 13:12
Люди, подскажите пожалуйста, возможно ли в принципе использование интеловской библиотеки MKL с CVF6.6c?
Вроде и дополнительный путь к библиотекам указал, и путь для модулей, а всё равно на вызываемые подпрограммы выдаёт ошибку
Linking...
solver_f90_test.obj : error LNK2001: unresolved external symbol _DSS_CREATE
и так по всем процедурам.

Что не так? Спасибо
Автор: KChernov
Дата сообщения: 15.05.2006 10:59
Cyrillique
Когда я пробовал делать наоборот - я просто посмотрел, в каком виде хранятся библиотеки, и сделал все по-аналогии (правда я библиотеку заменял) - все работало, пока не пришлось перейти на 64-х юитный компилятор - он, конечно же, отказался работать с 32-х битной библиотекой.
Думаю, что наоборот тоже может получиться.

Что конкретно вы делаете?
Автор: XPEHOMETP
Дата сообщения: 15.05.2006 11:31
Cyrillique
Может, CVF не понимает формат интелловского библиотечного упаковщика? Может, надо библиотеку распаковать?
Автор: Cyrillique
Дата сообщения: 15.05.2006 13:36
2 KChernov:

Спасибо за ответ!
Я с библиотеками знаком шапочно, как посмотреть, что там внутри?
Вообще, у меня такое впечатление, что тут как-то Си замешан. Потому, что хотя линкер пишет "unresolved external symbol _DSS_CREATE", такой функции действительно нет, а есть DSS_CREATE! Символ подчёркивания откуда взялся - не ясно... Более того, в самом модуле есть закомментаренная строка !DEC$ ATTRIBUTES C, REFERENCE, ALIAS:'_DSS_CREATE' :: DSS_CREATE

Конкретно я пишу конечно-элементную прогу, и мне надо решать линейное уравнение с разреженной симметричной матрицей в сжатом виде (верхняя треугольная, только ненулевые элементы по строкам). Можно и IMSL использовать, наверное, но для неё способ хранения матриц другой, лень переделывать код. Да и MKL поновее как будто...

2 Хренометр:
А как распаковать библиотеку?


А вот что написано в руководстве про связывание библиотек MKL с программой.

Some possible variants with the Intel® Fortran version 9.0 compiler are as follows (other supported compilers, except CVF specifically called out below, would be used accordingly):

IA-32

ifort myprog.f mkl_c.lib libguide.lib
cdecl interface for static linking of user code myprog.f, LAPACK, and kernel.
ifort myprog.f mkl_lapack95.lib mkl_c.lib libguide.lib
cdecl interface for static linking of user code myprog.f, Fortran-95 LAPACK interface, and kernel.
ifort myprog.f mkl_blas95.lib mkl_c.lib libguide.lib
cdecl interface for static linking of user code myprog.f, Fortran-95 BLAS interface, and kernel.
df myprog.f mkl_s.lib libguide.lib
CVF default interface for static linking of user code myprog.f, LAPACK, and kernel.
ifort myprog.f mkl_c_dll.lib libguide.lib
cdecl interface for dynamic linking of user code myprog.f. DLL dispatcher will load the appropriate DLL for the processor dynamic kernel.
df myprog.f mkl_s_dll.lib libguide.lib
CVF default interface for dynamic linking of user code myprog.f. DLL dispatcher will load the appropriate DLL for the processor dynamic kernel.
ifort myprog.f mkl_solver.lib mkl_c.lib libguide.lib
cdecl interface for static linking of user code myprog.f, the sparse solver and possibly other routines with Intel MKL (including the kernels needed to support the sparse solver).

For this release, the following library was not included in the list of default libraries:
mkl_solver.lib (sparse solver library)

Но, блин, я ж указал ему пути, чего он ещё хочет!
Автор: XPEHOMETP
Дата сообщения: 15.05.2006 16:09
С не замешан. Приписывание знака _ - обычная штука для работы с функциями в библиотеке (в том числе DLL). DEC$ ATTRIBUTES C, REFERENCE, ALIAS:'_DSS_CREATE' :: DSS_CREATE - это про то, что функция использует C calling convention, ALIAS - это как в Бейсике: двойное наименование. Мол, в библиотеке функция называется _DSS_CREATE, а мы ее будем вызывать по псевдониму DSS_CREATE.

У CVF наверняка в переменные окружения прописывается папка, в которой он по умолчанию ищет библиотеки. Если нужную интеловскую библиотеку скопировать в эту папку, какой будет результат?

А распаковывать библиотеку - это нужна программа-упаковщик, с которой эта библиотека создавалась. Должна идти в комплекте с интеловским компилятором.
Автор: dima333a
Дата сообщения: 15.05.2006 20:46
Cyrillique

НАсчет библиотек неуверен, но вот obj файлы точно могут быть несовместимы. Я как то пользовался программой которая шла частично в виде obj файлов, а частично в виде открытого кода. CVF компилировал на ура, а вот IFC обламывался. Т.е. соурсе файлы то компилились, но когда доходило то до линкера то все выпадало в осадок и так я ничего с этим зделать и не смог.
Автор: Cyrillique
Дата сообщения: 16.05.2006 16:42
Нашёл я, как библиотеку распаковать. Но только мне сначала надо знать имена объектных файлов, которые в ней сидят. Это делает команда LIB \LIST, но вот незадача: их так много, что при выводе на экран просмотреть всё нет никакой возможности, а в файл выводить она отказывается =(, пишет fatal error: cannot open input file. Кто-нибудь с таким сталкивался? Помнится, в досе в таком случае постранично вывод можно было назначать...
Более того, распаковать библиотеку можно только по одному файлу, то есть один вызов команды - один вытащенный файл. Вы мне скажите, это я такой тормоз, или фортран такой современный?!
Автор: XPEHOMETP
Дата сообщения: 17.05.2006 10:02
На счет получения списка библиотек - есть же в NT-системах перенаправление стандартного вывода в файл. А для Win 9x есть разные проги типа etime, которые позволяют это сделать. На NT etime тоже работает (но вот с интеловским компилятором не дружит).

Цитата:
Вы мне скажите, это я такой тормоз, или фортран такой современный?!

Вся работа с библиотеками - это осталось с незапамятных времен, с замшелыми архиваторами. Такие уже нигде не используются.
Автор: Cyrillique
Дата сообщения: 17.05.2006 11:24
ЙОУ, нашёл! Хренометр, респект!
На случай, если кому интересно, перенаправить вывод в файл в виндах можно символом ">":
LIB /LIST imsl.lib > info.txt
info.txt будет создан в текущем каталоге.

Идём дальше =)
Автор: KChernov
Дата сообщения: 22.05.2006 15:15

Цитата:
Можно конечно один и тот же файл подключить к нескольким проектам

Что-то перестало это работать
При попытке компиляции выдается ошибка: Compilation Aborted (code 3).
И из-за нестыковки с хелпом никак не могу найти, что же это значит
Мб кто кинет ссылочку/объяснит, как вообще правильно организовывать общие файлы для нескольких проектов в рабочем пространстве?


Добавлено:
Офигительная диагностика
Отбой - это оказалась ошибка в коде - только почему-то компилятору не хватило мозгов, чтобы хотя бы намекнуть. что происходит
Автор: Dust
Дата сообщения: 23.05.2006 01:11
KChernov
Лучше бы ты вылез из IDE и работал в шелле напрямую - всяко вопросов бы меньше получалось, в т.ч. и про компиляцию.

Цитата:
Compilation Aborted (code 3)
- выше должна быть диагностика. Куда ты ее "перенаправил" - второй вопрос.


Цитата:
LIB /LIST imsl.lib > info.txt

Причем перенаправлен только поток stdout, а stderr (в котором и была диагностика) - ушло в небеса.
icc -O2 -QxP test.c 2>&1 >log.txt
Перенаправляем stderr в stdout, а потом stdout в файл. В linux есть еще tee:
icc -O2 -QxP test.c >&1 |tee makelog.txt - это тебе на будущее
Автор: KChernov
Дата сообщения: 23.05.2006 11:21
Dust

Цитата:
выше должна быть диагностика. Куда ты ее "перенаправил" - второй вопрос.

Не было там ничего конкретного.
На самом деле там функция вызывалась из принта, а в самой функции принт тоже был.
Из-за этого она ругалась на недопустимую рекурсию.
Но почему принт сделан так, что в такой ситуации он ругается - мне не понятно - можешь пояснить?
А в чем разница - использовать иде или нет, если ошибку выдает компилятор, который и там, и там один?
Чем, например, заменить АррэйВизуалайзер?
Автор: eriik
Дата сообщения: 23.05.2006 12:53
KChernov

Цитата:
Чем, например, заменить АррэйВизуалайзер?

Гнуплотом, например?
Автор: XPEHOMETP
Дата сообщения: 23.05.2006 13:22
KChernov

Цитата:
Чем, например, заменить АррэйВизуалайзер?

Гнуплот под Виндой прикручивать не подарок. Вообще есть куча разных библиотек под фортран с возможностью строить графики, и бесплатных, и коммерческих. Кое-что можно посмотреть здесь:

http://dmoz.org/Computers/Programming/Languages/Fortran/Libraries/Graphics/

Но там далеко не все. Есть, например, DPlot - ну почти полный аналог Визуалайзера, и его бесплатный вариант DPlot Jr. Вообще-то это ActiveX компонент, но к нему прилагается DLL для работы с ним в тех языках, которые с ActiveX не дружат. Примеры в комплекте есть аж для g77. Смотреть здесь: www.dplot.com/
Автор: Dust
Дата сообщения: 23.05.2006 14:35
KChernov
Зачем? Да мимо консоли не промажешь...

Цитата:
Из-за этого она ругалась на недопустимую рекурсию.

Кто она? Функция? Так ты ж ее даже скомпилировать не смог... ИЛи объясни по человечески
Автор: KChernov
Дата сообщения: 23.05.2006 15:23
Dust

Цитата:
Да мимо консоли не промажешь...

В смысле?


Цитата:
Кто она? Функция? Так ты ж ее даже скомпилировать не смог... ИЛи объясни по человечески

Она - это среда. Хотя в данном случае правильнее было бы говорить он - компилятор.
Так понятно?

Добавлено:
eriik

Цитата:
Гнуплотом, например?

Имелось в виду, что в режиме отладки.
Или гнуплот тоже хорошо цепляется?

XPEHOMETP
Спасибо, посмотрю.


Мб тогда стоит сравнить, кто в каких средах работает?
И не просто "консоль" или "вс", а какие задачи и чем решаются.
Автор: Dust
Дата сообщения: 23.05.2006 23:41
KChernov
Так всетаки ругалась Значит была диагностика...
Моя среда Linux+MC+ifort. Все что мне нужно для работы. Если охота красивостей - вывод в HTML.
Автор: KChernov
Дата сообщения: 24.05.2006 10:26
Dust

Цитата:
Значит была диагностика...

И что бы ты с такой диагностикой делал?
Я не говорил, что ее не было, я говорил, что она неадекватная.
Там даже номеров строк никаких не было
Я быстро догадался только потому, что уже когда-то на такое натыкался - а так хз, сколько бы я искал, где же ошибка

Что, например, мешало компилятору указать номер строки?

Опять же в документации я нашел только рантайм ошибки - ошибки компилятора так и не нашел


Цитата:
Моя среда Linux+MC+ifort

MC как редактор?
Автор: FuzzyLogic
Дата сообщения: 25.05.2006 21:49

Цитата:
Что, например, мешало компилятору указать номер строки?

Например отсутствие некоторых ключей при компиляции, я обычно с IFC для дебага пользуюсь (-traceback -g -inline_debug_info) - всё показывает, за исключений совсем плохих случаев аля Segmentation fault.
Автор: dima333a
Дата сообщения: 25.05.2006 22:10
FuzzyLogic


Цитата:
Например отсутствие некоторых ключей при компиляции


Да, по дефолту компиляторы несовсем подходяший для дебага код используют. В CVF например опция traceback работает только если предотвратить incremental linking.
Автор: KChernov
Дата сообщения: 29.05.2006 15:09
Почему-то не получается теперь воспроизвести эту ошибку
Спасибо за ключи - при случае попробую

Еще такой вопрос: в режиме отладки нельзя получить доступ к окну программы - можно это как-то обойти?
А то иногда нужно посмотреть на то, что она успела навыводить.
Тип проекта - квиквин (с консолью таких проблем нет).
Автор: dersu
Дата сообщения: 02.06.2006 13:25
в общем погонял интела на своих задачках,
под 2005 студией, 64-битный релиз процентов на 20 молотит быстрее, чем 32-битный аналог

и все таки ищу ИДЕ полегче чем студия МС
Автор: VitaliM
Дата сообщения: 12.06.2006 11:01
Привет! Я вообще-то сейчас больше Delphi`ст, но с большим стажем работы на фортране.
Я и сейчас плотно рабтаю с фортраном, но несколько специфично. Суть проблемы: проект состоит из оболочки, написаной на Дельфи, и некоторого числа ДЛЛ, написаных на фортране (Compaq VF6.6). Может кто знает как получить трассировку исключительной ситуации в ДЛЛ через TRACEBACKQQ, или может подскажите как получить адрес И.С. через GETEXCEPTIONPTRQQ. У меня функция GETEXCEPTIONPTRQQ возвращает всегда 0. Переписывать все на дельфи не предлагайте, я фортран люблю, а мои старшие товарищи (участники проекта) по другому жить просто не могут.
Автор: KChernov
Дата сообщения: 13.06.2006 11:45
VitaliM
Привет!
Сам такого не пробовал, но вот напрашивающееся решение - почему бы не приделать к программе лог и писать туда ошибки?
Хотя конечно же нехорошо, что стандартного функционала для этого не хватает
Автор: VitaliM
Дата сообщения: 13.06.2006 13:36
KChernov
Ну наконец-то получил хоть какой-то ответ! Спасибо.

Лог для программы работать не будет, я имею ввиду с описанием типа и места ошибки. Когда из дельфи вызывается подпрограмма фортрана из ДЛЛ, то если в дельфи не защищать этот вызов, то исключение в фортран - подпрограмме убивает приложени полностью. Никакой лог в фал не запишешь. При защищенном вызове при исключении управление передается в обработчик исключения дельфи, а он уже не может достать никакой информации о том где и какя ошибка в фортран-подпрограмме произошла. Если исключение связано с ошибкой ОС (ну например доступ к памяти), то хоть адрес исключения есть, а с математическими ошибками только тип ошибки и больше ничего.

Как написано в хелпе, в ДЛЛ не инициализировано окружение фортрана и в том числе обработка ошибок. Точнее его просто нет в коде, который вллючается в ДЛЛ. Есть мысль, может если на языке С написать обертку для вызываемй подпрограмы на фортране и вызов заключить в блок __try ... __except, то может код обработчика ошибок будет включен в ДЛЛ и тогда получится обрабатывать исключения внутри ДЛЛ.
Автор: dima333a
Дата сообщения: 14.06.2006 06:20
VitaliM


Цитата:
Может кто знает как получить трассировку исключительной ситуации в ДЛЛ через TRACEBACKQQ, или может подскажите как получить адрес И.С. через GETEXCEPTIONPTRQQ.


Я dll никогда не занимался. Но под "исключительной ситуации в ДЛЛ" понимаю что сам код в dll иногда неработает? Если так то все алгоритмы dll мона оттестить в виде подпрограммы... Sorry если слишком по ламерски

Страницы: 123456789101112131415161718192021

Предыдущая тема: Относительное перемещение мыши


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.