Quantcast
Channel: Intel® Fortran Compiler
Viewing all 3270 articles
Browse latest View live

Format Width Specifier Behavior

$
0
0

Hi all,

Encountered a little puzzle.  Using default project settings for a console application, the following code creates a format specification statement with an internal write and then uses that format specifier in another write statement:

program WidthSpecifierError

   character(LEN=200) :: cLine
   integer(KIND=4) :: iLen, iArray(11)

   iLen = 11
   iArray(1:11) = (/1,2,3,4,5,6,7,8,9,10,11/)

   write(*,*) 'Writing integer larger than width specifier'
   write(cLine,'("(",I1,"(I2,1X))")') iLen
   write(*,*) cline
   write(*,cline) (iArray(i), i=1,iLen)
   write(*,*)
   write(*,*) 'Writing integer equal to width specifier'
   write(cLine,'("(",I2,"(I2,1X))")') iLen
   write(*,*) cline
   write(*,cline) (iArray(i), i=1,iLen)

end program WidthSpecifierError

The output is thus under default Debug and Release compilation:

 Writing integer larger than width specifier
 (*(I2,1X))

 1  2  3  4  5  6  7  8  9 10 11

 Writing integer equal to width specifier
 (11(I2,1X))

 1  2  3  4  5  6  7  8  9 10 11
Press any key to continue . . .

The output is correct and consistent in both cases, but the format specifier "appears" to be mangled.  Code similar to this compiled with PGI generated a runtime error.  Is there a compiler flag for Intel that would catch this at runtime?

Ted

Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 12.0.5.221 Build 20110719
Copyright (C) 1985-2011 Intel Corporation.  All rights reserved.


Problem with -recursive -assume realloc_lhs -standard-semantics

$
0
0

I see different results for the attached code depending on the used compiler flags. Notice that the code uses a recursive elemental subroutine, which I understand is allowed in f2015, but not allowed by the previous standards, hence the compiler flag -recursive .

Apart from -recursive, I think the code should work without depending on other compiler flags.

The expected result is printing -2 10.

$ ifort -recursive ifb.f90 -o ifb
$ ./ifb
[nothing is printed]
$ ifort -recursive -assume realloc_lhs  ifb.f90 -o ifb
$ ./ifb
          -2          10  [the correct result]
$ ifort -recursive -assume realloc_lhs -standard-semantics ifb.f90 -o ifb
$ ./ifb
 1986356271 1937010735  [arbitrary values]

I am using ifort Version 15.0 Build 20150407.

module m1

! Define an abstract type, a container and the corresponding assignment

 implicit none

 type, abstract :: a_abs
 end type a_abs

 type, extends(a_abs) :: t_cnt
  class(a_abs), allocatable :: f
 end type t_cnt

 interface assignment(=)
   module procedure to_cnt
 end interface

contains

 elemental subroutine to_cnt(y,x)
  class(a_abs), intent(in)  :: x
  type(t_cnt), intent(out) :: y

   select type(x)
    type is(t_cnt)
     y = x%f ! equivalent to "call to_cnt( y , x%f )"
    class default
     allocate( y%f , source=x )
   end select

 end subroutine to_cnt

end module m1

!------------------------

module m2

! Define a specific type and an operation

 use m1, only: a_abs

 implicit none

 type, extends(a_abs) :: t_a
  integer, allocatable :: i(:)
 end type t_a

contains

 elemental function add(x,y) result(z)
  class(t_a), intent(in) :: x, y
  type(t_a) :: z

   z%i = x%i + y%i

 end function add

end module m2

!------------------------

program p
 use m1
 use m2
 implicit none

 type(t_a) :: a, b
 type(t_cnt) :: cnt

 allocate( a%i(2) , b%i(2) )
 a%i = (/  0 , 6 /)
 b%i = (/ -2 , 4 /)

 cnt = add( a , b )

 select type( f => cnt%f )
  type is(t_a)
   write(*,*) f%i
  class default
   write(*,*) "class default"
 end select

