Let me have a go at answering based on my experiences.

There is OpenMP 3 support in recent versions of gcc.  But to make it 
usable you need two more pieces:

(a) libgomp to have been built with the compiler (it is optional).  This 
can be built statically or as a DLL: if the latter it needs to be in the 
search path.

(b) A version of pthreads.  There are two available, one based on 
pthreads-w32 which uses a DLL (and so needs to be in your path) and 
winpthreads, part of the 'experimental' section of mingw-w64, which can 
be built statically or as a DLL.

For simply adding -fopenmp to your compile/link to work you need the 
compiler configured correctly.  There will be a file libgomp.spec 
somewhere in the compiler tree, and it may need to be edited to be 
something like

*link_gomp: -lgomp -lpthread

(and almost certainly will need editing if you use static linking).

Given those pieces, all the combinations I have tried recently work 
except x64 dynamic winpthreads, which is prone to crashing (most often 
during process termination.)

As far as I know both pthreads use Windows threads.  In any case, the 
performance can be really poor compared to say Linux as there are far 
more substantial overheads.  So our experience is that OpenMP is only 
useful on Windows for running quite appreciable computations in 
parallel.  Which is not what our users use OpenMP for ....

The reason I make the comment about DLLs is that we have seen several 
instances of people compiling extensions which use OpenMP and 
distributing them without the DLLs they depend on.

These days I use my own toolchain builds, but in the past I have used 
Ozhan's ('sezero') builds of gcc pre-4.5.4.  He supplies pthreads-w32 
(as far as I recall you needed to unzip it).

Brian Ripley

On 02/01/2012 13:57, Peter Meyer wrote:
> Hi @All
>
> First: Happy New Year!
>
> In the last months i was developing a Cross Compiler Program (MinGW
> 32-Bit and Visual C/C++ 64-Bit).
> I choosed QT 4.7 - but: The MS Compiler only supports OpenMP 2.0 so the
> Code was not much efficient,
> mostly parallel for loops. The Problem at MinGW 4.5 was, thadt sometimes
> the  Programm crashed because
> of a Bug in the Compiler (there was a Bug description like: OpenMP is
> broken).
>
> Ok, thadt was MinGW, now lets talk about MinGW64. How well rungs OpenMP
> 2 or higher or should i
> rethink OpenMP at all and using the OpenSource Version of Intel Thread
> Building Blocks?
>
> Greetings from Germany,
> Peter


-- 
Brian D. Ripley,                  [email protected]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual 
desktops for less than the cost of PCs and save 60% on VDI infrastructure 
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to