[Openmp-dev] Math symbols are not found during configuration

Itaru Kitayama via Openmp-dev openmp-dev at lists.llvm.org
Tue Aug 25 16:12:41 PDT 2020


Johannes, all,
Thanks a lot for the info, I'll go through them as I had carried my
local patches (defines) until
recently so I'd like to make sure it's okay to remove them.

On Tue, Aug 25, 2020 at 11:59 PM Johannes Doerfert
<johannesdoerfert at gmail.com> wrote:
>
> Hi Itaru,
>
>
> There is no single commit but multiple ones:
> https://reviews.llvm.org/search/query/4ShuIJ3MeShg/#R
>
> I guess the first commit which shows how it is done now was:
> https://reviews.llvm.org/D75788
>
> While not all edges are completely smoothed out, I am not aware of any
> major problem, so no more workarounds.
>
>
> Let me know what you think :)
>
> ~ Johannes
>
>
> P.S. I'm waiting for people to review the complex math function support
> now ;)
>
>
> On 8/23/20 9:03 PM, Itaru Kitayama via Openmp-dev wrote:
> > Johannes, all,
> >
> > Would you point me to the fix which gets in the trunk? Or perhaps a review ID?
> > I am removing the workaround you suggested to add when using the
> > previous Clang releases
> > as they don't seem to be required any longer now.
> >
> > Itaru.
> >
> >
> > On Fri, Jul 26, 2019 at 8:30 PM Doerfert, Johannes <jdoerfert at anl.gov> wrote:
> >> You can copy the appropriate declaration for "double_t" and guard it by NVPTX.
> >> The definition of "double_t", if you need all the cases, is in math.h.
> >> If you just need the common case, sth. like
> >> #ifdef _NVPTX_
> >> typedef float float_t;
> >> typedef double double_t;
> >> #endif
> >> should suffice.
> >> It works the same way for other defines/typedefs/declarations in math.h that are not provided by Clang-cuda.
> >>
> >> ________________________________________
> >> From: Itaru Kitayama <itaru.kitayama at gmail.com>
> >> Sent: Friday, July 26, 2019 00:57
> >> To: Doerfert, Johannes
> >> Cc: openmp-dev at lists.llvm.org
> >> Subject: Re: [Openmp-dev] Math symbols are not found during configuration
> >>
> >> Johannes,
> >> This piece of code does not compile either (tested with Clang 10):
> >>
> >> #include <cmath>
> >>
> >> int main() {
> >>          double_t d = 0.1;
> >> }
> >>
> >> There are many implementation .cpp files for my work that depend on the inclusion of the cmath header file.
> >> What do I do for this case?
> >>
> >>
> >> On Thu, Jul 25, 2019 at 9:23 PM Doerfert, Johannes <jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>> wrote:
> >> That is unfortunately not what I was looking for.
> >>
> >> Do you have a single source file, preferably small, which showcases the problem?
> >>
> >>
> >> ________________________________________
> >> From: Itaru Kitayama <itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com>>
> >> Sent: Thursday, July 25, 2019 07:19
> >> To: Doerfert, Johannes
> >> Cc: openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>
> >> Subject: Re: [Openmp-dev] Math symbols are not found during configuration
> >>
> >> $ git clone https://github.com/nest/nest-simulator
> >> $ cmake -DCMAKE_TOOLCHAIN_FILE=Platform/JURON_Clang -DCMAKE_INSTALL_PREFIX=/tmp/nest-clang-offload -Dwith-gsl=OFF -Dwith-openmp=ON -Dwith-mpi=OFF -Dwith-python=OFF -Dwith-offload=ON /path/to/nest-simulator
> >>
> >> On Thu, Jul 25, 2019 at 8:49 PM Doerfert, Johannes <jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>> wrote:
> >> Can you share an example of your problem?
> >>
> >>
> >> ________________________________________
> >> From: Itaru Kitayama <itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com>>>
> >> Sent: Thursday, July 25, 2019 06:00
> >> To: Doerfert, Johannes
> >> Cc: Jeff Hammond; openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>
> >> Subject: Re: [Openmp-dev] Math symbols are not found during configuration
> >>
> >> The host code is affected with Clang 9 at this moment. I was originally reporting the host code can not be compiled with -fopemp-targets.
> >>
> >> On Thu, Jul 25, 2019 at 19:50 Doerfert, Johannes <jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>>> wrote:
> >> Now, and in future releases, host code should not be impacted.
> >>
> >> ________________________________________
> >> From: Itaru Kitayama <itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com>><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com>>>>
> >> Sent: Thursday, July 25, 2019 05:28
> >> To: Doerfert, Johannes
> >> Cc: Jeff Hammond; openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>>
> >> Subject: Re: [Openmp-dev] Math symbols are not found during configuration
> >>
> >> In future releases, is NAN supported at least in host code? It's scattered everywhere in the codebase I am currently working.
> >>
> >> On Thu, Jul 25, 2019 at 12:13 PM Doerfert, Johannes <jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>>>> wrote:
> >> You are correct, there is a regression but also a major improvement:
> >>
> >> Clang 8.0: M_PI  works in host code and NVPTX-device code
> >> Clang 8.0: std::sin etc. works in host code but not NVPTX-device code
> >> Clang 9.0: M_PI works in host code but not in NVPTX-device code
> >> Clang 9.0: std::sin etc. works in host code and NVPTX-device code
> >>
> >> So we basically traded in system math declarations that had a valid implementation
> >> for NVPTX-devices, thus no vector intrinsics, inline assembly etc., for specialized math
> >> declarations that are distributed with Clang CUDA (as builtin math functions).
> >>
> >> I hope this does not cause too much trouble for you and you can benefit from the
> >> additional support. Know that we are working to get both up and running.
> >>
> >> Does this help?
> >>
> >> ________________________________________
> >> From: Itaru Kitayama <itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com>><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com>>><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com>><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com><mailto:itaru.kitayama at gmail.com<mailto:itaru.kitayama at gmail.com>>>>>
> >> Sent: Wednesday, July 24, 2019 19:47
> >> To: Doerfert, Johannes
> >> Cc: Jeff Hammond; openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>>>
> >> Subject: Re: [Openmp-dev] Math symbols are not found during configuration
> >>
> >> Johannes,
> >> Clang 8.0.0 works without making modifications to the source code, thus I am confused as to
> >> what needs to be done.
> >>
> >> On Thu, Jul 25, 2019 at 5:32 AM Doerfert, Johannes <jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>>>>> wrote:
> >> #define works, the preprocessor works.
> >>
> >> When the target region is compiled we do not include math.h. This will
> >> change once we get support for variants. Till then, it is either no math
> >> functions or only he ones Clang CUDA provides automatically, which seems
> >> not to include these defines, maybe because they are not ISO C but POSIX
> >> extensions.
> >>
> >>
> >> On 07/24, Jeff Hammond wrote:
> >>> How does #define not act on the full source code? How is that a compliant implementation of the preprocessor?
> >>>
> >>> Jeff
> >>>
> >>>> On Jul 24, 2019, at 12:25 PM, Doerfert, Johannes via Openmp-dev <openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>>>>> wrote:
> >>>>
> >>>> Hi Itaru,
> >>>>
> >>>> For now, you need to define them yourself when you need them in the target region.
> >>>> We are working on a permanent solution.
> >>>>
> >>>> Thanks,
> >>>>   Johannes
> >>>>
> >>>> ________________________________________
> >>>> From: Openmp-dev <openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org>><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org>>><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org>><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org>>>><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org>><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org>>><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org>><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org><mailto:openmp-dev-bounces at lists.llvm.org<mailto:openmp-dev-bounces at lists.llvm.org>>>>>> on behalf of Itaru Kitayama via Openmp-dev <openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>>>>>
> >>>> Sent: Tuesday, July 23, 2019 22:58
> >>>> To: openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org><mailto:openmp-dev at lists.llvm.org<mailto:openmp-dev at lists.llvm.org>>>>>
> >>>> Subject: [Openmp-dev] Math symbols are not found during configuration
> >>>>
> >>>> Hi,
> >>>> Adding the flag -fopenmp-targets=nvptx64 makes math symbols M_E and M_PI defined in cmath not detected during the execution of CMake. How do I work around this? I am using the latest trunk Clang at this moment, and without the above flag, both symbols are detected properly.
> >>>>
> >>>> Thanks,
> >>>> Itaru.
> >>>> _______________________________________________
> >>>> Openmp-dev mailing list
> >>>> Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org>><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org>>><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org>><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org>>>><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org>><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org>>><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org>><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org><mailto:Openmp-dev at lists.llvm.org<mailto:Openmp-dev at lists.llvm.org>>>>>
> >>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev
> >> --
> >>
> >> Johannes Doerfert
> >> Researcher
> >>
> >> Argonne National Laboratory
> >> Lemont, IL 60439, USA
> >>
> >> jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov><mailto:jdoerfert at anl.gov<mailto:jdoerfert at anl.gov>>>>>
> > _______________________________________________
> > Openmp-dev mailing list
> > Openmp-dev at lists.llvm.org
> > https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev
>


More information about the Openmp-dev mailing list