end program p

Runtime crash with polymorphic types

$
0
0

The attached code crashes when compiled with ifort 15.0 . The intended output should be (from a gfortran run)

$ ./test
 T
           1
 T
           1           2

module m1

 implicit none

 type, abstract :: c_abs
 end type c_abs

 type, extends(c_abs) :: t_cnt
  class(c_abs), allocatable :: f
 end type t_cnt

end module m1

!------------------------

module m2

 use m1, only: c_abs, t_cnt

 implicit none

 type, extends(c_abs) :: t_a
  integer, allocatable :: i(:)
 end type t_a

 type, extends(c_abs) :: t_b
  integer :: ndata
  type(t_cnt), allocatable :: data(:)
 end type t_b

contains

 pure function get_data(var) result(dat)
  class(t_b), intent(in) :: var
  type(t_cnt) :: dat(var%ndata)

   dat = var%data
 end function get_data

end module m2

!------------------------

program p
 use m1
 use m2
 implicit none

  type(t_b) :: b
  type(t_cnt), allocatable :: cnt(:)

  b%ndata = 1
  allocate( b%data( b%ndata ) )
  allocate( t_a :: b%data(1)%f )
  select type( a => b%data(1)%f )
   type is(t_a)
    allocate( a%i(2) )
    a%i = (/ 1 , 2 /)
  end select


  cnt = get_data( b )
  write(*,*) allocated(cnt)
  write(*,*) size(cnt)
  write(*,*) allocated( cnt(1)%f )
  select type( a => cnt(1)%f )
   type is(t_a)
    write(*,*) a%i
  end select

end program p

 

Memory leak with derived-type allocatables and realloc_lhs

$
0
0

I have a derived-type with an allocatable array component defined as:

module type_one

    type, public :: one_t
        integer, allocatable :: i(:)
    end type one_t

    public operator (+)
    interface operator (+)
        module procedure add
    end interface

contains


    elemental function add(u,v) result(res)
        type(one_t),    intent(in)  :: u,v
        type(one_t) :: res

        res%i = u%i + v%i
    end function

end module type_one

 

Compiling with -assume realloc_lhs and executing the addition operation as follows results in a memory leak:

program mem_leak_test
    use type_one
    implicit none

    type(one_t), allocatable    :: a(:), b(:), c(:)
    integer :: i

    allocate(b(4), c(4))


    do i = 1,4
        allocate(b(i)%i(5))
        allocate(c(i)%i(5))

        b(i)%i = 1.0
        c(i)%i = 2.0
    end do

    a = b + c

    print*, a(1)%i
end program mem_leak_test

This was first observed on OS X using ifort v15.0.3 confirmed on Linux ifort 15.0.2. Valgrind --tool=memcheck produces the following:

==3411== LEAK SUMMARY:
==3411==    definitely lost: 60 bytes in 3 blocks
==3411==    indirectly lost: 0 bytes in 0 blocks
==3411==      possibly lost: 0 bytes in 0 blocks
==3411==    still reachable: 1,136 bytes in 16 blocks
==3411==         suppressed: 0 bytes in 0 blocks

 

This seems related to the following topic:
https://software.intel.com/pt-br/forums/topic/269437

Reproducer is attached.

AttachmentSize
Downloadmain.f90746 bytes

Is there double complex interface of Iterative Sparse Solvers based on Reverse Communication Interface?

$
0
0

Dear MKL experts,

     I have to solve the sparse complex double symmetric equations in huge size. I am looking for iterative sparse solvers. I found that the MKL just provides  RCI Interface Routines of double precision. Is there a set of RCI interface Routines of double complex precision? Or any suggestion to get around it?

Thanks.

Ning     

Mixed language - Windows vs. Linux

$
0
0

