forums.silverfrost.com Forum Index forums.silverfrost.com
Welcome to the Silverfrost forums
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

64 bit ClearWin+
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
 
Post new topic   Reply to topic    forums.silverfrost.com Forum Index -> ClearWin+
View previous topic :: View next topic  
Author Message
DietmarSiepmann



Joined: 03 Jun 2013
Posts: 53

PostPosted: Thu Jan 30, 2014 6:53 pm    Post subject: Compiler version problems creating app using clearwin64.dll Reply with quote

Yes, Paul, I intended

INTEGER*2 IW2,IH2

and yes, Ian, I agree with you concerning the default for integer size.

Thanks for your help and explanations,
Dietmar
Back to top
View user's profile Send private message
DanRRight



Joined: 10 Mar 2008
Posts: 1332
Location: North Pole, Russia

PostPosted: Fri Jan 31, 2014 12:50 am    Post subject: Reply with quote

Can anyone with relatively latest 64bit Intel Fortran compiler check if it still creates huge EXE files if you declare huge arrays? This is an example which produces 10K EXE file in FTN95 and is compiled in nanoseconds. What IFORT gives?

Code:

   parameter (idim1=700)
   real a1(idim1,idim1,idim1)

   a1(1,1,1) = 1   

   print*, 'size, MB=', idim1*idim1*idim1*4/10.**6
   print*, a1(1,1,1)
   end   

Back to top
View user's profile Send private message
JohnCampbell



Joined: 16 Feb 2006
Posts: 1660
Location: Sydney

PostPosted: Fri Jan 31, 2014 1:08 am    Post subject: Reply with quote

Dan,

Not latest, sorry!
It would depend on the compile options you use.
I selected /O2 and the exe is 500k, which is the minimum for any exe I produce with ifort.
FTN95 benefits from salflibc.dll
I didn't use the equivalent of /DEBUG, which might change things a bit.
Code:

   parameter (idim1=700)
   real a1(idim1,idim1,idim1)

   a1(1,1,1) = 1   

   print*, 'size, MB=', idim1*idim1*idim1*4/10.**6
   print*, 'size, MB=', sizeof (a1)/2.**20
   print*, a1(1,1,1)
   end   

ifort /Tf exe_size_test.f90 /free /O2 /QxHost   
Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 12.1.5.344 Build 20120612

 Directory of c:\TEMP\Fortran\kind

31/01/2014  11:04 AM           535,552 exe_size_test.exe
31/01/2014  11:03 AM               217 exe_size_test.f90
31/01/2014  11:04 AM               485 exe_size_test.log
31/01/2014  11:04 AM             1,969 exe_size_test.obj
               4 File(s)        538,223 bytes

 size, MB=   1372.000   
 size, MB=   1308.441   
   1.000000   

Back to top
View user's profile Send private message
JohnCampbell



Joined: 16 Feb 2006
Posts: 1660
Location: Sydney

PostPosted: Fri Jan 31, 2014 2:39 am    Post subject: Reply with quote

Dan,

To show the effect of larger size:
Code:
   parameter (idim1=1500)
   real, allocatable, dimension(:,:,:) :: a1

   allocate ( a1(idim1,idim1,idim1) )

   a1(1,1,1) = 1   

   print*, 'size, MB=', int8(idim1)**3*4_8/10.**6
   print*, 'size, MB=', sizeof (a1)/2.**20
   print*, a1(1,1,1)
   end   

ifort /Tf exe_size_test2.f90 /free /O2 /QxHost   
Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 12.1.5.344 Build 20120612

 Directory of c:\TEMP\Fortran\kind

31/01/2014  12:37 PM           479,232 exe_size_test2.exe
31/01/2014  12:37 PM               273 exe_size_test2.f90
31/01/2014  12:37 PM             1,647 exe_size_test2.log
31/01/2014  12:37 PM             2,664 exe_size_test2.obj
               4 File(s)        483,816 bytes

 size, MB=   13500.00   
 size, MB=   12874.60   
   1.000000   
