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