I am developing a Fortran program that calls C functions, that in turn call Fortran (BLAS and LAPACK).  On Windows I use IVF and MSVC, and it all works fine. I have just started porting the program to Linux (on our cluster), and the first run crashed with SIGSEGV.  I have not had time yet to narrow down the crash location, but it occurs to me that it could be an issue of the compilers that are being used.

The Fortran is compiled with ifort, the C object files are currently compiled with gcc and statically linked, while BLAS and LAPACK are dynamic libraries, probably also built with gcc.  Is it a mistake to use gcc with ifort?  Presumably Intel C is also available on the cluster.

Thanks

Gib

text output in opengl

$
0
0

in an attempt to recreate the useful but now defunct glutbitmapcharacter routine, I'm attempting to use the fwglUseFontBitmaps routine as described at: https://msdn.microsoft.com/en-us/library/windows/desktop/dd374392(v=vs.85).aspx

Unfortunately the code fails  (okay=false, istatus = 0) when the fwglUseFontBitmaps function is called.  Any ideas ?

Please ignore the font stuff  - this was me starting to code up the NeHe tutorial - but since I cant get the fwglUseFontBitmaps to work I abandoned all hope.

subroutine setup_winfont(fontbase)

!

! routine to setup windows fonts for future output - based on arial font

use IFWINA

use IFOPNGL

!

integer(k_glint) :: fontbase

integer(HANDLE) :: hDC ! Device Context

integer(HANDLE) :: hRC ! OpenGL Context

integer(HANDLE) :: hWnd ! Window

integer(HANDLE) :: hinstance

integer(HANDLE),save :: hFont=0

integer(HANDLE),save :: oldFont=0

integer(HANDLE) :: hmemDC

integer font_height, istatus

logical keys(256)

logical okay

!

hmemDC = CreateCompatibleDC (hDC)

istatus= SelectObject (hmemDC, GetStockObject (SYSTEM_FONT))

write(*,*)'istatus ',istatus

write(*,*)'fontbase is ',fontbase

okay= fwglUseFontBitmaps(hmemDC, 0, 255, 1000)

write(*,*)' okay = ',okay

I do not see the Visual Studio!

$
0
0

Today I downloaded the Visual Studio Fortran for evaluation. After the installation, I got the following options: Intel (Storage Technology), Intel Math Kernel Library, Intel Parallel Studio (Intel Premier Support, Manager Software, Getting Started). But I do not see how to call the Visual Studio to enter Fortran codes. Can someone help me? I I am using "Windows 10" and a notebook Dell with Intel i7, 16 GB RAM. Thanks. I have two e-mails: jcbecce@hotmail.com and jcbecce@gmail.com


Allocatable variables slow the code?

$
0
0

I read the discussion in the topic 'Allocatable array' (issued 2008)
I didn't understand the answer. Allocatable variables slow the code or not?
I understood this problem could be found in debug mode, but the performance should be similar in release mode. Is this?
My Os is Win7 with Intel Fortran 10.
Allocatable is useful, but I don't want to sacrifice computational efficiency.
Since I am starting my project, I should understand this point now.
Regards

weird data types on the Locals window

$
0
0

I am using real*8 and complex*16 to declare some variables, and the Locals window gives REAL(8) and COMPLEX(8) for their respective data types.  I was expecting COMPLEX(16).  Numerical values for my real*8 variables use D for the exponential as I would expect, but my complex*16 variables are using E.

Am I doing something wrong?  My program is crashing with an error message that suggests the data types I'm passing in are not the data types I'm expecting them to be.  Run-Time Check Failure #2 - Stack around the variable '.T2_' was corrupted.

OpenMP: How to mix nested and non-nested parallization?

$
0
0

I have built this simple little program in an attempt to succesfully switch between nested and non-nested parallelism. This program is designed for a NUMA system with at least 6 numanodes, with 4 cores each, but if you have fewer NUMAnodes just change the number in the beginning...

So far I have been unable to figure out how to correctly combine Nested and non-nested parallelism.

