Wednesday, June 05, 2019

Re: OpenMP for both clang and GCC, part II

On 6/5/19 8:37 PM, j@bitminer.ca wrote:
>
>
> On 2019-06-05 17:59, Brian Callahan wrote:
>> On 6/5/19 7:42 PM, j@bitminer.ca wrote:
>>> TLDR: Multi-core is a thing.  Let's do it the OpenMP way.  My diffs
>>> to come.
>>>
>>> I know some devs have thought about this before. I'm looking for
>>> comments
>>> or advice on how I can help this along.
>>>
>>> The clang in base (and flang in ports) currently support OpenMP
>>> directives
>>> with the -fopenmp option. They are missing the runtime.  The LLVM
>>> OpenMP
>>> runtime could be supplied as a port.
>>>
>>> The GNU C, C++ and Fortran in ports (gcc version 8.3) currently support
>>> OpenMP directives and with a small patch can add OpenMP support to
>>> their
>>> runtime libraries (gcc-libs). The two OpenMP runtimes (GCC and LLVM)
>>> can coexist this way.
>>>
>>> Example ports, compiler, build system, and status/issues:
>>>
>>> devel/boost      (base-clang gcc-ports, unique build, uncertain
>>> support)
>>> devel/cmake      (base-clang gcc-ports, simple, fails to correctly
>>> find OpenMP)
>>> graphics/lensfun (base-clang gcc-ports, cmake, unswitchable OpenMP)
>>> graphics/GraphicsMagick (base-clang gcc-ports, gnu configure, OpenMP
>>> disabled)
>>>
>>> Proposed changes:
>>> - identify ports with embedded (hidden) OpenMP support and patch to
>>> disable it
>>>    (I guess from 10 to 40 such ports aside from the 7 that turn it
>>> off now)
>>> - fix cmake (and other build systems) to detect both OpenMP
>>> implementations
>>> - add a new port devel/libomp containing the LLVM OpenMP runtime for
>>> clang/flang
>>> - patch gcc-libs package to deliver OpenMP runtime support for GNU
>>> c/c++/fortran
>>> - help port maintainers build with OpenMP flavors if they want it
>>>
>>> (I have patches for cmake, gcc-libs, and a proposed new devel/libomp
>>> package).
>>>
>>> Eventually ports maintaners will migrate to OpenMP as they can or
>>> want to.
>>> Users will adopt flavors such as -withopenmp, or -noopenmp, as they
>>> become
>>> available.
>>>
>>> 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.
>>>
>>> Does anyone have comments?  I'll be submitting diffs as I can.
>>>
>>>
>>>
>>> --John
>>>
>>
>> On LLVM OpenMP: https://marc.info/?l=openbsd-ports&m=155642976702196&w=2
>>
>> ~Brian
>
> Yes, and also I saw some of your posts to ports from a couple of years
> ago
> regarding checking for openmp use.
>
> https://marc.info/?l=openbsd-ports&m=151051634223013&w=2
>
> Did you get further that what is stated in the post?  I'm thinking math/
> and geo/ and graphics/ as the most likely.
>
> --John

Nope. I don't own a machine that could run a bulk in any reasonable
amount of time.

~Brian

No comments:

Post a Comment