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

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

Автор: Donkey
Дата сообщения: 01.03.2008 19:11
10.1.015
* Support for Microsoft Visual Studio 2008* added
* /Qopt-prefetch-issue-excl-hint[-] added
Автор: AZA_N
Дата сообщения: 02.03.2008 15:25
Donkey

Цитата:
И ещё вопрос - что именно из дистрибутива VS2005Pro необходимо поставить для работы с интеловским Fortranом?

Чтобы работали QuickWin и Console приложения (с графикой) и дебаггер без использования ресурсов в VS2005Pro я ставила из VisualC++ только Win32PlatformSDKTools и из NETFrameworkSDK - Tools. Если нужны *.RC, то надо добавить еще библиотеки из VisualC++ (какие - разбираться не стала - добавила весь VisualC++ ).
Это для WinXPProx64, VS2005Pro, IVF10.1.019 (IA32&EM64T)

Проблемы у меня такие:

1. Все старые проекты из CVF c кучей RC работают нормально, можно отредактировать, к примеру, элементы диалогов, но вот при попытке добывить новые элементы - неудача. Toolbox,DialogEditor на месте, но когда тащишь мышью, к примеру, RadioButton в поле диалога, то указатель мыши превращается в перечеркнутый кружок и ничего не добавляется. Так только для проектов Фортрана. Для проектов VS C++ все в порядке.
Подскажите, пожалуйста, как с этим бороться. Переписывать GUI неохота (привыкла все лепить на фортране - и расчетную часть, и оболочку), и преобразовывать resource.h в resource.fd почти вручную тоже лень.

2. Когда у меня стояли IVF10.1.0.10 и IMSL5, то достаточно было добавить imsl.lib и imsl_dll.lib и все мои программы с использованием IMSL нормально работали. Попыталась заменить IMSL c 5 на 6, при этом для того чтобы получить exe, пришлось добавить libguide40.lib (все это для Win32). Но еxe не запускается, а пишет, что отсутствует MSVCR71.dll. Как это исправить?
Автор: pir0texnik2
Дата сообщения: 12.03.2008 19:43
Считаю нехороший интеграл при помощи последнего IFC и IMSL 6:

aa = 0.12; bb= 1.0;
CALL D_QDAGS (ReYepp1,aa,bb,ReYe1)
ReYepp1 - та самая интегрируемая нехорошая ф-ция:

real*8 function ReYepp1 (x)
real*8, INTENT(IN) :: x

Делаю этот обсчет в dll, которая потом вызывается из программы сделанной в builder 2006.
При отладке программа молча вылетает на CALL D_QDAGS, рассматривая переменые в дебагере понял, что D_QDAGS может скармливать ф-ции ReYepp1 (x) в качестве x числа вроде -5.054013644202686E+291, хотя интервалы указаны четко... Переменная x внутри ф-ции не меняется... В чем может быть проблема, помогите кто чем... Спасибо!

TO AZA_N
>Но еxe не запускается, а пишет, что отсутствует MSVCR71.dll. Как это исправить?
А такая dll есть? Вообще в 6 Imsl много поменялось, не знаю как в плане скорости, но в плане механизма сборки программы точно. Другие пути, другие dll. Файл скомпиленный под 5 IMSL не запускался с 6, ему уже нужны другие библиотеки. Достаточно поизучать импорты у 5 и 6 IMSL, чтобы убелиться в этом....
Автор: akaGM
Дата сообщения: 12.03.2008 19:59
pir0texnik2
тебе лучше
сюда

а в DQDAGS точно 4 аргумента?
давай _реальный_ код вызова на Форе и С-интерфейс...
кстати, в Сях нужно оч _аккуратно_ интерфейс к фортрану прописать, особенно для длл...

ещё для порядка

aa = 0.12; bb= 1.0;

на

aa = 0.12d0; bb= 1.0d0;

поменяй...
Автор: AZA_N
Дата сообщения: 12.03.2008 23:21
pir0texnik2 ,
MSVCR71.dll (и очень разные) есть в составе целой кучи программ, но только никак не относящихся к IFV,VS,IMSL. Компилировала я с IMSL6 (c его Includ и lib). А что значит "поизучать импорты"? Я библиотеки всегда использовала без затей - указать пути к lib и include, подключаемые *.lib и глубже никогда не лезла, т.к. и так все работало (с IMSL5 и сейчас работает).
Автор: akaGM
Дата сообщения: 13.03.2008 07:02
AZA_N

