On 2019-06-06 08:04, Stuart Henderson wrote:
> On 2019/06/05 16:42, j@bitminer.ca wrote:
>> Users will adopt flavors such as -withopenmp, or -noopenmp, as they
>> become
>> available.
>
> Flavours are often a bad idea, testing becomes more complicated,
> especially for ports which are part of chains of dependencies. I think
> they should probably be avoided for this.
That would be good advice for future changes to existing ports.
>
>> Some issues and questions:
>>
>> - this will work for amd64, but will it work for arm64, sparc? Others?
>> - should the flavors be -withopenmp or -noopenmp?
>> - how to successfully detect 90% or more of ports with hidden OpenMP
>> support?
>> I will do this and am looking for advice on how best to approach it.
>> Any pre-existing info would be very welcome.
>
> It would be helpful to see examples of what sort of improvement can be
> expected on OpenBSD before deciding if it's worth the trouble to
> integrate
> into ports (which is an ongoing thing, not just one-off work).
My own motivation is not ports but specifically clang/flang and gcc with
OpenMP enabled. And maybe Octave. Initially I started to suggest a
general
implementation, thinking this wasn't too hard to also update a few
packages....oops.
Improvement would be measured how? By number of supporting ports, or
number of frequently used numerically intensive ports (such as audio,
video,
or math tools)? I'd rather not judge and just try to give users
options.
Forcing OpenMP disabled on most ports is obeying the principle of least
surprise. Ongoing work would be selectively enabling it. And
documenting
how to control the number of threads.
The list of ports explicitly disabling openmp, and consumers of their
shared
libraries is a little surprising (emacs anyone?). Here is the list,
approximately, to one level deep:
sqlite> select w.fullpkgpath, w.value, s.fullpkgpath as src
...> from wantlib w, shared_libs s
...> where s.libname = w.value
...> and w.value in (
...> select libname from shared_libs where fullpkgpath in (
...> select fullpkgpath from configureargs where value like
'%openmp%'
...> and not value like '%openmpt%' )
...> )
...> ;
FullPkgPath|Value|src
comms/xastir|GraphicsMagick|graphics/GraphicsMagick
databases/virtuoso|MagickCore-6.Q16|graphics/ImageMagick
databases/virtuoso|MagickWand-6.Q16|graphics/ImageMagick
editors/emacs|MagickCore-6.Q16|graphics/ImageMagick
editors/emacs,gtk3|MagickCore-6.Q16|graphics/ImageMagick
editors/emacs|MagickWand-6.Q16|graphics/ImageMagick
editors/emacs,gtk3|MagickWand-6.Q16|graphics/ImageMagick
editors/emacs,gtk2|MagickCore-6.Q16|graphics/ImageMagick
editors/emacs,gtk2|MagickWand-6.Q16|graphics/ImageMagick
emulators/mgba,-qt|MagickCore-6.Q16|graphics/ImageMagick
emulators/mgba,-qt|MagickWand-6.Q16|graphics/ImageMagick
emulators/mgba|MagickCore-6.Q16|graphics/ImageMagick
emulators/mgba,-main|MagickCore-6.Q16|graphics/ImageMagick
emulators/mgba|MagickWand-6.Q16|graphics/ImageMagick
emulators/mgba,-main|MagickWand-6.Q16|graphics/ImageMagick
graphics/darktable|GraphicsMagick|graphics/GraphicsMagick
graphics/digikam|Magick++-6.Q16|graphics/ImageMagick
graphics/digikam-kde4,-kipi|MagickCore-6.Q16|graphics/ImageMagick
graphics/dmtx-utils|MagickCore-6.Q16|graphics/ImageMagick
graphics/dmtx-utils|MagickWand-6.Q16|graphics/ImageMagick
graphics/inkscape|Magick++-6.Q16|graphics/ImageMagick
graphics/inkscape|MagickCore-6.Q16|graphics/ImageMagick
graphics/inkscape|MagickWand-6.Q16|graphics/ImageMagick
graphics/pdf2djvu|GraphicsMagick|graphics/GraphicsMagick
graphics/pdf2djvu|GraphicsMagick++|graphics/GraphicsMagick
graphics/pecl-imagick,php71|MagickCore-6.Q16|graphics/ImageMagick
graphics/pecl-imagick,php71|MagickWand-6.Q16|graphics/ImageMagick
graphics/pecl-imagick,php72|MagickCore-6.Q16|graphics/ImageMagick
graphics/pecl-imagick,php72|MagickWand-6.Q16|graphics/ImageMagick
graphics/pecl-imagick,php73|MagickCore-6.Q16|graphics/ImageMagick
graphics/pecl-imagick,php73|MagickWand-6.Q16|graphics/ImageMagick
graphics/ruby-rmagick,ruby25|MagickCore-6.Q16|graphics/ImageMagick
graphics/ruby-rmagick,ruby25|MagickWand-6.Q16|graphics/ImageMagick
graphics/ruby-rmagick,ruby26|MagickCore-6.Q16|graphics/ImageMagick
graphics/ruby-rmagick,ruby26|MagickWand-6.Q16|graphics/ImageMagick
graphics/sk1|MagickCore-6.Q16|graphics/ImageMagick
graphics/sk1|MagickWand-6.Q16|graphics/ImageMagick
graphics/zbar|MagickCore-6.Q16|graphics/ImageMagick
graphics/zbar|MagickWand-6.Q16|graphics/ImageMagick
math/octave|GraphicsMagick|graphics/GraphicsMagick
math/octave|GraphicsMagick++|graphics/GraphicsMagick
multimedia/dvdauthor|MagickCore-6.Q16|graphics/ImageMagick
multimedia/imagination|sox|audio/sox
multimedia/mlt|sox|audio/sox
multimedia/mlt,-main|sox|audio/sox
multimedia/mlt,,-main|sox|audio/sox
multimedia/synfig|Magick++-6.Q16|graphics/ImageMagick
multimedia/synfig|MagickCore-6.Q16|graphics/ImageMagick
multimedia/synfig|MagickWand-6.Q16|graphics/ImageMagick
multimedia/synfigstudio|Magick++-6.Q16|graphics/ImageMagick
multimedia/synfigstudio|MagickCore-6.Q16|graphics/ImageMagick
multimedia/synfigstudio|MagickWand-6.Q16|graphics/ImageMagick
net/librsync|b2|security/libb2
net/spectrum|Magick++-6.Q16|graphics/ImageMagick
sysutils/borgbackup|b2|security/libb2
sysutils/burp/2.0|b2|security/libb2
sysutils/burp/2.1|b2|security/libb2
sysutils/burp/2.2|b2|security/libb2
No comments:
Post a Comment