[mvapich-discuss] fail to link with mvapich2-1.2p1/mvapich2-1.4rc2
Manhui Wang
wangm9 at cardiff.ac.uk
Fri Oct 9 10:43:23 EDT 2009
Hi Jonathan,
Thanks for telling me about this. I will try it. Just a quick
questions, do the tar balls ( eg. mvapich2-trunk-2009-10-08.tar.gz) at
http://mvapich.cse.ohio-state.edu/nightly/mvapich2/trunk/
contain all the source code? Or do they just contain bugfixes?
It seems no configure file exists after untarring the
mvapich2-trunk-2009-10-08.tar.gz. Or am I missing something?
Thank you.
Manhui
Jonathan Perkins wrote:
> Hi Manhui. I just wanted to let you know that we recently applied the
> patch that you've sent. Please let us know if the issue is resolved in
> our trunk.
>
> On Tue, Sep 29, 2009 at 02:42:07PM +0100, Manhui Wang wrote:
>> I made a mistake in producing the previous uploaded patches, here
>> attached is the updated one, which seems to work fine with Molpro.
>>
>> Manhui Wang wrote:
>>> Dear MVAPICH2 developers,
>>> Following last mail, I tried to see whether it is possible to
>>> make some change in Molpro. But it seems to be impossible since Molpro
>>> directly calls these functions, which are from yacc or bison libraries.
>>> This means these name conflicts with those in yacc or bison libraries. I
>>> have made two small patches(see files attached) for mvapich2, with these
>>> patches Molpro works fine with Mvapich2. I would be very appreciated if
>>> you can include these changes (probably you will consider more changes
>>> to avoid conflicting with other programs, but this works for molpro at
>>> least) in the mvapich2 development version at your earliest convenience.
>>> So I can test the updated mvapich2 before the final release.
>>>
>>> Thank you very much.
>>> Manhui
>>>
>>> Jonathan Perkins wrote:
>>>> On Thu, Sep 24, 2009 at 04:14:08PM +0100, Manhui Wang wrote:
>>>>> Dear MVAPICH2 developers,
>>>>> I tried to build Molpro (see http://www.molpro.net/) with MVAPICH2
>>>>> 1.2p1 (as well as mvapich2-1.4rc2) library, but failed. The reason is
>>>>> that both Molpro and Mvapich use some general function names. The
>>>>> source code of mvapich library (tokens.c parser.c) contains
>>>>> some yacc-like parsing code. These three
>>>>> functions(yylex yyparse yyerror) happen to have the same names as those
>>>>> in parse files of Molpro. I renamed these three function to those with a
>>>>> prefix mvapich_* in MVAPICH source code, and recompiled the mvapich2
>>>>> library. Now it works fine. Could you please slightly change these
>>>>> names to avoid potential conflict with other application program in next
>>>>> release version? Surely, Molpro could also choose other specific
>>>>> function names to avoid such problems.
>>>> Thank you for the suggestion. We'll take a look at this and have it
>>>> resolved before our final release.
>>>>
>>>>> The following is the error message:
>>>>>
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(parser.o): In
>>>>> function `yylex':
>>>>> parser.c:(.text+0xbfc): multiple definition of `yylex'
>>>>> ../lib/libmolpro.a(licence.o):parse.c:(.text+0x9ccf): first defined here
>>>>> ld: Warning: size of symbol `yylex' changed from 3091 in
>>>>> ../lib/libmolpro.a(licence.o) to 3336 in
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(parser.o)
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(tokens.o): In
>>>>> function `yyparse':
>>>>> tokens.c:(.text+0x0): multiple definition of `yyparse'
>>>>> ../lib/libmolpro.a(licence.o):parse.c:(.text+0xdb): first defined here
>>>>> ld: Warning: size of symbol `yyparse' changed from 22803 in
>>>>> ../lib/libmolpro.a(licence.o) to 3110 in
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(tokens.o)
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(tokens.o): In
>>>>> function `yyerror':
>>>>> tokens.c:(.text+0x1e5c): multiple definition of `yyerror'
>>>>> ../lib/libmolpro.a(licence.o):parse.c:(.text+0x5edd): first defined here
>>>>> ld: Warning: size of symbol `yyerror' changed from 934 in
>>>>> ../lib/libmolpro.a(licence.o) to 26 in
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(tokens.o)
>>>>> failure
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(parser.o): In
>>>>> function `yylex':
>>>>> parser.c:(.text+0xbfc): multiple definition of `yylex'
>>>>> ../lib/libmolpro.a(licence.o):parse.c:(.text+0x9ccf): first defined here
>>>>> ld: Warning: size of symbol `yylex' changed from 3091 in
>>>>> ../lib/libmolpro.a(licence.o) to 3336 in
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(parser.o)
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(tokens.o): In
>>>>> function `yyparse':
>>>>> tokens.c:(.text+0x0): multiple definition of `yyparse'
>>>>> ../lib/libmolpro.a(licence.o):parse.c:(.text+0xdb): first defined here
>>>>> ld: Warning: size of symbol `yyparse' changed from 22803 in
>>>>> ../lib/libmolpro.a(licence.o) to 3110 in
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(tokens.o)
>>>>> /home/sacmw4/soft/mvapich2-1.2p1-install/lib/libmpich.a(tokens.o): In
>>>>> function `yyerror':
>>>>> tokens.c:(.text+0x1e5c): multiple definition of `yyerror'
>>>>> ../lib/libmolpro.a(licence.o):parse.c:(.text+0x5edd): first defined here
>>>>>
>>>>> Thanks
>>>>> Manhui
>>>>>
>>>>> Yutaka Kubota wrote:
>>>>>> Dear MVAPICH2 discussion Mailing list,
>>>>>>
>>>>>> This is Yutaka Kubota from Cray Japan.
>>>>>>
>>>>>> I would like to know when will release MVAPICH2 1.4 official version. If
>>>>>> this plan was not decided, we will try to use RC2 or RC3 version. We
>>>>>> just would like to know this plan is exist or not.
>>>>>>
>>>>>> Best regards
>>>>>>
>>>>>> Yutaka Kubota
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> mvapich-discuss mailing list
>>>>>> mvapich-discuss at cse.ohio-state.edu
>>>>>> http://mail.cse.ohio-state.edu/mailman/listinfo/mvapich-discuss
>>>>> --
>>>>> -----------
>>>>> Manhui Wang
>>>>> School of Chemistry, Cardiff University,
>>>>> Main Building, Park Place,
>>>>> Cardiff CF10 3AT, UK
>>>>> Telephone: +44 (0)29208 76637
>>>>> _______________________________________________
>>>>> mvapich-discuss mailing list
>>>>> mvapich-discuss at cse.ohio-state.edu
>>>>> http://mail.cse.ohio-state.edu/mailman/listinfo/mvapich-discuss
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> mvapich-discuss mailing list
>>> mvapich-discuss at cse.ohio-state.edu
>>> http://mail.cse.ohio-state.edu/mailman/listinfo/mvapich-discuss
>> --
>> -----------
>> Manhui Wang
>> School of Chemistry, Cardiff University,
>> Main Building, Park Place,
>> Cardiff CF10 3AT, UK
>> Telephone: +44 (0)29208 76637
>
>> diff -crB mvapich2-1.4rc2-orig/src/mpid/ch3/channels/mrail/src/plpa/parser.c mvapich2-1.4rc2/src/mpid/ch3/channels/mrail/src/plpa/parser.c
>> *** mvapich2-1.4rc2-orig/src/mpid/ch3/channels/mrail/src/plpa/parser.c 2009-06-01 22:56:18.000000000 +0100
>> --- mvapich2-1.4rc2/src/mpid/ch3/channels/mrail/src/plpa/parser.c 2009-09-29 13:20:10.000000000 +0100
>> ***************
>> *** 551,557 ****
>> * easily add parameters.
>> */
>> #ifndef YY_DECL
>> ! #define YY_DECL int yylex YY_PROTO(( void ))
>> #endif
>>
>> /* Code executed at the beginning of each rule, after yytext and yyleng
>> --- 551,557 ----
>> * easily add parameters.
>> */
>> #ifndef YY_DECL
>> ! #define YY_DECL int mvapich_yylex YY_PROTO(( void ))
>> #endif
>>
>> /* Code executed at the beginning of each rule, after yytext and yyleng
>> ***************
>> *** 714,720 ****
>> /* We're scanning a new file or input source. It's
>> * possible that this happened because the user
>> * just pointed yyin at a new source and called
>> ! * yylex(). If so, then we have to assure
>> * consistency between yy_current_buffer and our
>> * globals. Here is the right place to do so, because
>> * this is the first action (other than possibly a
>> --- 714,720 ----
>> /* We're scanning a new file or input source. It's
>> * possible that this happened because the user
>> * just pointed yyin at a new source and called
>> ! * mvapich_yylex(). If so, then we have to assure
>> * consistency between yy_current_buffer and our
>> * globals. Here is the right place to do so, because
>> * this is the first action (other than possibly a
>> ***************
>> *** 827,833 ****
>> "fatal flex scanner internal error--no action found" );
>> } /* end of action switch */
>> } /* end of scanning one token */
>> ! } /* end of yylex */
>>
>>
>> /* yy_get_next_buffer - try to read in a new buffer
>> --- 827,833 ----
>> "fatal flex scanner internal error--no action found" );
>> } /* end of action switch */
>> } /* end of scanning one token */
>> ! } /* end of mvapich_yylex */
>>
>>
>> /* yy_get_next_buffer - try to read in a new buffer
>> ***************
>> *** 1574,1580 ****
>> #if YY_MAIN
>> int main()
>> {
>> ! yylex();
>> return 0;
>> }
>> #endif
>> --- 1574,1580 ----
>> #if YY_MAIN
>> int main()
>> {
>> ! mvapich_yylex();
>> return 0;
>> }
>> #endif
>> diff -crB mvapich2-1.4rc2-orig/src/mpid/ch3/channels/mrail/src/plpa/tokens.c mvapich2-1.4rc2/src/mpid/ch3/channels/mrail/src/plpa/tokens.c
>> *** mvapich2-1.4rc2-orig/src/mpid/ch3/channels/mrail/src/plpa/tokens.c 2009-06-01 22:56:18.000000000 +0100
>> --- mvapich2-1.4rc2/src/mpid/ch3/channels/mrail/src/plpa/tokens.c 2009-09-29 13:20:05.000000000 +0100
>> ***************
>> *** 113,119 ****
>> * Global functions
>> */
>> int token_parse(PLPA_NAME(cpu_set_t) *cpu_set);
>> ! void yyerror(char const *s);
>>
>> /*
>> * Local functions
>> --- 113,119 ----
>> * Global functions
>> */
>> int token_parse(PLPA_NAME(cpu_set_t) *cpu_set);
>> ! void mvapich_yyerror(char const *s);
>>
>> /*
>> * Local functions
>> ***************
>> *** 495,501 ****
>> #define YYERROR goto yyerrorlab
>>
>>
>> ! /* Like YYERROR except do call yyerror. This remains here temporarily
>> to ease the transition to the new meaning of YYERROR, for GCC.
>> Once GCC version 2 has supplanted version 1, this can go. */
>>
>> --- 495,501 ----
>> #define YYERROR goto yyerrorlab
>>
>>
>> ! /* Like YYERROR except do call mvapich_yyerror. This remains here temporarily
>> to ease the transition to the new meaning of YYERROR, for GCC.
>> Once GCC version 2 has supplanted version 1, this can go. */
>>
>> ***************
>> *** 515,521 ****
>> } \
>> else \
>> { \
>> ! yyerror ("syntax error: cannot back up");\
>> YYERROR; \
>> } \
>> while (0)
>> --- 515,521 ----
>> } \
>> else \
>> { \
>> ! mvapich_yyerror ("syntax error: cannot back up");\
>> YYERROR; \
>> } \
>> while (0)
>> ***************
>> *** 534,545 ****
>> (Current).last_column = (Rhs)[N].last_column)
>> #endif
>>
>> ! /* YYLEX -- calling `yylex' with the right arguments. */
>>
>> #ifdef YYLEX_PARAM
>> ! # define YYLEX yylex (YYLEX_PARAM)
>> #else
>> ! # define YYLEX yylex ()
>> #endif
>>
>> /* Enable debugging if requested. */
>> --- 534,545 ----
>> (Current).last_column = (Rhs)[N].last_column)
>> #endif
>>
>> ! /* YYLEX -- calling `mvapich_yylex' with the right arguments. */
>>
>> #ifdef YYLEX_PARAM
>> ! # define YYLEX mvapich_yylex (YYLEX_PARAM)
>> #else
>> ! # define YYLEX mvapich_yylex ()
>> #endif
>>
>> /* Enable debugging if requested. */
>> ***************
>> *** 787,801 ****
>>
>> #ifdef YYPARSE_PARAM
>> # if defined (__STDC__) || defined (__cplusplus)
>> ! int yyparse (void *YYPARSE_PARAM);
>> # else
>> ! int yyparse ();
>> # endif
>> #else /* ! YYPARSE_PARAM */
>> #if defined (__STDC__) || defined (__cplusplus)
>> ! int yyparse (void);
>> #else
>> ! int yyparse ();
>> #endif
>> #endif /* ! YYPARSE_PARAM */
>>
>> --- 787,801 ----
>>
>> #ifdef YYPARSE_PARAM
>> # if defined (__STDC__) || defined (__cplusplus)
>> ! int mvapich_yyparse (void *YYPARSE_PARAM);
>> # else
>> ! int mvapich_yyparse ();
>> # endif
>> #else /* ! YYPARSE_PARAM */
>> #if defined (__STDC__) || defined (__cplusplus)
>> ! int mvapich_yyparse (void);
>> #else
>> ! int mvapich_yyparse ();
>> #endif
>> #endif /* ! YYPARSE_PARAM */
>>
>> ***************
>> *** 813,835 ****
>>
>>
>> /*----------.
>> ! | yyparse. |
>> `----------*/
>>
>> #ifdef YYPARSE_PARAM
>> # if defined (__STDC__) || defined (__cplusplus)
>> ! int yyparse (void *YYPARSE_PARAM)
>> # else
>> ! int yyparse (YYPARSE_PARAM)
>> void *YYPARSE_PARAM;
>> # endif
>> #else /* ! YYPARSE_PARAM */
>> #if defined (__STDC__) || defined (__cplusplus)
>> int
>> ! yyparse (void)
>> #else
>> int
>> ! yyparse ()
>>
>> #endif
>> #endif
>> --- 813,835 ----
>>
>>
>> /*----------.
>> ! | mvapich_yyparse. |
>> `----------*/
>>
>> #ifdef YYPARSE_PARAM
>> # if defined (__STDC__) || defined (__cplusplus)
>> ! int mvapich_yyparse (void *YYPARSE_PARAM)
>> # else
>> ! int mvapich_yyparse (YYPARSE_PARAM)
>> void *YYPARSE_PARAM;
>> # endif
>> #else /* ! YYPARSE_PARAM */
>> #if defined (__STDC__) || defined (__cplusplus)
>> int
>> ! mvapich_yyparse (void)
>> #else
>> int
>> ! mvapich_yyparse ()
>>
>> #endif
>> #endif
>> ***************
>> *** 1305,1319 ****
>> yyprefix = " or ";
>> }
>> }
>> ! yyerror (yymsg);
>> YYSTACK_FREE (yymsg);
>> }
>> else
>> ! yyerror ("syntax error; also virtual memory exhausted");
>> }
>> else
>> #endif /* YYERROR_VERBOSE */
>> ! yyerror ("syntax error");
>> }
>>
>>
>> --- 1305,1319 ----
>> yyprefix = " or ";
>> }
>> }
>> ! mvapich_yyerror (yymsg);
>> YYSTACK_FREE (yymsg);
>> }
>> else
>> ! mvapich_yyerror ("syntax error; also virtual memory exhausted");
>> }
>> else
>> #endif /* YYERROR_VERBOSE */
>> ! mvapich_yyerror ("syntax error");
>> }
>>
>>
>> ***************
>> *** 1431,1437 ****
>> | yyoverflowlab -- parser overflow comes here. |
>> `----------------------------------------------*/
>> yyoverflowlab:
>> ! yyerror ("parser stack overflow");
>> yyresult = 2;
>> /* Fall through. */
>> #endif
>> --- 1431,1437 ----
>> | yyoverflowlab -- parser overflow comes here. |
>> `----------------------------------------------*/
>> yyoverflowlab:
>> ! mvapich_yyerror ("parser stack overflow");
>> yyresult = 2;
>> /* Fall through. */
>> #endif
>> ***************
>> *** 1454,1467 ****
>>
>> PLPA_CPU_ZERO(cpu_set);
>> return_value = cpu_set;
>> ! ret = yyparse();
>> if (0 != ret) {
>> return ret;
>> }
>> return 0;
>> }
>>
>> ! void yyerror (char const *s)
>> {
>> fprintf(stderr, "ERROR: %s\n", s);
>> }
>> --- 1454,1467 ----
>>
>> PLPA_CPU_ZERO(cpu_set);
>> return_value = cpu_set;
>> ! ret = mvapich_yyparse();
>> if (0 != ret) {
>> return ret;
>> }
>> return 0;
>> }
>>
>> ! void mvapich_yyerror (char const *s)
>> {
>> fprintf(stderr, "ERROR: %s\n", s);
>> }
>
>
--
-----------
Manhui Wang
School of Chemistry, Cardiff University,
Main Building, Park Place,
Cardiff CF10 3AT, UK
Telephone: +44 (0)29208 76637
More information about the mvapich-discuss
mailing list