Orson,

no, the raytracing renderer is completely fine in that use-cases.

It is only the OpenGL renderer.
I first noticed the hang when I switched back from Raytracing to OpenGL 
(obviously after I did one of the 2 use-cases).

If it crashes, I get a backtrace of the crashing thread as follows
<<<
Thread 3 Crashed:
0   libomp.dylib                        0x0000000109c728e2 
__kmp_release_queuing_lock + 165
1   _pcbnew.kiface                      0x0000000111a1aaa3 
CLAYER_TRIANGLES::AddToMiddleContourns(std::__1::vector<glm::tvec2<float, 
(glm::precision)0>, std::__1::allocator<glm::tvec2<float, (glm::precision)0> > 
> const&, float, float, bool) + 1011
2   _pcbnew.kiface                      0x0000000111a1ad52 
CLAYER_TRIANGLES::AddToMiddleContourns(SHAPE_LINE_CHAIN const&, float, float, 
double, bool) + 546
3   _pcbnew.kiface                      0x0000000111a1b228 .omp_outlined. + 248
4   libomp.dylib                        0x0000000109c81b93 
__kmp_invoke_microtask + 147
5   libomp.dylib                        0x0000000109c587b7 
__kmp_invoke_task_func + 156
6   libomp.dylib                        0x0000000109c57e88 __kmp_launch_thread 
+ 267
7   libomp.dylib                        0x0000000109c79e6f 
__kmp_launch_worker(void*) + 588
8   libsystem_pthread.dylib             0x00007fff6735b6c1 _pthread_body + 340
9   libsystem_pthread.dylib             0x00007fff6735b56d _pthread_start + 377
10  libsystem_pthread.dylib             0x00007fff6735ac5d thread_start + 13
>>>

The main thread looks similar.
<<<
Thread 0:: Dispatch queue: com.apple.main-thread
0   libomp.dylib                        0x0000000109c728e2 
__kmp_release_queuing_lock + 165
1   _pcbnew.kiface                      0x0000000111a1aaa3 
CLAYER_TRIANGLES::AddToMiddleContourns(std::__1::vector<glm::tvec2<float, 
(glm::precision)0>, std::__1::allocator<glm::tvec2<float, (glm::precision)0> > 
> const&, float, float, bool) + 1011
2   _pcbnew.kiface                      0x0000000111a1ad52 
CLAYER_TRIANGLES::AddToMiddleContourns(SHAPE_LINE_CHAIN const&, float, float, 
double, bool) + 546
3   _pcbnew.kiface                      0x0000000111a1b228 .omp_outlined. + 248
4   libomp.dylib                        0x0000000109c81b93 
__kmp_invoke_microtask + 147
5   libomp.dylib                        0x0000000109c587b7 
__kmp_invoke_task_func + 156
6   libomp.dylib                        0x0000000109c557dc __kmp_fork_call + 
4682
7   libomp.dylib                        0x0000000109c4d1fb __kmpc_fork_call + 
183
8   _pcbnew.kiface                      0x0000000111a1b114 
CLAYER_TRIANGLES::AddToMiddleContourns(SHAPE_POLY_SET const&, float, float, 
double, bool) + 628
9   _pcbnew.kiface                      0x0000000111a126ae 
C3D_RENDER_OGL_LEGACY::generate_holes_display_list(std::__1::list<COBJECT2D*, 
std::__1::allocator<COBJECT2D*> > const&, SHAPE_POLY_SET const&, float, float, 
bool) + 462
10  _pcbnew.kiface                      0x0000000111a12d39 
C3D_RENDER_OGL_LEGACY::reload(REPORTER*) + 1545
11  _pcbnew.kiface                      0x0000000111a16e02 
C3D_RENDER_OGL_LEGACY::Redraw(bool, REPORTER*) + 306
12  _pcbnew.kiface                      0x0000000111a09124 
EDA_3D_CANVAS::OnPaint(wxPaintEvent&) + 628
>>>