Цитата:
MSVCR71.dll (и очень разные) есть

ну так и подсовывай их по одной к своему .ехе
а лучше скопируй её из
X:\где-там-у-тебя-фортран-сидит\IDB\10.ххх\IA32\bin
или пас туда проведи...

Цитата:
...но только никак не относящихся к IFV,VS,IMSL

это ты так думаешь...
что-то там у тебя собрано под динамические библиотеки, поэтому имеет смысл ещё жёстко опцию "/static" при сборке использовать...

Цитата:
Когда у меня стояли IVF10.1.0.10

а щас, кстати, что стоит?

Автор: AZA_N
Дата сообщения: 13.03.2008 10:32
Спасибо за помощь! Все утряслось совсем простым способом – снос ОС (вместе с partition), установка VS2005+IVF10.1.019(IA32)+IMSL5(от IVF9Pro)+IMSL6(с офф. сайта) – и все работает (и c IMSL5, и c IMSL6). Пока еще не все успела оттестировать, но то, о чем писала выше, работает. Так что лучшее средство от насморка – гильотина (особенно после излишне смелых экспериментов с разнородным новым софтом).
Осталось теперь только разобраться, как создавать RC, не выходя из fortran project, и жить спокойно, пока срочно не понадобиться расчет на два ядра (em64t).
Автор: akaGM
Дата сообщения: 13.03.2008 10:54
AZA_N
не за что...

Цитата:
утряслось совсем простым способом – снос ОС

хорошо, что не покупкой нового компа...

Цитата:
RC, не выходя из fortran project

фор + гуй на API -- я б медаль дал -- "Герой-программист", вернее, -- "Героиня"...

кстати, есть такие две библиотечки -- Winteracter и GINO MENU
если вы там софт покупаете, то настоятельно рекомендую...

www.winteracter.com
www.gino-graphics.com

Цитата:
лучшее средство от насморка

вообще-то в оригинале -- "от перхоти"...
Автор: AZA_N
Дата сообщения: 13.03.2008 13:21
akaGM, с покупки нового компа все и началось, а так мне и на CVF было не плохо. А гуй просто в QuickWin - обычные меню и диалоги по Бартеневу, да и то только из-за того, что свою программу пришлось на сторону передавать, а времени совсем не было. Мне самой без gui куда проще - проектик в UltraEdit с набором текстовых файлов с ИД и ссылками на бесформатные + один тектовый управляющий файл - и вперед. За ссылки спасибо - гляну (но покупка - это не для нас. Только варез.) Осталось еще DPlot приспособить.