Back to top
View user's profile Send private message
DietmarSiepmann



Joined: 03 Jun 2013
Posts: 53

PostPosted: Fri Jan 31, 2014 10:01 am    Post subject: Reply with quote

Dan,

I used ifort Version 14.0.1 to compile

ifort /Tf exe_size_test2.f90 /free /O2 /QxHost
Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 14.0.1.139 Build 20131008
Copyright (C) 1985-2013 Intel Corporation. All rights reserved.

Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.

-out:exe_size_test2.exe
-subsystem:console
exe_size_test2.obj

Dirctory C:\ds\intel, Files exe* :

31.01.2014 09:41 541.696 exe_size_test2.exe
31.01.2014 09:22 206 exe_size_test2.f90
31.01.2014 09:41 2.036 exe_size_test2.obj
3 File(s), 543.938 Bytes

C:\ds\intel>exe_size_test2.exe
size, MB= 1372.000
size, MB= 1308.441
1.000000

Moreover I used your code

Code:
   parameter (idim1=700)
   real a1(idim1,idim1,idim1)

   a1(1,1,1) = 1

   print*, 'size, MB=', idim1*idim1*idim1*4/10.**6
   print*, a1(1,1,1)
   end


saved as file exe_size_test3.f90 and compiled:

ifort /Tf exe_size_test3.f90 /free /O2 /QxHost
Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 14.0.1.139 Build 20131008
Copyright (C) 1985-2013 Intel Corporation. All rights reserved.

Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.

-out:exe_size_test3.exe
-subsystem:console
exe_size_test3.obj

C:\ds\intel>dir exe_size_test3*
Volume in Laufwerk C: hat keine Bezeichnung.
Volumeseriennummer: A018-14FA

Directory C:\ds\intel

31.01.2014 09:56 541.184 exe_size_test3.exe
31.01.2014 09:49 166 exe_size_test3.f90
31.01.2014 09:56 1.694 exe_size_test3.obj
3 File(s), 543.044 Bytes

C:\ds\intel>exe_size_test3.exe
size, MB= 1372.000
1.000000

Regards,
Dietmar
Back to top
View user's profile Send private message
DanRRight



Joined: 10 Mar 2008
Posts: 1332
Location: North Pole, Russia

PostPosted: Sat Feb 01, 2014 3:01 am    Post subject: Reply with quote

Thanks John and Dietmar. That's good, a decade ago 1 GB array created 1GB EXE.

Also, does IFORT load this entire 1GB array into memory just to assign its single element or not?

Another question - what maximum size arrays you succeeded to allocate with 64bit compiler? How fast allocation goes (how many GBs per second) ?
Back to top
View user's profile Send private message
DietmarSiepmann



Joined: 03 Jun 2013
Posts: 53

PostPosted: Fri Feb 14, 2014 1:35 pm    Post subject: Porting help system to 64 bit Reply with quote

We are trying to port the Salford clearwin online help mechanism of a Salford 32 bit Fortran application to 64 bit using Intel Fortran Compiler ifort, version 11.1, for compilation, xilink for linking and resource compilers src.exe and rc from the Intel 64 bit compile environment.

We use the following application browse.for which is based on a Salford demo application written in C.

Code:
       PROGRAM FACTOR
#ifdef INTEL64
       use mswin$
       USE IFWIN
       USE CLRWIN$
#endif
       IMPLICIT NONE
#ifndef INTEL64
       INCLUDE <WINDOWS.INS>
#endif

       INTEGER rwinio
#ifdef INTEL64
       CALL ADD_HYPERTEXT_RESOURCE$('TEXT')
       
       rwinio=winio$('%mi[BROWSE]&');
       rwinio=winio$(
     *  '%ca[ClearWin Browser]%mn[&File[E&xit],&Back,&History]&',
     *  'EXIT','PREVIOUS_TEXT','TEXT_HISTORY')
       rwinio=winio$('%bg[grey]%ww%pv%70.20ht@','INTRODUCTION')
