OK, I’ll play around some more with GCD. I’ll also check what a custom toolchain/compiler would mean.
We can decide then which way to finally go when more parallelisation stuff might be added in future. Bernhard > On 1. Mar 2018, at 14:25, Wayne Stambaugh <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 >> 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>>> 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>>> 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>>> 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>> >>>>> 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