[petsc-users] Problem in some macro when using VS+intel cl
Barry Smith
bsmith at petsc.dev
Tue Jun 27 21:24:38 CDT 2023
The macros expand differently depending on the compiler being used. In this case
#if defined(PETSC_HAVE_BUILTIN_EXPECT)
#define PetscUnlikely(cond) __builtin_expect(!!(cond), 0)
#define PetscLikely(cond) __builtin_expect(!!(cond), 1)
#else
#define PetscUnlikely(cond) (cond)
#define PetscLikely(cond) (cond)
#endif
So with Microsoft Windows compilers, if they do not support built_inexpect the compiler will only see the #else for the macro thus the compiler would never see the __builtin_expect
You can check in $PETSC_DIR/$PETSC_ARCH/include/petscconf.h and see if PETSC_HAVE_BUILTIN_EXPECT is defined. ./configure determines if this (and many other) features are supported by the compiler. It is conceivable that somehow configure determined incorrectly that this is supported.
> On Jun 27, 2023, at 10:09 PM, 冯上玮 <fengshw3 at mail2.sysu.edu.cn> wrote:
>
> I've followed your advice and include the header's file and libraries in Visual Studio. Such "error" still shows but I can build the project! It's strange!
> I expand the CHKERRQ macro and find the error actually locates at
>
> <2F07716E at 673DAE5F.6C969B6400000000.bmp>
>
> What I know from google is that the "__builtin_expect__" is defined in GCC, so is it unsolvable in Windows with visual studio C compiler or Inter C compiler?
> ------------------ Original ------------------
> From: "Matthew Knepley"<knepley at gmail.com>;
> Date: Wed, Jun 28, 2023 01:59 AM
> To: "冯上玮"<fengshw3 at mail2.sysu.edu.cn>;
> Cc: "petsc-users"<petsc-users at mcs.anl.gov>;
> Subject: Re: [petsc-users] Problem in some macro when using VS+intel cl
>
> On Tue, Jun 27, 2023 at 11:32 AM 冯上玮 <fengshw3 at mail2.sysu.edu.cn <mailto:fengshw3 at mail2.sysu.edu.cn>> wrote:
>> Hi,
>>
>> After failure with MS-MPI once and once again, I tried icl+oneAPI and succeeded in installing and testing PESTc in Cygwin!
>>
>> However, (always however) when I copied the example code on Getting Started page on visual studio, there are tons of error like:
>> <CCB1C477 at 3FC4424F.6C969B6400000000.jpg>
>> I just wonder where the problem locates, I've googled this error message and it seems that it's induced by the difference of compilers, c.f. https://stackoverflow.com/questions/42136395/identifier-builtin-expect-is-undefined-during-ros-on-win-tutorial-talker-ex. But Intel says that they also provide such thing on icl, and I actually use this compiler instead of visual studio cl...
>
> The IDE is not showing the actual error message. Are you sure that your IDE build has the right includes and libraries? You can
> get these using
>
> cd $PETSC_DIR
> make getincludedirs
> make getlinklibs
>
> Thanks,
>
> Matt
>
>> Anyway, the project could be built if I delete these error-checking macro.
>>
>> Installing feedback (or as a test result):
>> When configure on windows, only icl + impi works, and in this case, both --with-cc and --with-cxx options need to point out the version like: --with-cc-std-c99 and --with-cxx-std-c++'ver'. Other combinations such as cl + impi, icl + msmpi, cl + msmpi never work. My tutor told me that older version of msmpi may work but I never try this.
>>
>> FENG.
>
>
> --
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> -- Norbert Wiener
>
> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230627/0f73b8fe/attachment.html>
More information about the petsc-users
mailing list