Eclipse (http://www.eclipse.org/) и тот фортран, который к ней прикручивается (в качестве бесплатной альтернативы IVF+VS) никто не пробовал использовать (+ туда же бесплатный DPlot Jr )?http://www.dplot.com/other.htm#junior
Автор: akaGM
Дата сообщения: 13.03.2008 13:37
AZA_N

Цитата:
Eclipse

лучше в другом топе спроси:
http://forum.ru-board.com/topic.cgi?forum=33&topic=7860#1

Цитата:
но покупка - это не для нас. Только варез

ха
его просто так фиг поимеешь, несколько лет ищу...
http://forum.ru-board.com/topic.cgi?forum=35&topic=27293#1

Цитата:
UltraEdit

EditPlus!
Автор: KChernov
Дата сообщения: 13.03.2008 14:41
akaGM

Цитата:
его просто так фиг поимеешь, несколько лет ищу...

В принципе на виртуалке им можно пользоваться бесконечно и на триале
Автор: akaGM
Дата сообщения: 13.03.2008 14:51
KChernov
это программа "на вынос", ещё там и ВМ ставить? -- не, чур меня, чур...
Автор: pir0texnik2
Дата сообщения: 13.03.2008 16:02
Значит вот как оно меня все выглядит....


Код:
subroutine ye_circ_ii (precis,a_,Li_,Di_,k_,k2_,pl2_,plk2_,qlk2_,p_,q_,M_max,ye_circ_out)
!DEC$ ATTRIBUTES DLLEXPORT :: YE_CIRC_II

include 'link_fnl_shared.h'

USE QDAG_INT
USE QDAGS_INT

Implicit none

COMMON a,Li,Di,k,k2,pl2,plk2,qlk2,m, q,p

        complex*16 ye_circ_out

        Integer, intent(in) :: p_,q_,M_max
        real*8 , intent(in) :: a_,Li_,Di_,k_,k2_,pl2_,plk2_,qlk2_

aa = dexp(-k); bb= 1.0d0;
CALL D_QDAGS (ReYepp1,aa,bb,ReYe1)
Автор: akaGM
Дата сообщения: 13.03.2008 18:09
pir0texnik2
посмотри, не обратный ли у тебя стек?
саба в Форе дефолтная, а в Сях ты используешь __stdcall, -- в этом может быть дело...
т.к. это разные соглашения...
что-то типа
!DEC$ ATTRIBUTES STDCALL, DLLEXPORT
и
__declspec(dllimport) __stdcall


Код: COMMON a,Li,Di,k,k2,pl2,plk2,qlk2,m, q,p
Автор: pir0texnik2
Дата сообщения: 13.03.2008 19:30

Цитата:

посмотри, не обратный ли у тебя стек?
саба в Форе дефолтная, а в Сях ты используешь __stdcall, -- в этом может быть дело...

я смотрю как передаются параметры из проги в dll - все нормально, все на месте и с нужными цифрами...


Цитата:


Код: Код:COMMON a,Li,Di,k,k2,pl2,plk2,qlk2,m, q,p

а где эти переменные описаны?
Автор: akaGM
Дата сообщения: 13.03.2008 20:26
pir0texnik2
а чёрт его тогда знает...

Цитата:
вот мне интересно, а чем они отличаются??

да хрен его знает как работают процедуры с переменным числом аргументов да ещё в миксед-лангуаге...
вернее, с опциональными аргументами...

Цитата:
CVF все было очень нормально

о! может вот это поможет:

/iface:cvf

полная обратная совместимость с CVF, проверено...
Автор: akaGM
Дата сообщения: 13.03.2008 22:33
а вот ещё что я надумал...

1) раз уж у тебя всё насквозь "девяносто-пятое", то может вместо крутого комона
написать отдельный модуль:

module my_old_COMMON
real*8 a,Li,Di,k,k2,pl2,plk2,qlk2
endmodule

и везде его поюзать?

2) дописать в subroutine ye_circ_ii ()
интерфейс

interface
real*8 function ReYepp1(x1)
!DEC$ ATTRIBUTES STDCALL :: ReYepp1
!DEC$ ATTRIBUTES REFERENCE :: x1
real*8 x1
end function ReYepp1
end interface

3) меня учили, что выражения типа
Код:
ReYepp1 = 1.0d0/H22/x* &
( &
pl2*x*x*((-1.0d0)**p)*dsin(Li*sqt)/sqt/(plk2x2)/(plk2x2)- &
0.5d0*Li*plk2/(plk2x2) &
) /x1
Автор: pir0texnik2
Дата сообщения: 17.03.2008 13:03
Пасиба всем большое, заработало..
Причину глюков не нашел, просто создал новый проект и вставил туда старый код..
До этого проект был импортирован из CVF - в этом и была наверно причина, только какая - не понятно...
Автор: akaGM
Дата сообщения: 17.03.2008 13:30
pir0texnik2
небось отключилась вся оптимизация на фиг... всё и заработало...
Автор: pir0texnik2
Дата сообщения: 18.03.2008 16:17
может быть.. но я все те опции переключал и сейчас, и тогда... только теперь все работает... теперь уже неохота выяснять, что было причиной.

PS А чтобы такого сделать, чтобы программа смогла таки загрузить Core2Duo на 100%, сейчас почему-то даже не смотрся на все выставленные опции оптимизации(расширение для процессоров, распараллеливание и тд.) загрузка в пике 50%...
Автор: pir0texnik2
Дата сообщения: 19.03.2008 17:11
Помогите выйти из параллельного цикла....
пишу:


Код: !$OMP PARALLEL DO
Loop_pq: do m=0,M_max,1
...
...
     if ( zabs(ye_circ_out-Y_old)<errrel ) exit Loop_pq
...
...
end do Loop_pq
$OMP END PARALLEL DO
Автор: akaGM
Дата сообщения: 19.03.2008 19:02
pir0texnik2
а так?

