The purpose is it works on Mac. But it does appear I misread the std::max( omp_get_num_procs(), 2 ) part.
Patch coming. Cheers, Jeff. > On 1 Mar 2018, at 14:09, Tomasz Wlostowski <tomasz.wlostow...@cern.ch> wrote: > > On 01/03/18 15:01, Jon Evans wrote: >> I missed that change to STL, oops! >> In that case we should standardize on STL for all new code in the future >> so that it will work on Mac. > > Me too. > > I don't understand the purpose of it - now all zone calculation (except > for insulated copper island removal) works in a *single* worker thread > (the main thread is just refreshing the progress dialog). > > It means ~3.5x slower zone refilling on a 4-core CPU. > > Can anybody comment on that? > > Tom > > >> There are already many edge cases I have found (or users have reported) >> where KiCad is extremely slow, and we need to have a good story for >> multiprocessing so that we can take advantage of it where it makes sense >> to increase performance and/or responsiveness. >> >> -Jon >> >> On Thu, Mar 1, 2018 at 8:48 AM, Jeff Young <j...@rokeby.ie >> <mailto:j...@rokeby.ie>> wrote: >> >> There’s performance and there’s responsiveness. >> >> The footprint loading and zone filling were moved to STL so that >> progress reporting would work on Mac. >> >> As long as we don’t introduce more OpenMP into core stuff, I’m not >> that fixated on what we use for raytracing. >> >> Cheers, >> Jeff. >> >> >>> On 1 Mar 2018, at 13:34, Tomasz Wlostowski >>> <tomasz.wlostow...@cern.ch <mailto:tomasz.wlostow...@cern.ch>> wrote: >>> >>> On 01/03/18 14:29, Jon Evans wrote: >>>> It is also used for zone filling and in my new eeschema connectivity >>>> code that I'm hoping to get merged soon after V5 release. >>>> >>>> I'm happy to help with research / testing of alternatives if we can't >>>> use OpenMP on Mac. >>>> >>> I'd like to hear from a *single* Apple user who designs boards of >>> sufficient complexity for the multithreading to really have an >>> impact on >>> performance. What's next, rewriting Kicad in Objective-C? >>> >>> - my 5 cents >>> >>> Tom >>> >>> >>>> Jon >>>> >>>> On Thu, Mar 1, 2018, 08:26 Wayne Stambaugh <stambau...@gmail.com >>>> <mailto:stambau...@gmail.com> >>>> <mailto:stambau...@gmail.com>> wrote: >>>> >>>> Ughh! Thank you Apple. I'm not opposed to this idea if >>>> OpenMP isn't a >>>> viable option on macos. I would like to see our macos port be >>>> on par >>>> with linux and windows ports. >>>> >>>> Wayne >>>> >>>> On 3/1/2018 8:20 AM, Bernhard Stegmaier wrote: >>>>> I did look around a bit. >>>>> Looks like OpenMP isn’t a friend of Xcode clang, because Apple >>>>> has its >>>>> own Grand Central Dispatch (libdispatch) implementation/library >>>>> doing >>>>> similar things (at first glance, didn’t look into details). >>>>> So, I guess OpenMP maybe won’t happen soon with stock toolchain >>>>> or we >>>>> would have to use non-stock toolchain (probably with all >>>>> problems that >>>>> come with that - I have seen bad things mixing compilers, etc.). >>>>> >>>>> Seems to be quite easy to convert OpenMP for loop parallelisation >>>> to GCD: >>>>> <<< >>>>> //#pragma omp parallel for >>>>> //for( signed int i = 0; i < aPolySet.OutlineCount(); ++i ) >>>>> dispatch_queue_t queue = >>>>> dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); >>>>> dispatch_apply(aPolySet.OutlineCount(), queue, ^(size_t i) >>>>> { >>>>> ... >>>>> } >>>>> ); >>>>>>>> >>>>> >>>>> I just naively replaced all of the OpenMP for loops like above >>>>> and now >>>>> 3d-Viewer uses all cores. >>>>> On my i7-3770T rendering time decreased from about 100s to 30s. >>>>> >>>>> I also did it for the ratsnest loop but didn’t notice any difference >>>>> (maybe my test PCB was just to small). >>>>> >>>>> I could play around a bit to put that stuff into some nice syntax >>>> maybe >>>>> similar to what Microsoft has with concurrency::parallel_for_each >>>>> https://msdn.microsoft.com/en-us/library/dd492857.aspx >>>>> <https://msdn.microsoft.com/en-us/library/dd492857.aspx> >>>>> So, at least ugly #ifdef around each parallel for loop could be >>>> hidden. >>>>> >>>>> Don’t get me wrong, I don’t want to add just another parallelisation >>>>> library/mechanism. >>>>> And… I guess it won’t be possible to transparently cover all the >>>> OpenMP >>>>> pragma stuff maybe needed inside for loop body or maybe other stuff >>>>> needed for GCD (e.g. when writing to variables outside for body). >>>>> >>>>> Thoughts? Would this be an option? >>>>> >>>>> Oh, yes: >>>>> I did look into using STL std::async. >>>>> Doesn’t seem to be a good idea, because it usually doesn’t seem >>>>> to use >>>>> anything like thread pools, etc. on various platforms. >>>>> You probably don’t want to create that much threads… :) >>>>> >>>>> >>>>> Regards, >>>>> Bernhard >>>>> >>>>>> On 1. Mar 2018, at 08:40, Bernhard Stegmaier >>>> <stegma...@sw-systems.de >>>> <mailto:stegma...@sw-systems.de> <mailto:stegma...@sw-systems.de >>>> <mailto:stegma...@sw-systems.de>> >>>>>> <mailto:stegma...@sw-systems.de <mailto:stegma...@sw-systems.de> >>>> <mailto:stegma...@sw-systems.de >>>> <mailto:stegma...@sw-systems.de>>>> wrote: >>>>>> >>>>>> I had a quick look where OpenMP is used. >>>>>> >>>>>> I found it somewhere in the connectivity/ratsnest code. >>>>>> I don’t know of any complaints in that area and even on my old HW I >>>>>> had never a bad experience. >>>>>> >>>>>> And then, 3D-Viewer. >>>>>> >>>>>> So, in my opinion it is basically only about 3D-Viewer… I don’t >>>>>> know >>>>>> if user experience will be that bad without OpenMP. >>>>>> IMHO it’s only the Raytracing view, which isn’t intended to be used >>>>>> for normal viewing stuff anyway. >>>>>> >>>>>> If I find some time over the weekend I will also try… but I don’t >>>>>> think it will be worth it. >>>>>> >>>>>> >>>>>> Regards, >>>>>> Bernhard >>>>>> >>>>>>> On 1. Mar 2018, at 00:50, Jeff Young <j...@rokeby.ie >>>>>>> <mailto:j...@rokeby.ie> >>>> <mailto:j...@rokeby.ie> >>>>>>> <mailto:j...@rokeby.ie <mailto:j...@rokeby.ie >>>>>>> <mailto:j...@rokeby.ie>>>> wrote: >>>>>>> >>>>>>> Or rip it out and use STL? >>>>>>> >>>>>>>> On 28 Feb 2018, at 23:38, Jon Evans <j...@craftyjon.com >>>>>>>> <mailto:j...@craftyjon.com> >>>> <mailto:j...@craftyjon.com> >>>>>>>> <mailto:j...@craftyjon.com <mailto:j...@craftyjon.com >>>>>>>> <mailto:j...@craftyjon.com>>>> wrote: >>>>>>>> >>>>>>>> Hi all, >>>>>>>> >>>>>>>> Does anyone have a working build setup for getting OpenMP-enabled >>>>>>>> KiCad out of MacOS? >>>>>>>> If so, please share how -- I tried for a bit but couldn't get it >>>>>>>> going (I'm not super familiar with the MacOS toolchain yet). >>>>>>>> >>>>>>>> We should make sure that the 5.0 release is built with OpenMP, >>>>>>>> otherwise our Mac users are going to have a slower user >>>>>>>> experience. >>>>>>>> >>>>>>>> -Jon >>>>>>>> _______________________________________________ >>>>>>>> Mailing list: 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>> >>>>>>>> <mailto: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> >>>>>>>> More help : https://help.launchpad.net/ListHelp >>>>>>>> <https://help.launchpad.net/ListHelp> >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Mailing list: 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>> >>>>>>> <mailto: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> >>>>>>> More help : https://help.launchpad.net/ListHelp >>>>>>> <https://help.launchpad.net/ListHelp> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Mailing list: 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>> >>>>>> <mailto: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> >>>>>> More help : https://help.launchpad.net/ListHelp >>>>>> <https://help.launchpad.net/ListHelp> >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Mailing list: 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> >>>>> More help : https://help.launchpad.net/ListHelp >>>>> <https://help.launchpad.net/ListHelp> >>>>> >>>> >>>> _______________________________________________ >>>> Mailing list: 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> >>>> More help : https://help.launchpad.net/ListHelp >>>> <https://help.launchpad.net/ListHelp> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Mailing list: https://launchpad.net/~kicad-developers >>>> <https://launchpad.net/~kicad-developers> >>>> Post to : kicad-developers@lists.launchpad.net >>>> <mailto:kicad-developers@lists.launchpad.net> >>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>> <https://launchpad.net/~kicad-developers> >>>> More help : https://help.launchpad.net/ListHelp >>>> <https://help.launchpad.net/ListHelp> >>>> >>> >>> >>> _______________________________________________ >>> Mailing list: https://launchpad.net/~kicad-developers >>> <https://launchpad.net/~kicad-developers> >>> Post to : kicad-developers@lists.launchpad.net >>> <mailto:kicad-developers@lists.launchpad.net> >>> Unsubscribe : https://launchpad.net/~kicad-developers >>> <https://launchpad.net/~kicad-developers> >>> More help : 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