- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve:
I am a bit lost. I pulled off all of the INTEL Compilers, and then installed VS2015 - Community Edition - with what I thought was everything turned on. I then added the NEW BETA and tried out a program with DISLIN library from Germany.
Exactly the same project runs perfectly on VS2013, but I get C++ errors on compile, cannot find scanf etc on VS2015. Clearly I goofed but where
Every program that does not have DISLIN runs perfectly the same on both Studios.
Thanks
John
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Rerun the VS2015 install, select a custom install and check the box for C++.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Rerun the VS2015 install, select a custom install and check the box for C++.
Steve:
Uninstalled IVF BETA and VS 2015. Cleaned out everything, reinstalled VS 2015 every switch selected 31 GB - made sure C++ selected then put on the last IVF 16? and still get the scanf error on compile.
Another program has this error see picture -- it get upset at a return from a FFT subroutine - when I turn on cpu_time routine
! Wulf.f90 ! ! FUNCTIONS: ! Wulf - Entry point of console application. ! !**************************************************************************** ! ! PROGRAM: Wulf ! ! PURPOSE: Entry point for the console application. ! !**************************************************************************** program Wulf use BASE use FastFourierTransform use S use Scotia implicit none integer i,ISTAT,count, dummy, NG REAL (KIND=dp) time complex(kind=dp), ALLOCATABLE :: X(:) REAL (KIND=dp), ALLOCATABLE :: aXYZ(:,:) call Files(1,NG) read(sRA,*)count ALLOCATE (aXYZ(count1,count),X(NFA),STAT=istat) IF (istat.NE.0) THEN WRITE (*, *) '*** Could not allocate some arrays in WULF' STOP END IF time = 0.1d0 do i =1,NFA if(i .eq. 1) then x(i) = (0.70154d0,0.0d0) elseif(i .eq. 2) then x(i) =(-2.5018d0,0.0d0) elseif(i .eq. 3) then x(i) = (-0.35385d0,0.0d0) elseif(i .eq. 4) then x(i) = (-0.82359d0,0.0d0) elseif(i .eq. 5) then x(i) = (-1.5771d0,0.0d0) elseif(i .eq. 6) then x(i) = (0.50797d0,0.0d0) elseif(i .eq. 7) then x(i) = (0.28198d0,0.0d0) elseif(i .eq. 8) then x(i) = (0.03348d0, 0.0d0) end if end do call pardiso_unsym(aXYZ,count,1) call FFT(sm, SOUT, NFA, time, X) end program Wulf
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Module FastFourierTransform
contains
Subroutine FFT(File1, FileOut, N, time, X)
! Fortran example.
! 1D complex to complex, and real to conjugate-even
Use MKL_DFTI
implicit none
integer n
integer FileOut
Double Complex :: X(n), XC(N)
Double precision :: Y(n), U, SUM, DF, W, SUMW
Double precision :: YStart, time, FFTRatio
integer i,j, File1
type(DFTI_DESCRIPTOR), POINTER :: My_Desc1_Handle, My_Desc2_Handle
Integer :: Status
!...put input data into X(1),...,X(32); Y(1),...,Y(32)
! Perform a complex to complex transform
j = 1
YStart = 0.0d0
FFTRatio = time
DF = 1.0d0/(time*dfloat(n))
sum = 0.0d0
sumw = 0.0d0
do i =1,N
y(i) = real(x(i))
write(*,*)i,x(i)
end do
Status = DftiCreateDescriptor( My_Desc1_Handle, DFTI_DOUBLE,DFTI_COMPLEX, 1, N )
Status = DftiCommitDescriptor( My_Desc1_Handle )
Status = DftiComputeForward( My_Desc1_Handle, X )
Status = DftiFreeDescriptor(My_Desc1_Handle)
do i =1,N
x(i) = FFTRatio*x(i)
XC(i) = CONJG(x(i))
U = x(i)*xc(I)
sum = sum+U*df
sumw = sumw+(y(i)*y(i))*time
write(FileOUT,10)i,(real(x(i))),aimag(x(i)),y(i),sum,sumw
10 format(i5,",",F14.8,",",F14.8,",",F14.8,",",F14.8,",",F14.8)
end do
! result is given by {X(1),X(2),...,X(32)}
! Perform a real to complex conjugate-even transform
Status = DftiCreateDescriptor(My_Desc2_Handle, DFTI_DOUBLE, DFTI_REAL, 1, N)
Status = DftiCommitDescriptor(My_Desc2_Handle)
Status = DftiComputeForward(My_Desc2_Handle, Y)
Status = DftiFreeDescriptor(My_Desc2_Handle)
! result is given in CCS format.
return
end subroutine FFT
END module
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Routine that does not return.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You've described at least two different issues. One is a linking (not compile) error looking for a C library routine scanf. Please upload a ZIP of the buildlog.htm of a complete project rebuild showing these errors.
The stack corruption error indicates a bug in your program. .T31_ is a compiler-generated temporary, so that complicates diagnosis a bit, but it would help if you could identify the line of code where this error occurred.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve Lionel (Intel) wrote:
You've described at least two different issues.
Two issues -- I am a bit wary of typing a note and it disappears into your system as just occurred with the build - new forum topic I created.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve:
WULF is the program with the strange return.
The call to FFT from the main program never returns. If you look you can see the write(*,*)'Here"
in that routine. If I take out the return it halts normally.
I can debug on the return and it stops and says I am here. But nothing after that in the main routine every works
John
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
For your link errors - the errors are caused by inconsistent run-time library settings between your Fortran code and the dislin.lib library, which is apparently written in C. Change the Fortran project property Fortran > Libraries > Use Runtime Library to "Multithread DLL (/MD)" and relink.
My guess is that your MKL program corrupts the stack somewhere. I will see if I can reproduce the problem.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve:
It was VS2015 - I got rid of it and reverted to VS2013 and all is fine
Ah.............. cannot seem to escape the 13
John
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
John, what do I enter as input to the program?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I think your problem with VS2015 is a change Microsoft made in the C library for that version. It isn't a Fortran issue. See https://msdn.microsoft.com/en-us/library/bb531344.aspx#BK_CRT
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The input file is at.inp
You merely type AT at the file input and it looks after it from there.
I will tell the DISLIN guy he has a problem - VS 2015 I cannot use.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Just type
AT
at the input line and it will find the AT.inp file
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry for the two - thought I lost it
There is a reason to hate C++
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Evgueni Petrov aka espetrov (Intel)
The comments form the other day were just loaded onto the MKL forum -- the above Intel person is also asking questions about WULF.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi John,
You may have run into an issue with linking to the DISLIN library from VS 2015. I used to have similar issues when I switched to VS 2015 community edition a year ago. This is not a Fortran problem. Most of the DISLIN library files were updated recently to work fine with the VS 2015 - perhaps you need to update your version of DISLIN. Otherwise, see related issues reported on the DISLIN user group forum (https://groups.google.com/forum/#!forum/dislin-users ), where you should get the support to get your program to link correctly.
Andi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Andi:
I updated the DISLIN version and reinstalled everything to try and get around the error.
Simplest just to remove VS2015 and use 2013 - not enough changes in VS to warrant the change.
Thanks for the web site.
I also run the latest Windows 10 Fast ring build, it could be something in there and I was using the Intel Review - life is to short to worry about this
Ta
John
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The issue with the MKL calls and stack corruption is continued in https://software.intel.com/en-us/node/635264
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page