Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29277 Discussions

Bug in Parallel Debugger of IVF 12.1 update 8 ?!

Stefan_Langhammer
496 Views
When i enable the "thread data sharing events" detection and read from a dynamic array which has been declared as SHARED, there seems to be a memory leak in the debugger which eat up my memory. When i disable the "thread data sharing events" it works. The application i try to run in parallel is based on f77 source.

After hours of searching i've tracked down the problem to this simple Fortran Project.

The main: console1.f
[fxfortran]program Console1
        implicit none
        integer VolumeExtent(6)
        byte, target, allocatable, dimension(:) :: labv
        byte, pointer,             dimension(:) :: labvptr

      interface
          recursive subroutine sub1(
     &       VolumeExtent,
     &       labv
     &       )
             integer, intent(in):: VolumeExtent(6)
             byte , pointer, dimension(:), intent(in):: labv
           end subroutine
        end interface
      
      VolumeExtent(1) = 1
      VolumeExtent(2) = 512
      VolumeExtent(3) = 1
      VolumeExtent(4) = 512
      VolumeExtent(5) = 1
      VolumeExtent(6) = 102
 
! Allocate labv                     
      allocate(labv(VolumeExtent(2)*VolumeExtent(4)*VolumeExtent(6) ))
      
! Init arrays
      labv = 0
      labvptr = > labv
     
    call sub1(
     & VolumeExtent,
     & labvptr
     & )
        pause

        end program Console1[/fxfortran]


and the subroutine: sub1.f
[fxfortran]recursive subroutine sub1(
     & VolumeExtent,
     & labv
     & )

      implicit none
      integer, intent(in):: VolumeExtent(6)
    byte, pointer, dimension(:), intent(in):: labv   

      integer currentJ,currentK,voxelInXYPlane,voxelInX
      integer i_lv, j_lv, k_lv, ii
      integer lab_value,temp
                
      voxelInX       = (VolumeExtent(2)-VolumeExtent(1)+1)
      voxelInXYPlane = (VolumeExtent(4)-VolumeExtent(3)+1)*voxelInX
              
    do 30 k_lv=VolumeExtent(5),VolumeExtent(6)
    
!$OMP PARALLEL DO
     &             PRIVATE(j_lv,i_lv,lab_value,currentK,currentJ,ii)
     &             SHARED(labv)
     
            do 20 j_lv=VolumeExtent(1),VolumeExtent(2)
                    do 10 i_lv=VolumeExtent(3),VolumeExtent(4)
                        currentK = k_lv-VolumeExtent(5)
                        currentJ = j_lv-VolumeExtent(3)
                        ii = currentK* voxelInXYPlane + currentJ*voxelInX + i_lv
                        lab_value=iand(labv(ii),B"00111111")
10                    END DO
20            END DO
!$OMP END PARALLEL DO

30     END DO

      write (*,*) 'end '
      end subroutine sub1

[/fxfortran]
Anyone has an idea what's wrong ??

Many thanks,
Stefan
0 Kudos
3 Replies
Steven_L_Intel1
Employee
496 Views
As we have decided to discontinue the Parallel Debug Extension, I doubt there will be work done on this issue. You may want to look at Intel Inspector XE and its various thread diagnostic features.
0 Kudos
Stefan_Langhammer
496 Views
So you can confirm that it's a problem of the debug extension and not a problem of my mixed fortran 77/95 code ? That would be some good news. But why Intel doesn't remove obsolete components when i've updated from version 11 to 12 ? Or at least bring up a message that i shouldn't use this component any longer...

And one more question. Can i use the Intel Inspector XE. with my Intel Visual Fortran Composer XE 11 license ?

Thanks,
Stefan
0 Kudos
Steven_L_Intel1
Employee
496 Views
You indicated that when you disabled data sharing events in the debugger extension that the problem disappeared. We have said in the compiler release notes that support for the Parallel Debug Extension may be removed in a future version. You can continue to use it if it works for you, but I think it's only fair to let you know that bugs in this component will not be fixed.

Intel Inspector XE requires a separate license. It is included in the Fortran Studio XE and Parallel Studio XE suites.

Lastly, your code is all Fortran 95. There is really no such thing as "mixed Fortran 77/95".
0 Kudos
Reply