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

Itaru Kitayama via Openmp-dev openmp-dev at lists.llvm.org
Sun Aug 23 19:03:45 PDT 2020


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>>>>>


More information about the Openmp-dev mailing list