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 |