#else
       CALL ADD_HYPERTEXT_RESOURCE@('TEXT')
       
       rwinio=winio@('%mi[BROWSE]&');
       rwinio=winio@(
     *  '%ca[ClearWin Browser]%mn[&File[E&xit],&Back,&History]&',
     *  'EXIT','PREVIOUS_TEXT','TEXT_HISTORY')
       rwinio=winio@('%bg[grey]%ww%pv%70.20ht@','INTRODUCTION')
#endif
       
       END


The code of file browse.for to be compiled depends on define INTEL64 which is set in the compile step to produce the intel code; if define INTEL64 is not set in the compile step then the code is meant for the 32 bit Salford scenario. Using resource file browse_ctrls.rc

Code:
TEXT HYPERTEXT browse.htm
run BITMAP run.bmp
BROWSE ICON browse.ico


and compiling it to object file browse_ctrls.obj we can link a 32 bit application browse.exe using the Salford compile environment and a 64 bit application browse.exe using the Intel 64 bit compile enviroment and Salford's clearwin64.dll.

The code makes use of a hypertext file browse.htm which supplies the texts etc. used in the help file. The hypertext file is integrated into the final executable by means of the resource compiler which generates an object file against which the final executable is linked.

For the 32 bit scenario we use Salford's resource compiler src.exe whereas for the 64 bit scenario we use the resource compiler from the INTEL64 build environment.

Application browse.exe creates a menu bar consisting of menus 'File', 'Back' and 'History'. The latter two menus provide the functionality to navigate through the help texts.

This works pretty well and as expected for both the 32 bit version and the 64 bit version with the exception of the history menu in the 64 bit case. Clicking the history menu makes the 32 bit application display a window used to navigate through the help themes. However, when clicking the
history menu in the 64 bit case, then the application crashes displaying the information window 'ClearWin+ error'

Argument no 8 of winio
should be a list-box call-back function - not string "Hfi(H..."

Here ... is a string containing some "strange" characters.

I suspect the problem might be the resource compilers. For the 32 bit scenario we use command

src browse_ctrls /binary SALFORD\browse_ctrls.obj

for the 64 bit scenario we use command

C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin\win64\amd64\rc.exe
/fo INTEL64\debug\browse_ctrls.obj browse_ctrls

. Any comments are welcome.

Dietmar
Back to top
View user's profile Send private message
PaulLaidler
Site Admin


Joined: 21 Feb 2005
Posts: 4536
Location: Salford, UK

PostPosted: Fri Feb 14, 2014 1:42 pm    Post subject: Reply with quote

There is a very good chance that this issue has been fixed in the latest download, uploaded on Wednesday of this week.

Also the new web browser control %wb may be better for your needs.
Back to top
View user's profile Send private message
DietmarSiepmann



Joined: 03 Jun 2013
Posts: 53

PostPosted: Fri Feb 14, 2014 3:38 pm    Post subject: Porting help system to 64 bit Reply with quote

Thanks Paul,

I used the chance and installed the latest download as you suggested.
With this new version my 64 bit test application worked as expected and in the same way as the 32 bit application.

Dietmar
Back to top
View user's profile Send private message
DietmarSiepmann



Joined: 03 Jun 2013
Posts: 53

PostPosted: Fri Jul 25, 2014 3:11 pm    Post subject: Missing symbol and clearwin64.dll Reply with quote

Paul,

in a previous post I addressed the problem of a symbol which caused a 64 bit application linked against clearwin64.a to crash at runtime. The application was built with the Intel Fortran compile environment (ifort + xilink). The crash occurred only for the version built without the debug flag being set. If the debug flag was set, everything worked fine and as expected.

I asked the Intel support for advice and provided Intel support with a test application. Now Intel support responded concerning the clearwin64 dlls and export libraries: "I had one of my colleagues examine your files and at least one of the DLLs was built assuming gfortran was calling them and the export libraries were clearly assuming gfortran."

