Gentoo Archives: gentoo-user

From: Michael Mol <mikemol@×××××.com>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] openmp flag
Date: Wed, 26 Sep 2012 19:49:08
Message-Id: CA+czFiBuMvxgQVuLJPpv0=TTFkmzwb_JxHPafXO7Y2maToj5TQ@mail.gmail.com
In Reply to: Re: [gentoo-user] openmp flag by Florian Philipp
1 On Wed, Sep 26, 2012 at 2:25 PM, Florian Philipp <lists@×××××××××××.net> wrote:
2 > Am 25.09.2012 17:01, schrieb Michael Mol:
3 >> On Tue, Sep 25, 2012 at 10:42 AM, James <wireless@×××××××××××.com> wrote:
4 >>> Hello,
5 >>>
6 >>> background:
7 >>> It seems there is a major push now to put openmp:
8 >>> [1,2] into embedded systems [3].
9 >>>
10 >>> So I looked at these [4] packages to find something
11 >>> interesting to look deeper into related to openMP.
12 >>>
13 >>> Blender immediately jumped out at me as a good example,
14 >>> cause an old friend Ken Hughes is, imho, one of the
15 >>> world's most amazing C programmers, and a stalwart at
16 >>> the blender project.
17 >>>
18 >>>
19 >>> OK, here's the question, I went to emerge blender
20 >>> and found that the openmp flag is already set. {?}
21 >>> Yet I looked everywhere and did not see the openmp flag
22 >>> set (/etc/make.conf, /etc/portage/package.use)
23 >>> so where is it getting set on my AMD workstation?
24 >>>
25 >>> [ebuild N ] media-gfx/blender-2.49b-r2 USE="ffmpeg
26 >>> nls ogg openmp -blender-game -openal -verse"
27 >>>
28 >>> I feel like I should know (profiles etc) but, I'm a little
29 >>> bit brain_dead this am, so any help is appreciated.
30 >>
31 >> Packages can choose to have USE flags enabled or disabled for them by
32 >> default. So blender likely has openmp enabled by default, without that
33 >> affecting any other packages.
34 >>
35 >>>
36 >>> OH, anyone is encouraged to "chime in" about openmp
37 >>> and your thoughts as to it's viability and usefulness.
38 >>> Do you believe it will become a core technology,
39 >>> embedded into GCC? Used widely?
40 >>
41 >> If you can use it, use it. OpenMP is little more than a set of
42 >> extensions to C (and C++) which allows the normally-scalar language to
43 >> do some things in a parallel fashion without resorting to the costs of
44 >> multithreading. This is good, because vector instructions have been
45 >> available in x86 since MMX came out, and improvements to the vector
46 >> instructions available to x86 still goes on.
47 >>
48 >
49 > I guess this is just poorly phrased but to clarify: OpenMP *does* use
50 > multithreading and nothing else. It does not, in any way, make more use
51 > of vector instructions than GCC without -fopenmp. I guess what you mean
52 > is avoiding the costs of *manual* multithreading using POSIX threads and
53 > the like.
54
55 Fair point.
56
57 >
58 > If you want to use vector instructions for your own code, you should
59 > look into compiler intrinsics (i.e. vector instructions as built-in C
60 > functions).
61 > http://ds9a.nl/gcc-simd/
62
63 Personally, I don't like compiler intrinsics; they're specific to
64 given compilers. I've tended to write code which is supposed to
65 compile on multiple compilers. (There's a world outside GCC...)
66
67 > And, just to nit-pick: OpenMP also works for Fortran.
68
69 True; this slipped my mind. :)
70
71 >
72 >> Related are CUDA and OpenCL, which are two other systems for
73 >> parallelizing code. CUDA assumes you have access to an nVidia GPU (and
74 >> have a CUDA-enabled driver installed). OpenCL is a big more generic,
75 >> and supports dispatching to CUDA, CPU vector instructions or even
76 >> thread pools.
77 >>
78 >> Personally, my recommendation is to enable everything you can get
79 >> working (be it, OpenMP, CUDA or OpenCL); vector processing is going to
80 >> be generally more efficient than scalar processing. You don't need to
81 >> worry about which is better unless you're a software developer. (And
82 >> if you're a software developer, go study up on their differences;
83 >> tradeoffs happen.)
84 >>
85 >
86 > +1
87 >
88 > By the way: Did anyone get good results out of dev-util/intel-ocl-sdk
89 > for OpenCL? Some time ago I tested it with a package that supported both
90 > OpenMP and OpenCL (not sure which) and OpenCL didn't really make an
91 > impact on my Core i5.
92
93 Haven't tried it, no. I've got a Radeon 6870, and I can only have one
94 OpenCL driver loaded at a time. (IBM has a middleman driver which
95 supports dispatching to multiple backends, but I believe its a for-pay
96 package.)
97
98 --
99 :wq

Replies

Subject Author
Re: [gentoo-user] openmp flag Florian Philipp <lists@×××××××××××.net>