Just a quick explanation of what this program does:

It sets the affinity for nested parallelism
Then it runs a nested parallel region (6 numa nodes with 4 cores on master thread and 3 on the others). (Here the load is distributed as desired across the NUMA nodes)
Then it runs a non-nested parallel region with 6*4 threads scattered across the NUMAnodes. (Here the distribution also works as intended)
Then it runs a second nested parallel region exactly similar to the first nested parallel region. (Now the load distribution is all fucked up, and all the work ends up on 2 of the NUMA nodes while the rest does nothing.)
So does anyone know how to switch between these different types of parallel regions? Is what I'm seeing a bug or what exactly is happening here?

 

program NumaAwareDGEMM
 use IFPORT
 use omp_lib
 use mkl_service
 use mTEST
implicit none

 logical(4) :: Success
 integer :: NoNUMANodes, blocksize,nrepeats,Runmode,t0
 integer :: N,I,J,NIte, First,Last,k,colidx,error,numofblocks,iii,ii,dim,d,threadID,NumaID
 integer :: Iter,Solver,NUMASize,m,ThreadsPrNuma,ID, NCPU
 integer, allocatable,dimension(:) :: GlobalThreadID
 real*8,allocatable,dimension(:,:) :: A, B,C1,c2,c3,c4,c5,c6,c7,c8
 real*8,allocatable,dimension(:,:,:) :: C
 real*8,allocatable,dimension(:)    :: tmp
 logical, allocatable, dimension(:) :: NumaNodeDone,MKlbusy


 NoNUMANodes=6                     !How many NUMA nodes to distribute calculations over
 NCPU=6*4
success = SETENVQQ("OMP_DISPLAY_ENV=TRUE")
success=SETENVQQ("OMP_PLACES={0:6},{6:6},{12:6},{18:6},{24:6},{30:6},{36:6},{42:6}")
!success=SETENVQQ("OMP_PLACES={0:6},{6:6},{12:6},{18:6},{24:6},{30:6}")
!success=SETENVQQ("OMP_PLACES={0:8},{8:8},{16:8},{24:8},{32:8},{40:8}")

 blocksize=600
 dim=blocksize*NoNUMANodes
 allocate(A(dim,dim))
 allocate(B(dim,dim))
 allocate(C1(dim,dim))
 allocate(C2(dim,dim))
 allocate(C3(dim,dim))
 allocate(C4(dim,dim))
 allocate(C5(dim,dim))
 allocate(C6(dim,dim))
 allocate(C7(dim,dim))
 allocate(C8(dim,dim))
 allocate(tmp(NCPU))
 call KMP_SET_STACKSIZE_S(990000000)
 call omp_set_dynamic(0)
 call omp_set_nested(1)
   !intialization region
   call omp_set_num_threads(NoNUMANodes) !First we spawn all the threads in a threadpool
   !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(i,ID)
   !$OMP DO SCHEDULE(STATIC)
   do i = 1,NoNUMANodes
      ID=omp_get_thread_num()
      print *,'Thread binding for socket=',ID
      if(i-1.ne.ID) print*,'ERROR on ID',ID,'i=',i
      SELECT CASE (i)
        CASE(1)
!          success=SETENVQQ("OMP_PLACES={0:8}")
          success=SETENVQQ("OMP_PLACES={0:6}")
        CASE(2)
!          success=SETENVQQ("OMP_PLACES={8:8}")
          success=SETENVQQ("OMP_PLACES={6:6}")
        CASE(3)
!          success=SETENVQQ("OMP_PLACES={16:8}")
          success=SETENVQQ("OMP_PLACES={12:6}")
        CASE(4)
          success=SETENVQQ("OMP_PLACES={18:6}")
!          success=SETENVQQ("OMP_PLACES={24:8}")
        CASE(5)
          success=SETENVQQ("OMP_PLACES={24:6}")