I do not know if that is true, however, if so, what are these assumptions and what would I do then?

Moreover, I created map files while linking both the debug and "non debug" version of the test application. The map files differ significantly concerning the symbols SymInitialize, StackWalk64 and SymCleanup (one of which caused the crash). If you are interested I could provide them as well as the example code.

Regards,
Dietmar
Back to top
View user's profile Send private message
PaulLaidler
Site Admin


Joined: 21 Feb 2005
Posts: 4536
Location: Salford, UK

PostPosted: Sat Jul 26, 2014 12:40 pm    Post subject: Reply with quote

Dietmar

Please see my reply to your private message.

Thanks for the offer to send the files but I don't think that we could make use of them at the moment.
Back to top
View user's profile Send private message
DietmarSiepmann



Joined: 03 Jun 2013
Posts: 53

PostPosted: Wed Aug 20, 2014 11:32 am    Post subject: Clearwin64 and MSVC 2008 Reply with quote

Paul,

concerning the problem linking a 64 bit binary with Intel Fortran and using clearwin64 we are still facing runtime problems for the non debug version. Now Intel support asked:

"Do you know which version of Microsoft C++ was used to build clearwin64. Since I'm able to build and run under VS 2012 and 2013, I'm wondering if the version that was used to build clearwin64 is not compatible with the libraries that come with VS 2008 and 2010."

I used clearwin64 dlls and libs dated from 12th February 2014 when creating the binary in question. And I am using MSVC 2008.

Could you please tell me if the clearwin64 stuff is compatible to the dlls and libraries that come with MSVC 2008?

Thanks and regards,
Dietmar
Back to top
View user's profile Send private message
PaulLaidler
Site Admin


Joined: 21 Feb 2005
Posts: 4536
Location: Salford, UK

PostPosted: Wed Aug 20, 2014 1:36 pm    Post subject: Reply with quote

The relevant version is Visual Studio 2010.
Back to top
View user's profile Send private message
dgurok



Joined: 26 May 2011
Posts: 34

PostPosted: Wed Sep 28, 2016 8:40 am    Post subject: Reply with quote

Dear Paul,

we use still ClearWin+ 64-bit with the Intel Fortran 64-bit Compiler.

We have the problem, that some graphic routines are missing in clrwin.f95. So I tried to adapted them but I run into an exception calling them.

I dont know if my ported declaration of "create_polygon@" and "fill_polygon@" for 64-bit is correct.

Thats the code that I am using in file clrwin.f95 (64-bit):

Code:

!-------------------------------------------
interface
subroutine create_polygon$(x,y,n,hwnd,ierr) bind(C,Name='__win_create_polygon_l')
use ISO_C_BINDING
integer(C_INT)::x(*),y(*)
integer(C_INT),value::n
integer(C_LONG_LONG)::hwnd
integer(C_INT)::ierr
end subroutine create_polygon$
end interface
!-------------------------------------------
interface
subroutine fill_polygon$(hwnd,col,ierr) bind(C,Name='__win_fill_polygon_l')
use ISO_C_BINDING
integer(C_LONG_LONG),value::hwnd
integer(C_INT),value::col
integer(C_INT)::ierr
end subroutine fill_polygon$
end interface
!-------------------------------------------


I changed hwnd from C_LONG_LONG to C_INT but the effect is the same.

Is there a chance to get it working?
Back to top
View user's profile Send private message
dgurok



Joined: 26 May 2011
Posts: 34

PostPosted: Wed Sep 28, 2016 10:47 am    Post subject: Reply with quote

With the newest clearwin64.dll I get the message during the execute of create_polygon$:

ALLOCATE_POLYGON_HANDLE@ has not been ported to the current platform.

So, we can't use these routines?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    forums.silverfrost.com Forum Index -> ClearWin+ All times are GMT + 1 Hour
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
Page 6 of 7

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group