Microsoft Windows* (XP, Vista, 7)

OpenMP performance

This is a rather general question about a situation that arises frequently.  An array is to be populated by computing the entries in a parallelised loop.  What is the best way to prevent slowdown caused by cache line contention?  What I have done in the past is to ensure that each process operates on a range of indices.  For example, if I am using 4 processors and the array is A(4N), then process k populates A(i), i=(k-1)*N+1,..,kN.  Is this the best method?



Problem installing Parallel Studio 2015 Update 4

I received the notice announcing Update 4 but I am having a problem during the installation:

I get a message saying

The following application should be closed before continuing the install:

   - FLEXnet Connect Software Manager

I checked task manager and closed a process that seems to match the description (some Intel License utility; running wth SYSTEM as user; sorry I did not note the name), but this did not help.

This has not happened with previous updates. AFAIK, nothing else has changed in this computer since the previous update.

Problem passing array from C++ to Fortran DLL


Apologies for posting my second topic today, but I have searched high and low for a solution to this particular problem and cannot break through it.

I am trying to call a Fortran subroutine (in a DLL) from C++ code, and the subroutine has some allocatable arrays as arguments.

When I step into the subroutine code, the array always shows up as "Undefined pointer/array", so my data is not getting passed in, even though it looks correct on C++ side

Other non dimensional arguments are working fine.

Here is my Fortran code:

SIMD prefix sum (cumulative sum)


Does anyone have a good reference to an implementation (or at least an algorithm) for implementing a so-called prefix sum (a cumulative sum) in Fortran using SIMD?  I have found several good reference for implementations in C++ but they use SIMD functions peculiar to C++ that don't appear to be available in Fortran.


Calling a function from a parallelized do concurrent loop

Trying to compile my program in the release mode with parallelization, I've encountered a problem with calling a function, defined in a module. Here is the sample program to reproduce the problem:

program test
use test_mod
implicit none

integer, parameter :: N = 10
integer :: i
real :: a(N)

do concurrent (i = 1:N)
	a(i) = func(real(i))
end do

print *, a

end program

and the module:

DEC$ ATTRIBUTES DLLEXPORT attribute can not be assigned to an internal procedure


I am trying to expose some Fortran subroutines in a DLL.
I didn't write the Fortran code, and I'm having some difficulties creating the DLL.

The Fortran code is something like this (simplified):

! ===========================================================================
 ! Some declarations, initialisations etc
   subroutine Initialisation


Double click selection of variable name is broken in VS

In November 2013 I posted this but the post is locked so I can not bump it:

If you double click a variable name in the source that is a component of a derived type, VS selects past the percent sign on the left but not that on the right!  It would be better I think if it stopped for both sides. It seams to have got changed in XE2013 update 5. In update 3 select stopped on both sides.

It is not yet fixed in XE 2015 update 3 and I presume not in later ones. I know it probably seams minor but it does affect users productivity. Is there an issue number ?

Suscribirse a Microsoft Windows* (XP, Vista, 7)