!          success=SETENVQQ("OMP_PLACES={32:8}")
        CASE(6)
          success=SETENVQQ("OMP_PLACES={30:6}")
!          success=SETENVQQ("OMP_PLACES={40:8}")
        CASE(7)
          success=SETENVQQ("OMP_PLACES={36:6}")
!          success=SETENVQQ("OMP_PLACES={48:8}")
        CASE(8)
          success=SETENVQQ("OMP_PLACES={42:6}")
 !         success=SETENVQQ("OMP_PLACES={56:8}")
      END SELECT
   end do
   !$OMP END DO
   !$OMP END PARALLEL
    print*,'Initialization over'
   !
    call omp_set_num_threads(NoNUMANodes) !Now outer parallelization over numa nodes
   !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(i,ID)
   !$OMP DO SCHEDULE(STATIC)
   do i = 1,NoNumanodes
      ID=omp_get_thread_num()
      SELECT CASE (i)
        CASE(1)
          call Products(dim,A,B,C1)
        CASE(2)
          call Products(dim,A,B,C2)
        CASE(3)
          call Products(dim,A,B,C3)
        CASE(4)
          call Products(dim,A,B,C4)
        CASE(5)
          call Products(dim,A,B,C5)
        CASE(6)
          call Products(dim,A,B,C6)
        CASE(7)
          call Products(dim,A,B,C7)
        CASE(8)
          call Products(dim,A,B,C8)
      END SELECT
   end do
   !$OMP END DO
   !$OMP END PARALLEL
   print*,'First Nested done '

    print*,'Starting single parallel region'
   call omp_set_num_threads(NCPU)
    print*,'Proc_bind',omp_get_proc_bind()
   !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(i,j,k)  proc_bind(Spread)
   !$OMP DO SCHEDULE(STATIC)
   do i=1,NCPU
    k=0
    do j=1,1000000000
     k=k+exp((i*1d0))*exp(-(i*1d0))+(j**2)
    end do
    tmp(i)=k
   end do
   !$OMP END DO
   !$OMP END PARALLEL

   print*,'Single parallel region done'


    call omp_set_num_threads(NoNUMANodes) !Now outer parallelization over numa nodes
   !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(i) proc_bind(Spread)
   !$OMP DO SCHEDULE(STATIC)
   do i = 1,NoNumanodes
      SELECT CASE (i)
        CASE(1)
          call Products(dim,A,B,C1)
        CASE(2)
          call Products(dim,A,B,C2)
        CASE(3)
          call Products(dim,A,B,C3)
        CASE(4)
          call Products(dim,A,B,C4)
        CASE(5)
          call Products(dim,A,B,C5)
        CASE(6)
          call Products(dim,A,B,C6)
        CASE(7)
          call Products(dim,A,B,C7)
        CASE(8)
          call Products(dim,A,B,C8)
      END SELECT
   end do
   !$OMP END DO
   !$OMP END PARALLEL

    end program NumaAwareDGEMM

  module mTEST
   use omp_lib

    contains
    subroutine Products(n,A,B,C)
    implicit none
    real*8,dimension(:,:)  :: A,B,C
    integer :: n
    integer  :: i,j,k,ID

    ID=omp_get_thread_num()
    if (ID.eq.0) then
    call omp_set_num_threads(4) !Inner parallelization
    else
    call omp_set_num_threads(3) !Inner parallelization
    end if

   !$OMP PARALLEL DEFAULT(SHARED) PRIVATE(i) PROC_BIND(MASTER)
   !$OMP DO SCHEDULE(STATIC)
    do i=1,n
     do j=1,n
      do k=1,n
        C(i,j)=A(i,j)*B(j,k)
      end do
     end do
    end do
   !$OMP END DO
   !$OMP END PARALLEL

    end subroutine Products
end module mTEST

 

Memory leak with nested OpenMP regions

$
0
0

Hello,