Код:
!$OMP PARALLEL DO
!Loop_pq:
do m=0,M_max,1
...
...
if ( zabs(ye_circ_out-Y_old)<errrel ) exit !Loop_pq
...
...
end do !Loop_pq
!$OMP END PARALLEL DO
Автор: 8Racer
Дата сообщения: 25.03.2008 00:41
Всем привет!
Просмотрел тут предыдущие посты, но так и не понял как фиксится следующая проблема:

Имеются Visual Studio 2005 (версия 8.*) и Intel Visual Fortran Compiler 10.0.027
Компилятор, вроде как, встроился в VS: cоздаю через неё фортрановский проект (Console Application), запускаю (Build Solution) - и тут выскакивает:

------ Build started: Project: Console3, Configuration: Debug Win32 ------
The Fortran compiler (ifort.exe) cannot be found.

Build log written to "file://C:\...пам-парам...\Visual Studio 2005\Projects\Console3\Console3\Debug\BuildLog.htm"
Console3 - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Порылся и нашёл этот ifort.exe в директории, куда установлен интеловский компилятор:
C:\Program Files\Intel\Compiler\Fortran\10.0.027\em64t\bin\ifort.exe

Что нужно делать, чтоб VS всё-таки откомпилила прогу???

Кроме того, проверил в "Tools->Options->Intel(R) Fortran->General" поле "Compiler Selection". При варианте Target Platform - "Win32", Selected Compiler не определён! (No Compiler Installed). Когда выбираю Target Platform - "x64" - появляется компилятор "Intel(R) Fortran Compiler 10.0.027 [Intel(R) 64]" и становятся определены поля "Executables", "Libraries" и "Includes".
Но программа всё равно не билдится и выдаёт то же самое...((( HELP!!!
Автор: akuaku
Дата сообщения: 25.03.2008 03:26
8Racer
Ещё сам проект надо 64-битным указать. Вверху на панели инструментов рядом с Debug выбираешь x64, а не Win32 !
Автор: akaGM
Дата сообщения: 25.03.2008 15:33
8Racer

Цитата:
Platform - "Win32", Selected Compiler не определён! (No Compiler Installed).

может так оно и есть? не поставил ты IF для IA32...
глянь, есть у тебя дира:

C:\Program Files\Intel\Compiler\Fortran\10.0.027\IA32\
и что там в ней...

Автор: akuaku
Дата сообщения: 25.03.2008 15:39
Я не ставил 32-битный, и у меня там пусто, как написал 8Racer.
Автор: akaGM
Дата сообщения: 25.03.2008 15:58
akuaku
так я не тебе это и говорю...
формат постинга видишь?
Автор: 8Racer
Дата сообщения: 26.03.2008 16:53
akaGM

Да, папочки IA32 у меня действительно нет... Есть только em64t...

Что вообще за платформа такая - x64? Проц у меня интеловский, одно ядро, если это имеет значение. Да и проги мне надо делать под Win32.

Значит, с таким компилятором я не смогу компилить Win32 приложения?
Т.е. компилятор для x64 не сможет работать под Win32?

akuaku
Поменял проект на x64, вместо Win32. VS cпросила что-то типа "нет настроек. Импортировать их из Win32?". Но, что импортировать, что нет - всё равно не работает.
Автор: akaGM
Дата сообщения: 26.03.2008 17:09
8Racer
а кто тебе и что ставил?

Цитата:
Значит, с таким компилятором я не смогу компилить Win32 приложения?
не сможешь, надо было ставить что-то типа

w_fc_p_10.1.019_ia32.exe
w_fc_p_10.1.014_ia32.exe

или, в твоём случае:
w_fc_p_10.0.027_ia32.exe

если воруете, то за лицензией в варез

так что переставляй[те]
Автор: 8Racer
Дата сообщения: 26.03.2008 19:41
akaGM, СПАСИБО ОГРОМНОЕ!!!

Будущим поколениям:

Найти компилятор Intel(R) Fortran Compiler 10-ю версию для различных платформ вместе с лекарством можно здесь: http://forum.ru-board.com/topic.cgi?forum=35&topic=4530&start=1000

Ну, а лучше здесь: http://intel.com/

=)

Страницы: 123456789101112131415161718192021

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


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