I am not really familiar with OpenMP, but the AddToMiddleContourns methods look 
good in terms of synchronization (well, at first glance).


Regards,
Bernhard

> On 4. Mar 2018, at 20:06, Maciej Suminski <maciej.sumin...@cern.ch> wrote:
> 
> Bernhard,
> 
> I suppose this is about raytrace rendering? Anyway, I see it crashing
> even without any design loaded. 3D viewer passes the first phase so I
> see the design rendered, but during 'Post processing shader' stage it
> crashes.
> 
> Cheers,
> Orson
> 
> On 03/04/2018 07:36 PM, Bernhard Stegmaier wrote:
>> Hi all,
>> 
>> could please anybody test the following on a Windows/Linux OpenMP version?
>> 
>> I have a PCB with only components placed (via “Update from Schematic”), no 
>> routing done yet.
>> Make sure 3d-viewer OpenGL rendering is OK, close 3d-viewer.
>> Now, edit a footprint (“e”) and do a “Update Footprint from Library” for 
>> only this footprint (no changes in footprint needed).
>> Open 3d-viewer again.
>> 
>> Or:
>> Open PCB as above with only components and no routing yet.
>> Make sure that 3d-viewer in OpenGL mode is fine, close 3d-viewer.
>> Delete some of the components and reimport them vie “Update PCB from 
>> Schematic”.
>> Open 3d-viewer again.
>> 
>> In both cases my OpenMP builds (clang-5.0.1 with libomp-3.1) crash or hang 
>> (all cores at 100%, grey window, nothing happens) 3d-viewer .
>> It doesn’t hang/crash in my non-OpenMP builds.
>> 
>> If I save the PCB after the changes, close and reopen KiCad, then 3d-viewer 
>> of OpenMP build is also fine again.
>> 
>> 
>> Regards,
>> Bernhard
>> 
>>> On 3. Mar 2018, at 20:33, Bernhard Stegmaier <stegma...@sw-systems.de> 
>>> wrote:
>>> 
>>> Hi all,
>>> 
>>> So, I played around a bit to get OpenMP and GCD into something like a 
>>> “parallel_for” wrapper which either uses OpenMP or GCD.
>>> Unfortunately, OpenMP seems to require that the “for” statement directly 
>>> follows the “#pragma omg for …”.
>>> That currently killed all my attempts to define such a “parallel_for” (as 
>>> function, #define, ?) so that the code will stay the same for both.
>>> One option would be to pull the “#pragma omp for …” into the wrapper, but I 
>>> guess this is not really acceptable (since you can’t specify any specific 
>>> schedule parameters any longer).
>>> 
>>> I will think about it some more just because of the challenge… but I am not 
>>> very optimistic at the moment to get something nice.
>>> If anyone else has a nice idea, I’d be very interested to learn freaky new 
>>> stuff… :)
>>> 
>>> On the other side, I looked at using a non-Xcode OpenMP capable clang.
>>> The only caveat seems to be not to mix standard C++ libraries (in the past 
>>> libc++/libstdc++ haven’t been compatible in some aspects - didn’t try to 
>>> find out if that is resolved).
>>> Default on macOS now is libc++, but it seems that at least MacPorts builds 
>>> clang with libstdc++ per default (no idea why).
>>> The MacPorts build can easily be switched to libc++.
>>> That clang-mp builds KiCad without problems even if dependencies have been 
>>> built with Xcode clang.
>>> Everything seems to work as expected, multithreading is there where it 
>>> should be.
>>> 
>>> So, for now it seems to be the most easy solution to switch to a suitable 
>>> non-Xcode clang for building packages - if we want to have OpenMP for macOS.
>>> 
>>> AFAIK our build machines use Homebrew.
>>> Seems as if Homebrew decides which standard library to use depending on 
>>> macOS version (https://docs.brew.sh/C++-Standard-Libraries 
>>> <https://docs.brew.sh/C++-Standard-Libraries> 
>>> <https://docs.brew.sh/C++-Standard-Libraries 
>>> <https://docs.brew.sh/C++-Standard-Libraries>>).
>>> So, if everything is recent enough it might not be a problem at all… like 
>>> it obviously also has been for Seth below.
>>> 
>>> 
>>> Regards,
>>> Bernhard
>>> 
>>>> On 1. Mar 2018, at 17:47, Seth Hillbrand <seth.hillbr...@gmail.com 
>>>> <mailto:seth.hillbr...@gmail.com> <mailto:seth.hillbr...@gmail.com 
>>>> <mailto:seth.hillbr...@gmail.com>>> wrote:
>>>> 
>>>> Hi All-
>>>> 
>>>> I was playing with this last night (don't normally compile on the mac) and 
>>>> found that using homebrew's llvm 3.8.1 seems to compile fine with 
>>>> -fopenmp.  Running some OMP test code from 
>>>> https://gist.github.com/sethhillbrand/45dfb50e5a1865ad65bda1d6522778c5 
>>>> <https://gist.github.com/sethhillbrand/45dfb50e5a1865ad65bda1d6522778c5><https://gist.github.com/sethhillbrand/45dfb50e5a1865ad65bda1d6522778c5
>>>>  <https://gist.github.com/sethhillbrand/45dfb50e5a1865ad65bda1d6522778c5>> 
>>>> shows expected result of 4 threads.  I didn't get OpenMP errors when 
>>>> compiling KiCad although I didn't really notice a substantial difference 
>>>> in speed for the quick tests I was running.  Maybe with more involved 
>>>> operations.
>>>> 
>>>> I'm not sure if this will require us to distribute a different libstdc++ 
>>>> with KiCad.  Probably.  Does that seem feasible to the packing team?
>>>> 
>>>> -S
>>>> 
>>>> 2018-03-01 7:23 GMT-08:00 Bernhard Stegmaier <stegma...@sw-systems.de 
>>>> <mailto:stegma...@sw-systems.de> <mailto:stegma...@sw-systems.de 
>>>> <mailto:stegma...@sw-systems.de>>>:
>>>> Hmm?
>>>> You keep everything as is (especially creating threads), but just put the 
>>>> “#pragma …” before the for-loop.
>>>> So, there is one thread for the progress and one for the workers.
>>>> In the workers thread OpenMP (if there) takes care of adding additional 
>>>> threads for parallelising the loop?
>>>> 
>>>> Or, am I wrong with that?
>>>> 
>>>>> On 1. Mar 2018, at 16:11, Jeff Young <j...@rokeby.ie 
>>>>> <mailto:j...@rokeby.ie> <mailto:j...@rokeby.ie <mailto:j...@rokeby.ie>>> 
>>>>> wrote:
>>>>> 
>>>>> But then the progress reporter won’t work (and you’ve got no way to 
>>>>> cancel).
>>>>> 
>>>>> Non-pooling parallel threads are sufficient for zone filling, aren’t they?
>>>>> 
>>>>> 
>>>>>> On 1 Mar 2018, at 15:00, Bernhard Stegmaier <stegma...@sw-systems.de 
>>>>>> <mailto:stegma...@sw-systems.de> <mailto:stegma...@sw-systems.de 
>>>>>> <mailto:stegma...@sw-systems.de>>> wrote:
>>>>>> 
>>>>>> For now it would probably be fine to just restore the pragma for the for 
>>>>>> loop optimisation.
>>>>>> Mac users are used to work single-threaded, all others would get back 
>>>>>> multithreading here.
>>>>>> 
>>>>>>> On 1. Mar 2018, at 15:58, Tomasz Wlostowski <tomasz.wlostow...@cern.ch 
>>>>>>> <mailto:tomasz.wlostow...@cern.ch><mailto:tomasz.wlostow...@cern.ch 
>>>>>>> <mailto:tomasz.wlostow...@cern.ch>>> wrote:
>>>>>>> 
>>>>>>> On 01/03/18 15:43, Jeff Young wrote:
>>>>>>>> The purpose is it works on Mac.
>>>>>>>> 
>>>>>>>> But it does appear I misread the std::max( omp_get_num_procs(), 2 ) 
>>>>>>>> part.
>>>>>>>> 
>>>>>>> 
>>>>>>> Thanks Jeff!
>>>>>>> 
>>>>>>> Be aware that neither std::thread nor std::async have any concept of
>>>>>>> thread pooling - we need to look for a suitable library or write or own.
>>>>>>> 
>>>>>>> Cheers,
>>>>>>> Tom
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Mailing list: https://launchpad.net/~kicad-developers 
>>>>>>> <https://launchpad.net/~kicad-developers> 
>>>>>>> <https://launchpad.net/~kicad-developers 
>>>>>>> <https://launchpad.net/~kicad-developers>>
>>>>>>> Post to     : kicad-developers@lists.launchpad.net 
>>>>>>> <mailto:kicad-developers@lists.launchpad.net> 
>>>>>>> <mailto:kicad-developers@lists.launchpad.net 
>>>>>>> <mailto:kicad-developers@lists.launchpad.net>>
>>>>>>> Unsubscribe : https://launchpad.net/~kicad-developers 
>>>>>>> <https://launchpad.net/~kicad-developers> 
>>>>>>> <https://launchpad.net/~kicad-developers 
>>>>>>> <https://launchpad.net/~kicad-developers>>
>>>>>>> More help   : https://help.launchpad.net/ListHelp 
>>>>>>> <https://help.launchpad.net/ListHelp> 
>>>>>>> <https://help.launchpad.net/ListHelp 
>>>>>>> <https://help.launchpad.net/ListHelp>>
>>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~kicad-developers 
>>>> <https://launchpad.net/~kicad-developers> 
>>>> <https://launchpad.net/~kicad-developers 
>>>> <https://launchpad.net/~kicad-developers>>
>>>> Post to     : kicad-developers@lists.launchpad.net 
>>>> <mailto:kicad-developers@lists.launchpad.net> 
>>>> <mailto:kicad-developers@lists.launchpad.net 
>>>> <mailto:kicad-developers@lists.launchpad.net>>
>>>> Unsubscribe : https://launchpad.net/~kicad-developers 
>>>> <https://launchpad.net/~kicad-developers> 
>>>> <https://launchpad.net/~kicad-developers 
>>>> <https://launchpad.net/~kicad-developers>>
>>>> More help   : https://help.launchpad.net/ListHelp 
>>>> <https://help.launchpad.net/ListHelp> <https://help.launchpad.net/ListHelp 
>>>> <https://help.launchpad.net/ListHelp>>
>>>> 
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~kicad-developers 
>>>> <https://launchpad.net/~kicad-developers> 
>>>> <https://launchpad.net/~kicad-developers 
>>>> <https://launchpad.net/~kicad-developers>>
>>>> Post to     : kicad-developers@lists.launchpad.net 
>>>> <mailto:kicad-developers@lists.launchpad.net> 
>>>> <mailto:kicad-developers@lists.launchpad.net 
>>>> <mailto:kicad-developers@lists.launchpad.net>>
>>>> Unsubscribe : https://launchpad.net/~kicad-developers 
>>>> <https://launchpad.net/~kicad-developers> 
>>>> <https://launchpad.net/~kicad-developers 
>>>> <https://launchpad.net/~kicad-developers>>
>>>> More help   : https://help.launchpad.net/ListHelp 
>>>> <https://help.launchpad.net/ListHelp> <https://help.launchpad.net/ListHelp 
>>>> <https://help.launchpad.net/ListHelp>>
>>> 
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers
>>> Post to     : kicad-developers@lists.launchpad.net
>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>> More help   : https://help.launchpad.net/ListHelp
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
>> 
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to