I have a memory leak problem with nested OpenMP parallel regions when both regions run with multiple threads. At the same time, when only one region have multiple threads and other one is 1-threaded, there is no memory leak.

There is C# program that calls Fortran dll multiple times. In Fortran dll I have nested parallel regions like that:

subroutine Sub1()

*some work*

!$    call OMP_SET_NESTED(.TRUE.)
!$OMP     parallel do num_threads(n1) shared(...) private(...)

do i=1,2

     *allocation of private dynamic arrays*

     *some work*

     call Sub2(args)

    *some work*

    *deallocation of private arrays*

end do

!$OMP end parallel do

end subroutine

subroutine Sub2(args)

*allocation dynamic arrays*

*some work*

!$OMP     parallel do  num_threads(n2) shared(...) private(...)

do i=1,2

    *allocation of private dynamic arrays* 

     *some work*

     *deallocation of private dynamic arrays*

end do

!$OMP end parallel do

*deallocation of dynamic arrays*

end subroutine

So I have 2 loops each has 2 iterations. When I run the code with n1=2, n2=1, or n1=1, n2=2 (number of threads in Sub1 and Sub2), everything is fine, but when I run it with n1=2, n2=2 then I have memory leak and program crashes after some time when memory usage reaches 2 Gb (I build it as 32-bit app).

VMMAP tool shows that most memory as taken by "Private data", where I can see a lot of memory blocks with size 1024 Kb and total WS 1000 Kb, the amount of such blocks is increasing with time. Because of such even size (exactly 1 Mb) I suspect that these are some system blocks, maybe stacks of OpenMP threads?

I tried it both on 15.0 and 16.0 (beta) compilers, the behavior is the same.

error #8339: dummy argument of a final subroutine cannot be...

$
0
0

Hello all.

Trying to learn how to do OOP with Fortran, and receiving " error #8339: The dummy argument of a final subroutine must be a variable of the derived type being defined and cannot be optional, pointer, allocatable, or polymorphic.   [THIS]  " when trying to run a modified example of S.C.Chapman "Fortran 95/2003 for Scientists and Engineers" (3rd edition), about how to use finalizers (in page 790). I was trying to change the real vector class in that example by a character string class (same error with the real vector in the book), to add some methods afterwards, and to see if I was able to emulate the behavior of string classes in other languages. The book warns the code in the example might not work in the Fortran compilers available by that time. Code is attached. I am using Intel Compiler XE v14 SP1.

Any advice?

Thanks and regards.

   module class_string
   implicit none
   type, public :: string
      character, dimension(:), pointer :: text
      logical :: is_allocated = .false.
   contains
      final :: clean_text
   end type
   contains
      subroutine clean_text(this)
         class(string) :: this
         integer :: istat
         if (this%is_allocated) then
            deallocate(this%text, stat=istat)
         end if
      end subroutine
   end module

Break when contents of variable changes

$
0
0

It is possible, in Visual Studio 2010 and IVF 15.1, to set a breakpoint such that the program stops when the value of a variable changes anywhere during the program execution rather than at a particular line of code? I've found any option where if you know the address of the variable you can set this but have not yet found how to get the address of a variable.

Thanks in advance for any tips.

 

procedure to obtain license file

$
0
0

I downloaded the intel parallel studio XE cluster edition for linux.
However, I do not find any license file required to install the product.
Please suggest me the procedure of obtaining the correct license file for
the above product.


Run time error with release win32 version

$
0
0

Can somebody tell me why i can compile & run the same code with debug win32, debug x64, and release x64, but give me the run time error with release win32 version even i can pass the compiler? I am using Intel parallel studio 2015.

Janice

 

Tree structure using derived type - Slow allocation and recovery

$
0
0

Hi,

I am trying to read and store data in a tree structure using derived types to save memory. My code looks like something like shown below but here I just store a constant value and recover it for simplicity. The array dimensions in my actual problem are so large that I had to use jagged arrays using derived types to mange storage. The issue is that the code becomes very slow. I understand the slowness in the storing part due to multiple allocation since for derived types I had to allocate for each layer. However, the recovery part is also very slow. I was wondering if there is another way around this type of problem to increase the speed. I cannot define a big static array from the beginning since the size will be so large that I get memory errors. Thanks for helps and suggestions in advance. Here is my sample code:

      program arash

 
      integer i,j,k,l,m,n
      real a

          type :: Row5
  real, allocatable :: Row5(:)
          end type Row5
             
             
          type :: Row4
  type(Row5), allocatable  :: Row4(:)
          end type Row4
         
          type :: Row3
  type(Row4), allocatable  :: Row3(:)
          end type Row3
         
          type :: Row2
  type(Row3), allocatable  :: Row2(:)
          end type Row2
         
          type :: Row1
  type(Row2), allocatable  :: Row1(:)
         
          end type Row1
         
          type(Row1), allocatable, dimension(:) :: MainMatrix
 

             
          allocate (MainMatrix(100))
         
C---------------Storing data-----------------------------------  
          do i=1,100
                          if (.not. allocated(MainMatrix(i)%Row1)) allocate (MainMatrix(i)%Row1(8))
           do j=1,8
                           if (.not. allocated(MainMatrix(i)%Row1(j)%Row2)) allocate (MainMatrix(i)%Row1(j)%Row2(54))
            do k=1,54
                            if (.not. allocated(MainMatrix(i)%Row1(j)%Row2(k)%Row3))
     1      allocate (MainMatrix(i)%Row1(j)%Row2(k)%Row3(5))
             do l=1,5
                             if (.not. allocated(MainMatrix(i)%Row1(j)%Row2(k)%Row3(l)%Row4))
     1      allocate (MainMatrix(i)%Row1(j)%Row2(k)%Row3(l)%Row4(10))
              do m=1,10

            if (.not. allocated(MainMatrix(i)%Row1(j)%Row2(k)%Row3(l)%Row4(m)%Row5))
     1      allocate (MainMatrix(i)%Row1(j)%Row2(k)%Row3(l)%Row4(m)%Row5(21))
            do n=1,21
            MainMatrix(i)%Row1(j)%Row2(k)%Row3(l)%Row4(m)%Row5(n)=3.66
            enddo
              enddo
             enddo
            enddo
           enddo
          enddo
            
         
C---------------Recovering data-----------------------------------     
         do i=1,100
           do j=1,8
            do k=1,54
             do l=1,5
              do m=1,10
            do n=1,21
            a=MainMatrix(i)%Row1(j)%Row2(k)%Row3(l)%Row4(m)%Row5(n)
              enddo
              enddo
             enddo
            enddo
           enddo
         enddo
                   
                   
      deallocate (MainMatrix)
     
      end program arash

 

Intel FORTRAN on a Network

$
0
0

Please add these lines to the registry:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor

HKEY_LOCAL_MACHINE\Software\WOW6432\Microsoft\Command Processor

add the value DisableUNCC Check REG_DWORD and set the value of 0x1 (Hex).

My computer guy did this for me and it still will not work.

I am running Thermal Desktop, with Intel FORTRAN, on a network.  Please help.

AttachmentSize
DownloadTD_5_7_Fix_3.pptx2.43 MB

list of complied routines and function

$
0
0

Hi

sounds like a simple question:

What option do I have to use, if I want the compiler to tell me the names of all compiled routines and functions.

-watch source only shows the compiled program files

I could not find in the compiler manual.

Thanks

Simon

How to download an evaluation version

$
0
0

We are intending to use Intel Fortran Compiler XE 12.1. It takes weeks for our office people to process a request, so I would like to download an evaluation version to get started. I have registered and so on. When I press Try And Buy 30 day Evaluation Fortran, all I get is an error message;

Error

The requested product could not be found. Please visit our Support Site.

So what am I doing wrong?

 

 

 

Viewing all 3270 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>