Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|

Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

crakarjax
I am compiling from source using icc/icpc/mkl 10.1 on a CentOS 4.8 install.  After lurking here a while and drudging through some issues, I get the following compile time error:

icpc -c -I/usr/local/include/ -I/usr/local/include -I/usr/include/freetype2 -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -DHAVE_CONFIG_H -mieee-fp  -w -O2 -xW -mieee-fp -I/usr/local/include/ -I/usr/include/freetype2 int64NDArray.cc -o pic/int64NDArray.o
oct-inttypes.h(1052): error: more than one instance of overloaded function "octave_int_cmp_op::mop" matches the argument list:
            function template "bool octave_int_cmp_op::mop<xop,T>(T, double)"
            function template "bool octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
            argument types are: (int64_t, const double)
  OCTAVE_INT_DOUBLE_CMP_OP (!=, ne)
  ^
          detected during:
            instantiation of "bool operator!=(const octave_int<T> &, const double &) [with T=int64_t={long long}]" at line 57 of "intNDArray.cc"
            instantiation of "bool intNDArray<T>::any_element_not_one_or_zero() const [with T=octave_int64]" at line 32 of "int64NDArray.cc"

compilation aborted for int64NDArray.cc (code 2)



My configure line looks like this:
./configure --enable-shared --disable-static
--with-blas='-L$MKLPATH -lmkl -lpthread'
--with-lapack='-lmkl_lapack'
LIBS="-L$MKLPATH $MKLPATH/libmkl_solver.a -Wl,--start-group -lm -lmkl_intel -lmkl_intel_thread -lmkl_core -Wl,--end-group -liomp5 -lpthread"
--disable-extra-warning-flags
F77=ifort FFLAGS="-O3 -xW"
CC=icc CFLAGS="-O2 -xW -mieee-fp -I/usr/local/include/"
CXX=icpc CXXFLAGS="-w -O2 -xW -mieee-fp -I/usr/local/include/"
CPP="icc -E" CPPFLAGS="-I$MKLROOT/include/fftw -I/usr/local/include/" CXXPP="icpc -E"
LDFLAGS=-L/usr/local/lib/

Broke it up for clarity.  Any idea as to why I get this error?  

Another thing to ponder, how can I make octave recognize intel's fftw implementation?  Thanks in advance!
~Russell

_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

Jaroslav Hajek-2
On Mon, Aug 16, 2010 at 10:43 PM, RUSS BRENNAN <[hidden email]> wrote:

> I am compiling from source using icc/icpc/mkl 10.1 on a CentOS 4.8 install.
> After lurking here a while and drudging through some issues, I get the
> following compile time error:
>
> icpc -c -I/usr/local/include/ -I/usr/local/include -I/usr/include/freetype2
> -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -DHAVE_CONFIG_H
> -mieee-fp  -w -O2 -xW -mieee-fp -I/usr/local/include/
> -I/usr/include/freetype2 int64NDArray.cc -o pic/int64NDArray.o
> oct-inttypes.h(1052): error: more than one instance of overloaded function
> "octave_int_cmp_op::mop" matches the argument list:
>             function template "bool octave_int_cmp_op::mop<xop,T>(T,
> double)"
>             function template "bool
> octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
>             argument types are: (int64_t, const double)
>   OCTAVE_INT_DOUBLE_CMP_OP (!=, ne)
>   ^
>           detected during:
>             instantiation of "bool operator!=(const octave_int<T> &, const
> double &) [with T=int64_t={long long}]" at line 57 of "intNDArray.cc"
>             instantiation of "bool
> intNDArray<T>::any_element_not_one_or_zero() const [with T=octave_int64]" at
> line 32 of "int64NDArray.cc"
>
> compilation aborted for int64NDArray.cc (code 2)
>
>
>
> My configure line looks like this:
> ./configure --enable-shared --disable-static
> --with-blas='-L$MKLPATH -lmkl -lpthread'
> --with-lapack='-lmkl_lapack'
> LIBS="-L$MKLPATH $MKLPATH/libmkl_solver.a -Wl,--start-group -lm -lmkl_intel
> -lmkl_intel_thread -lmkl_core -Wl,--end-group -liomp5 -lpthread"
> --disable-extra-warning-flags
> F77=ifort FFLAGS="-O3 -xW"
> CC=icc CFLAGS="-O2 -xW -mieee-fp -I/usr/local/include/"
> CXX=icpc CXXFLAGS="-w -O2 -xW -mieee-fp -I/usr/local/include/"
> CPP="icc -E" CPPFLAGS="-I$MKLROOT/include/fftw -I/usr/local/include/"
> CXXPP="icpc -E"
> LDFLAGS=-L/usr/local/lib/
>
> Broke it up for clarity.  Any idea as to why I get this error?
>

IIRC this is a bug in Intel C++ that has been subsequently fixed.
What's your exact Intel C++ version? It's fixed in 11.0.074, but I
think it was already fixed in 10.1.008.


> Another thing to ponder, how can I make octave recognize intel's fftw
> implementation?

No idea, but if the interface is compatible, Octave can't really tell
the difference.

--
RNDr. Jaroslav Hajek, PhD
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz

_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

crakarjax
I'm using 10.1.022,  but I will see what happens if I upgrade.

> Date: Wed, 18 Aug 2010 08:27:36 +0200
> Subject: Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
>
> On Mon, Aug 16, 2010 at 10:43 PM, RUSS BRENNAN <[hidden email]> wrote:
> > I am compiling from source using icc/icpc/mkl 10.1 on a CentOS 4.8 install.
> > After lurking here a while and drudging through some issues, I get the
> > following compile time error:
> >
> > icpc -c -I/usr/local/include/ -I/usr/local/include -I/usr/include/freetype2
> > -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -DHAVE_CONFIG_H
> > -mieee-fp  -w -O2 -xW -mieee-fp -I/usr/local/include/
> > -I/usr/include/freetype2 int64NDArray.cc -o pic/int64NDArray.o
> > oct-inttypes.h(1052): error: more than one instance of overloaded function
> > "octave_int_cmp_op::mop" matches the argument list:
> >             function template "bool octave_int_cmp_op::mop<xop,T>(T,
> > double)"
> >             function template "bool
> > octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
> >             argument types are: (int64_t, const double)
> >   OCTAVE_INT_DOUBLE_CMP_OP (!=, ne)
> >   ^
> >           detected during:
> >             instantiation of "bool operator!=(const octave_int<T> &, const
> > double &) [with T=int64_t={long long}]" at line 57 of "intNDArray.cc"
> >             instantiation of "bool
> > intNDArray<T>::any_element_not_one_or_zero() const [with T=octave_int64]" at
> > line 32 of "int64NDArray.cc"
> >
> > compilation aborted for int64NDArray.cc (code 2)
> >
> >
> >
> > My configure line looks like this:
> > ./configure --enable-shared --disable-static
> > --with-blas='-L$MKLPATH -lmkl -lpthread'
> > --with-lapack='-lmkl_lapack'
> > LIBS="-L$MKLPATH $MKLPATH/libmkl_solver.a -Wl,--start-group -lm -lmkl_intel
> > -lmkl_intel_thread -lmkl_core -Wl,--end-group -liomp5 -lpthread"
> > --disable-extra-warning-flags
> > F77=ifort FFLAGS="-O3 -xW"
> > CC=icc CFLAGS="-O2 -xW -mieee-fp -I/usr/local/include/"
> > CXX=icpc CXXFLAGS="-w -O2 -xW -mieee-fp -I/usr/local/include/"
> > CPP="icc -E" CPPFLAGS="-I$MKLROOT/include/fftw -I/usr/local/include/"
> > CXXPP="icpc -E"
> > LDFLAGS=-L/usr/local/lib/
> >
> > Broke it up for clarity.  Any idea as to why I get this error?
> >
>
> IIRC this is a bug in Intel C++ that has been subsequently fixed.
> What's your exact Intel C++ version? It's fixed in 11.0.074, but I
> think it was already fixed in 10.1.008.
>
>
> > Another thing to ponder, how can I make octave recognize intel's fftw
> > implementation?
>
> No idea, but if the interface is compatible, Octave can't really tell
> the difference.
>
> --
> RNDr. Jaroslav Hajek, PhD
> computing expert & GNU Octave developer
> Aeronautical Research and Test Institute (VZLU)
> Prague, Czech Republic
> url: www.highegg.matfyz.cz

_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

crakarjax
I recompiled all of my source with version 11.0.081 of the intel compiler and I still get the same error.  Here's an updated printout of the error:

icpc -c -I/opt/intel/Compiler/11.0/081/mkl/include/fftw -I/usr/local/include/ -I/usr/local/include -I/usr/include/freetype2 -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -DHAVE_CONFIG_H -mieee-fp  -w -O2 -xW -mieee-fp -I/usr/local/include/ -I/usr/include/freetype2 int64NDArray.cc -o pic/int64NDArray.o
oct-inttypes.h(1052): error: more than one instance of overloaded function "octave_int_cmp_op::mop" matches the argument list:
            function template "bool octave_int_cmp_op::mop<xop,T>(T, double)"
            function template "bool octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
            argument types are: (int64_t, const double)
  OCTAVE_INT_DOUBLE_CMP_OP (!=, ne)
  ^
          detected during:
            instantiation of "bool operator!=(const octave_int<T> &, const double &) [with T=int64_t={long long}]" at line 57 of "intNDArray.cc"
            instantiation of "bool intNDArray<T>::any_element_not_one_or_zero() const [with T=octave_int64]" at line 32 of "int64NDArray.cc"



Has anyone seen anything similar to this?  I don't really know how to go about resolving this compile error, I haven't seen anything like it before and google is not of much help.  It seems that anyone building 3.2.3 with the intel compile should have seen this, since the relevant code is all part of the octave basline and not it's dependancies...


From: [hidden email]
To: [hidden email]
Subject: RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
Date: Wed, 18 Aug 2010 11:54:02 -0500
CC: [hidden email]

I'm using 10.1.022,  but I will see what happens if I upgrade.

> Date: Wed, 18 Aug 2010 08:27:36 +0200
> Subject: Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
>
> On Mon, Aug 16, 2010 at 10:43 PM, RUSS BRENNAN <[hidden email]> wrote:
> > I am compiling from source using icc/icpc/mkl 10.1 on a CentOS 4.8 install.
> > After lurking here a while and drudging through some issues, I get the
> > following compile time error:
> >
> > icpc -c -I/usr/local/include/ -I/usr/local/include -I/usr/include/freetype2
> > -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -DHAVE_CONFIG_H
> > -mieee-fp  -w -O2 -xW -mieee-fp -I/usr/local/include/
> > -I/usr/include/freetype2 int64NDArray.cc -o pic/int64NDArray.o
> > oct-inttypes.h(1052): error: more than one instance of overloaded function
> > "octave_int_cmp_op::mop" matches the argument list:
> >             function template "bool octave_int_cmp_op::mop<xop,T>(T,
> > double)"
> >             function template "bool
> > octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
> >             argument types are: (int64_t, const double)
> >   OCTAVE_INT_DOUBLE_CMP_OP (!=, ne)
> >   ^
> >           detected during:
> >             instantiation of "bool operator!=(const octave_int<T> &, const
> > double &) [with T=int64_t={long long}]" at line 57 of "intNDArray.cc"
> >             instantiation of "bool
> > intNDArray<T>::any_element_not_one_or_zero() const [with T=octave_int64]" at
> > line 32 of "int64NDArray.cc"
> >
> > compilation aborted for int64NDArray.cc (code 2)
> >
> >
> >
> > My configure line looks like this:
> > ./configure --enable-shared --disable-static
> > --with-blas='-L$MKLPATH -lmkl -lpthread'
> > --with-lapack='-lmkl_lapack'
> > LIBS="-L$MKLPATH $MKLPATH/libmkl_solver.a -Wl,--start-group -lm -lmkl_intel
> > -lmkl_intel_thread -lmkl_core -Wl,--end-group -liomp5 -lpthread"
> > --disable-extra-warning-flags
> > F77=ifort FFLAGS="-O3 -xW"
> > CC=icc CFLAGS="-O2 -xW -mieee-fp -I/usr/local/include/"
> > CXX=icpc CXXFLAGS="-w -O2 -xW -mieee-fp -I/usr/local/include/"
> > CPP="icc -E" CPPFLAGS="-I$MKLROOT/include/fftw -I/usr/local/include/"
> > CXXPP="icpc -E"
> > LDFLAGS=-L/usr/local/lib/
> >
> > Broke it up for clarity.  Any idea as to why I get this error?
> >
>
> IIRC this is a bug in Intel C++ that has been subsequently fixed.
> What's your exact Intel C++ version? It's fixed in 11.0.074, but I
> think it was already fixed in 10.1.008.
>
>
> > Another thing to ponder, how can I make octave recognize intel's fftw
> > implementation?
>
> No idea, but if the interface is compatible, Octave can't really tell
> the difference.
>
> --
> RNDr. Jaroslav Hajek, PhD
> computing expert & GNU Octave developer
> Aeronautical Research and Test Institute (VZLU)
> Prague, Czech Republic
> url: www.highegg.matfyz.cz

_______________________________________________ Help-octave mailing list [hidden email] https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

crakarjax
Ok I looked into this a bit more and I think I understand the problem.  Around line 57 of intNDArray.cc,  we have

template <class T>
bool
intNDArray<T>::any_element_not_one_or_zero (void) const {
  octave_idx_type nel = this->nelem ();
  for (octave_idx_type i = 0; i < nel; i++)
    {
      T val = this->elem (i);
      if (val != 0.0 && val != 1.0)
        return true;
    }
  return false;
}

While the declaration of the != operator matches:

            function template "bool octave_int_cmp_op::mop<xop,T>(T, double)"
            function template "bool octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"

Which means that if in the case that T=int64_t, the two declarations are the same, which would obviously cause some compiler issues. I must admit that I cannot determine where the second one-arg function template is coming from, it seems that all octave_int_cmp_op methods take two args, and perhaps this is the real root of the problem.

Can anyone advise on the correct way to patch this?  I'm not sure why noone else's compiler is catching this but it does appear to be a real issue.  For reference I am compiling on a 32-bit CentOS 4.8 install with Intel comilers and MKL 11.0.081.

Playing around with this, I can get it to compile if I cast in this manner:
if ((long long)val != 0.0 && (long long)val != 1.0)

Although I don't feel that this is a particularly correct solution.

Thanks for any help!


From: [hidden email]
To: [hidden email]
Subject: RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
Date: Thu, 19 Aug 2010 15:04:58 -0500

I recompiled all of my source with version 11.0.081 of the intel compiler and I still get the same error.  Here's an updated printout of the error:

icpc -c -I/opt/intel/Compiler/11.0/081/mkl/include/fftw -I/usr/local/include/ -I/usr/local/include -I/usr/include/freetype2 -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -DHAVE_CONFIG_H -mieee-fp  -w -O2 -xW -mieee-fp -I/usr/local/include/ -I/usr/include/freetype2 int64NDArray.cc -o pic/int64NDArray.o
oct-inttypes.h(1052): error: more than one instance of overloaded function "octave_int_cmp_op::mop" matches the argument list:
            function template "bool octave_int_cmp_op::mop<xop,T>(T, double)"
            function template "bool octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
            argument types are: (int64_t, const double)
  OCTAVE_INT_DOUBLE_CMP_OP (!=, ne)
  ^
          detected during:
            instantiation of "bool operator!=(const octave_int<T> &, const double &) [with T=int64_t={long long}]" at line 57 of "intNDArray.cc"
            instantiation of "bool intNDArray<T>::any_element_not_one_or_zero() const [with T=octave_int64]" at line 32 of "int64NDArray.cc"



Has anyone seen anything similar to this?  I don't really know how to go about resolving this compile error, I haven't seen anything like it before and google is not of much help.  It seems that anyone building 3.2.3 with the intel compile should have seen this, since the relevant code is all part of the octave basline and not it's dependancies...


From: [hidden email]
To: [hidden email]
Subject: RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
Date: Wed, 18 Aug 2010 11:54:02 -0500
CC: [hidden email]

I'm using 10.1.022,  but I will see what happens if I upgrade.

> Date: Wed, 18 Aug 2010 08:27:36 +0200
> Subject: Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
>
> On Mon, Aug 16, 2010 at 10:43 PM, RUSS BRENNAN <[hidden email]> wrote:
> > I am compiling from source using icc/icpc/mkl 10.1 on a CentOS 4.8 install.
> > After lurking here a while and drudging through some issues, I get the
> > following compile time error:
> >
> > icpc -c -I/usr/local/include/ -I/usr/local/include -I/usr/include/freetype2
> > -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -DHAVE_CONFIG_H
> > -mieee-fp  -w -O2 -xW -mieee-fp -I/usr/local/include/
> > -I/usr/include/freetype2 int64NDArray.cc -o pic/int64NDArray.o
> > oct-inttypes.h(1052): error: more than one instance of overloaded function
> > "octave_int_cmp_op::mop" matches the argument list:
> >             function template "bool octave_int_cmp_op::mop<xop,T>(T,
> > double)"
> >             function template "bool
> > octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
> >             argument types are: (int64_t, const double)
> >   OCTAVE_INT_DOUBLE_CMP_OP (!=, ne)
> >   ^
> >           detected during:
> >             instantiation of "bool operator!=(const octave_int<T> &, const
> > double &) [with T=int64_t={long long}]" at line 57 of "intNDArray.cc"
> >             instantiation of "bool
> > intNDArray<T>::any_element_not_one_or_zero() const [with T=octave_int64]" at
> > line 32 of "int64NDArray.cc"
> >
> > compilation aborted for int64NDArray.cc (code 2)
> >
> >
> >
> > My configure line looks like this:
> > ./configure --enable-shared --disable-static
> > --with-blas='-L$MKLPATH -lmkl -lpthread'
> > --with-lapack='-lmkl_lapack'
> > LIBS="-L$MKLPATH $MKLPATH/libmkl_solver.a -Wl,--start-group -lm -lmkl_intel
> > -lmkl_intel_thread -lmkl_core -Wl,--end-group -liomp5 -lpthread"
> > --disable-extra-warning-flags
> > F77=ifort FFLAGS="-O3 -xW"
> > CC=icc CFLAGS="-O2 -xW -mieee-fp -I/usr/local/include/"
> > CXX=icpc CXXFLAGS="-w -O2 -xW -mieee-fp -I/usr/local/include/"
> > CPP="icc -E" CPPFLAGS="-I$MKLROOT/include/fftw -I/usr/local/include/"
> > CXXPP="icpc -E"
> > LDFLAGS=-L/usr/local/lib/
> >
> > Broke it up for clarity.  Any idea as to why I get this error?
> >
>
> IIRC this is a bug in Intel C++ that has been subsequently fixed.
> What's your exact Intel C++ version? It's fixed in 11.0.074, but I
> think it was already fixed in 10.1.008.
>
>
> > Another thing to ponder, how can I make octave recognize intel's fftw
> > implementation?
>
> No idea, but if the interface is compatible, Octave can't really tell
> the difference.
>
> --
> RNDr. Jaroslav Hajek, PhD
> computing expert & GNU Octave developer
> Aeronautical Research and Test Institute (VZLU)
> Prague, Czech Republic
> url: www.highegg.matfyz.cz

_______________________________________________ Help-octave mailing list [hidden email] https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
_______________________________________________ Help-octave mailing list [hidden email] https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

crakarjax
Commenting out lines 212-215 of oct-inttypes.h resolved this issue, so far.  I tried compiling this particular file with gcc4.1 and it succeeded, so it's unclear whether this is an intel compiler issue or a gcc compiler issue.


From: [hidden email]
To: [hidden email]
Subject: RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
Date: Fri, 20 Aug 2010 08:43:53 -0500

Ok I looked into this a bit more and I think I understand the problem.  Around line 57 of intNDArray.cc,  we have

template <class T>
bool
intNDArray<T>::any_element_not_one_or_zero (void) const {
  octave_idx_type nel = this->nelem ();
  for (octave_idx_type i = 0; i < nel; i++)
    {
      T val = this->elem (i);
      if (val != 0.0 && val != 1.0)
        return true;
    }
  return false;
}

While the declaration of the != operator matches:

            function template "bool octave_int_cmp_op::mop<xop,T>(T, double)"
            function template "bool octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"

Which means that if in the case that T=int64_t, the two declarations are the same, which would obviously cause some compiler issues. I must admit that I cannot determine where the second one-arg function template is coming from, it seems that all octave_int_cmp_op methods take two args, and perhaps this is the real root of the problem.

Can anyone advise on the correct way to patch this?  I'm not sure why noone else's compiler is catching this but it does appear to be a real issue.  For reference I am compiling on a 32-bit CentOS 4.8 install with Intel comilers and MKL 11.0.081.

Playing around with this, I can get it to compile if I cast in this manner:
if ((long long)val != 0.0 && (long long)val != 1.0)

Although I don't feel that this is a particularly correct solution.

Thanks for any help!


From: [hidden email]
To: [hidden email]
Subject: RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
Date: Thu, 19 Aug 2010 15:04:58 -0500

I recompiled all of my source with version 11.0.081 of the intel compiler and I still get the same error.  Here's an updated printout of the error:

icpc -c -I/opt/intel/Compiler/11.0/081/mkl/include/fftw -I/usr/local/include/ -I/usr/local/include -I/usr/include/freetype2 -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -DHAVE_CONFIG_H -mieee-fp  -w -O2 -xW -mieee-fp -I/usr/local/include/ -I/usr/include/freetype2 int64NDArray.cc -o pic/int64NDArray.o
oct-inttypes.h(1052): error: more than one instance of overloaded function "octave_int_cmp_op::mop" matches the argument list:
            function template "bool octave_int_cmp_op::mop<xop,T>(T, double)"
            function template "bool octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
            argument types are: (int64_t, const double)
  OCTAVE_INT_DOUBLE_CMP_OP (!=, ne)
  ^
          detected during:
            instantiation of "bool operator!=(const octave_int<T> &, const double &) [with T=int64_t={long long}]" at line 57 of "intNDArray.cc"
            instantiation of "bool intNDArray<T>::any_element_not_one_or_zero() const [with T=octave_int64]" at line 32 of "int64NDArray.cc"



Has anyone seen anything similar to this?  I don't really know how to go about resolving this compile error, I haven't seen anything like it before and google is not of much help.  It seems that anyone building 3.2.3 with the intel compile should have seen this, since the relevant code is all part of the octave basline and not it's dependancies...


From: [hidden email]
To: [hidden email]
Subject: RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
Date: Wed, 18 Aug 2010 11:54:02 -0500
CC: [hidden email]

I'm using 10.1.022,  but I will see what happens if I upgrade.

> Date: Wed, 18 Aug 2010 08:27:36 +0200
> Subject: Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
>
> On Mon, Aug 16, 2010 at 10:43 PM, RUSS BRENNAN <[hidden email]> wrote:
> > I am compiling from source using icc/icpc/mkl 10.1 on a CentOS 4.8 install.
> > After lurking here a while and drudging through some issues, I get the
> > following compile time error:
> >
> > icpc -c -I/usr/local/include/ -I/usr/local/include -I/usr/include/freetype2
> > -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -DHAVE_CONFIG_H
> > -mieee-fp  -w -O2 -xW -mieee-fp -I/usr/local/include/
> > -I/usr/include/freetype2 int64NDArray.cc -o pic/int64NDArray.o
> > oct-inttypes.h(1052): error: more than one instance of overloaded function
> > "octave_int_cmp_op::mop" matches the argument list:
> >             function template "bool octave_int_cmp_op::mop<xop,T>(T,
> > double)"
> >             function template "bool
> > octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
> >             argument types are: (int64_t, const double)
> >   OCTAVE_INT_DOUBLE_CMP_OP (!=, ne)
> >   ^
> >           detected during:
> >             instantiation of "bool operator!=(const octave_int<T> &, const
> > double &) [with T=int64_t={long long}]" at line 57 of "intNDArray.cc"
> >             instantiation of "bool
> > intNDArray<T>::any_element_not_one_or_zero() const [with T=octave_int64]" at
> > line 32 of "int64NDArray.cc"
> >
> > compilation aborted for int64NDArray.cc (code 2)
> >
> >
> >
> > My configure line looks like this:
> > ./configure --enable-shared --disable-static
> > --with-blas='-L$MKLPATH -lmkl -lpthread'
> > --with-lapack='-lmkl_lapack'
> > LIBS="-L$MKLPATH $MKLPATH/libmkl_solver.a -Wl,--start-group -lm -lmkl_intel
> > -lmkl_intel_thread -lmkl_core -Wl,--end-group -liomp5 -lpthread"
> > --disable-extra-warning-flags
> > F77=ifort FFLAGS="-O3 -xW"
> > CC=icc CFLAGS="-O2 -xW -mieee-fp -I/usr/local/include/"
> > CXX=icpc CXXFLAGS="-w -O2 -xW -mieee-fp -I/usr/local/include/"
> > CPP="icc -E" CPPFLAGS="-I$MKLROOT/include/fftw -I/usr/local/include/"
> > CXXPP="icpc -E"
> > LDFLAGS=-L/usr/local/lib/
> >
> > Broke it up for clarity.  Any idea as to why I get this error?
> >
>
> IIRC this is a bug in Intel C++ that has been subsequently fixed.
> What's your exact Intel C++ version? It's fixed in 11.0.074, but I
> think it was already fixed in 10.1.008.
>
>
> > Another thing to ponder, how can I make octave recognize intel's fftw
> > implementation?
>
> No idea, but if the interface is compatible, Octave can't really tell
> the difference.
>
> --
> RNDr. Jaroslav Hajek, PhD
> computing expert & GNU Octave developer
> Aeronautical Research and Test Institute (VZLU)
> Prague, Czech Republic
> url: www.highegg.matfyz.cz

_______________________________________________ Help-octave mailing list [hidden email] https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
_______________________________________________ Help-octave mailing list [hidden email] https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
_______________________________________________ Help-octave mailing list [hidden email] https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

Jaroslav Hajek-2
In reply to this post by crakarjax
On Thu, Aug 19, 2010 at 10:04 PM, RUSS BRENNAN <[hidden email]> wrote:

> I recompiled all of my source with version 11.0.081 of the intel compiler
> and I still get the same error.  Here's an updated printout of the error:
>
> icpc -c -I/opt/intel/Compiler/11.0/081/mkl/include/fftw
> -I/usr/local/include/ -I/usr/local/include -I/usr/include/freetype2 -fPIC
> -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -DHAVE_CONFIG_H
> -mieee-fp  -w -O2 -xW -mieee-fp -I/usr/local/include/
> -I/usr/include/freetype2 int64NDArray.cc -o pic/int64NDArray.o
> oct-inttypes.h(1052): error: more than one instance of overloaded function
> "octave_int_cmp_op::mop" matches the argument list:
>             function template "bool octave_int_cmp_op::mop<xop,T>(T,
> double)"
>             function template "bool
> octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
>             argument types are: (int64_t, const double)
>   OCTAVE_INT_DOUBLE_CMP_OP (!=, ne)
>   ^
>           detected during:
>             instantiation of "bool operator!=(const octave_int<T> &, const
> double &) [with T=int64_t={long long}]" at line 57 of "intNDArray.cc"
>             instantiation of "bool
> intNDArray<T>::any_element_not_one_or_zero() const [with T=octave_int64]" at
> line 32 of "int64NDArray.cc"
>
>
>
> Has anyone seen anything similar to this?  I don't really know how to go
> about resolving this compile error, I haven't seen anything like it before
> and google is not of much help.  It seems that anyone building 3.2.3 with
> the intel compile should have seen this, since the relevant code is all part
> of the octave basline and not it's dependancies...
>

That's weird, it works for me with icpc 11.0. Actually I'm compiling
the development sources, but I don't think there has been a change
that would explain the difference...


--
RNDr. Jaroslav Hajek, PhD
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz

_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

Jaroslav Hajek-2
In reply to this post by crakarjax
On Fri, Aug 20, 2010 at 3:43 PM, RUSS BRENNAN <[hidden email]> wrote:

> Ok I looked into this a bit more and I think I understand the problem.
> Around line 57 of intNDArray.cc,  we have
>
> template <class T>
> bool
> intNDArray<T>::any_element_not_one_or_zero (void) const {
>   octave_idx_type nel = this->nelem ();
>   for (octave_idx_type i = 0; i < nel; i++)
>     {
>       T val = this->elem (i);
>       if (val != 0.0 && val != 1.0)
>         return true;
>     }
>   return false;
> }
>
> While the declaration of the != operator matches:
>
>             function template "bool octave_int_cmp_op::mop<xop,T>(T,
> double)"
>             function template "bool
> octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
>
> Which means that if in the case that T=int64_t, the two declarations are the
> same, which would obviously cause some compiler issues.

No, the compiler should resolve this, because the second overload is
more specialized. You need to read the C++ standard carefully to
understand. This has been seen before with gcc 3, see

http://octave.1599824.n4.nabble.com/Cast-ambiguity-compilation-error-td1653304.html#a1653307

I'm very surprised that your Intel C++ behaves differently from mine.
Forgive me the stupid question, but are you sure you properly upgraded
and are really calling 11.0 (try icpc --version)?

As another desperate attempt, you may try the development sources.

--
RNDr. Jaroslav Hajek, PhD
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz

_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

Jaroslav Hajek-2
In reply to this post by crakarjax
On Fri, Aug 20, 2010 at 4:53 PM, RUSS BRENNAN <[hidden email]> wrote:
> Commenting out lines 212-215 of oct-inttypes.h resolved this issue, so far.
> I tried compiling this particular file with gcc4.1 and it succeeded, so it's
> unclear whether this is an intel compiler issue or a gcc compiler issue.
>

Unfortunately this will break Octave's arithmetics, i.e. mixed
int64-double comparisons won't behave properly in certain cases. If
you don't care, then it's fine; but you should be aware that you
produce a (slightly) crippled binary with this method.

regards

--
RNDr. Jaroslav Hajek, PhD
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz
_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

crakarjax
In reply to this post by Jaroslav Hajek-2
I am using:
icpc (ICC) 11.0 20090131
Copyright (C) 1985-2009 Intel Corporation.  All rights reserved.

Try compiling this with your version of icpc:
test.cc:
class A {};

template <class X, class T> void method (double u, T v);

template <class X> void method (double u, long v);

int main (){
  double u(0); long v(0);
  method<A> (u, v);
}

using icpc -c test.cc

Here is what I get:
[root@localhost ~]# icpc -c test,cc
icpc: error #10104: unable to open 'test,cc'
[root@localhost ~]# icpc -c test.cc
test.cc(9): error: more than one instance of overloaded function "method" matches the argument list:
            function template "void method<X,T>(double, T)"
            function template "void method<X>(double, long)"
            argument types are: (double, long)
    method<A> (u, v);
    ^

compilation aborted for test.cc (code 2)


If you can compile that with icpc, then I'll agree that my compiler is funky!  I pulled that example oddly enough from someone that you helped in February:
http://permalink.gmane.org/gmane.comp.gnu.octave.maintainers/17942



> Date: Fri, 20 Aug 2010 21:27:47 +0200
> Subject: Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
>
> On Fri, Aug 20, 2010 at 3:43 PM, RUSS BRENNAN <[hidden email]> wrote:
> > Ok I looked into this a bit more and I think I understand the problem.
> > Around line 57 of intNDArray.cc,  we have
> >
> > template <class T>
> > bool
> > intNDArray<T>::any_element_not_one_or_zero (void) const {
> >   octave_idx_type nel = this->nelem ();
> >   for (octave_idx_type i = 0; i < nel; i++)
> >     {
> >       T val = this->elem (i);
> >       if (val != 0.0 && val != 1.0)
> >         return true;
> >     }
> >   return false;
> > }
> >
> > While the declaration of the != operator matches:
> >
> >             function template "bool octave_int_cmp_op::mop<xop,T>(T,
> > double)"
> >             function template "bool
> > octave_int_cmp_op::mop<xop>(int64_t={long long}, double)"
> >
> > Which means that if in the case that T=int64_t, the two declarations are the
> > same, which would obviously cause some compiler issues.
>
> No, the compiler should resolve this, because the second overload is
> more specialized. You need to read the C++ standard carefully to
> understand. This has been seen before with gcc 3, see
>
> http://octave.1599824.n4.nabble.com/Cast-ambiguity-compilation-error-td1653304.html#a1653307
>
> I'm very surprised that your Intel C++ behaves differently from mine.
> Forgive me the stupid question, but are you sure you properly upgraded
> and are really calling 11.0 (try icpc --version)?
>
> As another desperate attempt, you may try the development sources.
>
> --
> RNDr. Jaroslav Hajek, PhD
> computing expert & GNU Octave developer
> Aeronautical Research and Test Institute (VZLU)
> Prague, Czech Republic
> url: www.highegg.matfyz.cz

_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

Jaroslav Hajek-2
On Sun, Aug 22, 2010 at 4:56 PM, RUSS BRENNAN <[hidden email]> wrote:

> I am using:
> icpc (ICC) 11.0 20090131
> Copyright (C) 1985-2009 Intel Corporation.  All rights reserved.
>
> Try compiling this with your version of icpc:
> test.cc:
> class A {};
>
> template <class X, class T> void method (double u, T v);
>
> template <class X> void method (double u, long v);
>
> int main (){
>   double u(0); long v(0);
>   method<A> (u, v);
> }
>
> using icpc -c test.cc
>
> Here is what I get:
> [root@localhost ~]# icpc -c test,cc
> icpc: error #10104: unable to open 'test,cc'
> [root@localhost ~]# icpc -c test.cc
> test.cc(9): error: more than one instance of overloaded function "method"
> matches the argument list:
>             function template "void method<X,T>(double, T)"
>             function template "void method<X>(double, long)"
>             argument types are: (double, long)
>     method<A> (u, v);
>     ^
>
> compilation aborted for test.cc (code 2)
>
>
> If you can compile that with icpc, then I'll agree that my compiler is
> funky!  I pulled that example oddly enough from someone that you helped in
> February:
> http://permalink.gmane.org/gmane.comp.gnu.octave.maintainers/17942
>

I can compile this normally. But I've got to apologize; my compiler is
in fact version 11.1 (11.1 20100414), I was confused by the way our
admin did the latest installations. So that may explain the
difference. I now recall that I used a special patch to workaround
this issue, but I can't find it anymore (probably deleted it when the
latest upgrade fixed the bug).



--
RNDr. Jaroslav Hajek, PhD
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz

_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

crakarjax
I upgraded to 11.1 and the problem persists:

[root@localhost ~]# icpc -v
Version 11.1
[root@localhost ~]# icpc -c test.cc
test.cc(9): error: more than one instance of overloaded function "method" matches the argument list:
            function template "void method<X,T>(double, T)"
            function template "void method<X>(double, long)"
            argument types are: (double, long)
    method<A> (u, v);
    ^

compilation aborted for test.cc (code 2)

Is the patch that you refer to applied to octave or the intel compiler?  In either case, if there's any chance that you can locate it I would much appreciate it.  I'm pulling my hair out here trying to get this thing to compile!  Are you on a 64-bit platform by chance?  I'm working on 32 bit right now.




> Date: Mon, 23 Aug 2010 09:22:06 +0200
> Subject: Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
>
> On Sun, Aug 22, 2010 at 4:56 PM, RUSS BRENNAN <[hidden email]> wrote:
> > I am using:
> > icpc (ICC) 11.0 20090131
> > Copyright (C) 1985-2009 Intel Corporation.  All rights reserved.
> >
> > Try compiling this with your version of icpc:
> > test.cc:
> > class A {};
> >
> > template <class X, class T> void method (double u, T v);
> >
> > template <class X> void method (double u, long v);
> >
> > int main (){
> >   double u(0); long v(0);
> >   method<A> (u, v);
> > }
> >
> > using icpc -c test.cc
> >
> > Here is what I get:
> > [root@localhost ~]# icpc -c test,cc
> > icpc: error #10104: unable to open 'test,cc'
> > [root@localhost ~]# icpc -c test.cc
> > test.cc(9): error: more than one instance of overloaded function "method"
> > matches the argument list:
> >             function template "void method<X,T>(double, T)"
> >             function template "void method<X>(double, long)"
> >             argument types are: (double, long)
> >     method<A> (u, v);
> >     ^
> >
> > compilation aborted for test.cc (code 2)
> >
> >
> > If you can compile that with icpc, then I'll agree that my compiler is
> > funky!  I pulled that example oddly enough from someone that you helped in
> > February:
> > http://permalink.gmane.org/gmane.comp.gnu.octave.maintainers/17942
> >
>
> I can compile this normally. But I've got to apologize; my compiler is
> in fact version 11.1 (11.1 20100414), I was confused by the way our
> admin did the latest installations. So that may explain the
> difference. I now recall that I used a special patch to workaround
> this issue, but I can't find it anymore (probably deleted it when the
> latest upgrade fixed the bug).
>
>
>
> --
> RNDr. Jaroslav Hajek, PhD
> computing expert & GNU Octave developer
> Aeronautical Research and Test Institute (VZLU)
> Prague, Czech Republic
> url: www.highegg.matfyz.cz

_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

crakarjax
Not sure if this helps but I thought I'd throw the verbose output here just in case it sheds some light:

[root@localhost ~]# icc -v -c test.cc
Version 11.1
/opt/intel/Compiler/11.1/064/bin/ia32/mcpcom    -_g -mP3OPT_inline_alloca -D__HONOR_STD -D__ICC=1110 -D__INTEL_COMPILER=1110 "-_Asystem(unix)" -D__ELF__ "-_Acpu(i386)" "-_Amachine(i386)" -D__INTEL_COMPILER_BUILD_DATE=20091130 -D__PTRDIFF_TYPE__=int -D__SIZE_TYPE__=unsigned "-D__WCHAR_TYPE__=long int" "-D__WINT_TYPE__=unsigned int" "-D__INTMAX_TYPE__=long long int" "-D__UINTMAX_TYPE__=long long unsigned int" -D__QMSPP_ -D__OPTIMIZE__ -D__NO_MATH_INLINES -D__NO_STRING_INLINES -D__GNUG__=3 -D__GNUC__=3 -D__GNUC_MINOR__=4 -D__GNUC_PATCHLEVEL__=6 -D__NO_INLINE__ -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ -D__pentium4 -D__pentium4__ -D__SSE2__ -D__tune_pentium4__ -D__MMX__ -D__SSE__ -D_GNU_SOURCE=1 -D__DEPRECATED=1 -D__GXX_WEAK__=1 -D__GXX_ABI_VERSION=1002 "-D__USER_LABEL_PREFIX__= " -D__REGISTER_PREFIX__= -D__INTEL_RTTI__ -D__EXCEPTIONS=1 -D__unix__ -D__unix -D__linux__ -D__linux -D__gnu_linux__ -B -Dunix -Dlinux -D__i386 -D__i386__ -Di386 -_3 -_b --gnu_version=346 -_W7 --gcc-extern-inline -p --bool -tused -mGLOB_eh_linux -x --mspp --multibyte_chars --bool -mP1OPT_version=11.1-ia32 -mGLOB_diag_file=test.diag -mP1OPT_print_version=FALSE -mP3OPT_use_mspp_call_convention -mCG_use_gas_got_workaround=F "-mGLOB_options_string=-long_double -v -c" -mGLOB_cxx_limited_range=FALSE -mGLOB_as_output_backup_file_name=/tmp/icc24gQynas_.s -mGLOB_lp64=FALSE -mIPOPT_activate -mIPOPT_lite -mGLOB_machine_model=GLOB_MACHINE_MODEL_PW -mGLOB_extended_instructions=0x8 -mP2OPT_hlo_level=2 -mP2OPT_hlo -mIPOPT_obj_output_file_name=test.o "-mGLOB_linker_version=2.15.92.0.2 20040927" -mP3OPT_asm_target=P3OPT_ASM_TARGET_GAS -mGLOB_obj_output_file=test.o -mGLOB_source_dialect=GLOB_SOURCE_DIALECT_C_PLUS_PLUS -mP1OPT_source_file_name=test.cc test.cc
#include "..." search starts here:
#include <...> search starts here:
 /opt/intel/Compiler/11.1/064/include/ia32
 /opt/intel/Compiler/11.1/064/ipp/ia32/include
 /opt/intel/Compiler/11.1/064/mkl/include
 /opt/intel/Compiler/11.1/064/tbb/include
 /opt/intel/Compiler/11.1/064/ipp/ia32/include
 /opt/intel/Compiler/11.1/064/mkl/include
 /opt/intel/Compiler/11.1/064/tbb/include
 /opt/intel/Compiler/11.1/064/mkl/include
 /home/intel/ipp/ia32/include
 /home/intel/mkl/include
 /home/intel/tbb/include
 /home/intel/mkl/include
 /opt/intel/Compiler/11.1/072/ipp/ia32/include
 /opt/intel/Compiler/11.1/072/mkl/include
 /opt/intel/Compiler/11.1/072/tbb/include
 /home/intel/ipp/ia32/include
 /home/intel/mkl/include
 /home/intel/tbb/include
 /home/intel/mkl/include
 /usr/include/c++/3.4.6
 /usr/include/c++/3.4.6/i386-redhat-linux
 /usr/include/c++/3.4.6/backward
 /opt/intel/Compiler/11.1/064/include/ia32
 /opt/intel/Compiler/11.1/064/include
 /usr/local/include
 /usr/include
 /usr/lib/gcc/i386-redhat-linux/3.4.6/include
End of search list.
test.cc(9): error: more than one instance of overloaded function "method" matches the argument list:
            function template "void method<X,T>(double, T)"
            function template "void method<X>(double, long)"
            argument types are: (double, long)
    method<A> (u, v);
    ^

compilation aborted for test.cc (code 2)
rm /tmp/iccBD4NiIlibgcc

rm /tmp/icceZX7Gggnudirs

rm /tmp/iccT6pQ6Ogas

rm /tmp/icc24gQynas_.s

rm /tmp/icc122R0Vldashv

rm /tmp/iccUuTCbvarg




From: [hidden email]
To: [hidden email]
Subject: RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
Date: Mon, 23 Aug 2010 11:27:35 -0500
CC: [hidden email]

I upgraded to 11.1 and the problem persists:

[root@localhost ~]# icpc -v
Version 11.1
[root@localhost ~]# icpc -c test.cc
test.cc(9): error: more than one instance of overloaded function "method" matches the argument list:
            function template "void method<X,T>(double, T)"
            function template "void method<X>(double, long)"
            argument types are: (double, long)
    method<A> (u, v);
    ^

compilation aborted for test.cc (code 2)

Is the patch that you refer to applied to octave or the intel compiler?  In either case, if there's any chance that you can locate it I would much appreciate it.  I'm pulling my hair out here trying to get this thing to compile!  Are you on a 64-bit platform by chance?  I'm working on 32 bit right now.




> Date: Mon, 23 Aug 2010 09:22:06 +0200
> Subject: Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
>
> On Sun, Aug 22, 2010 at 4:56 PM, RUSS BRENNAN <[hidden email]> wrote:
> > I am using:
> > icpc (ICC) 11.0 20090131
> > Copyright (C) 1985-2009 Intel Corporation.  All rights reserved.
> >
> > Try compiling this with your version of icpc:
> > test.cc:
> > class A {};
> >
> > template <class X, class T> void method (double u, T v);
> >
> > template <class X> void method (double u, long v);
> >
> > int main (){
> >   double u(0); long v(0);
> >   method<A> (u, v);
> > }
> >
> > using icpc -c test.cc
> >
> > Here is what I get:
> > [root@localhost ~]# icpc -c test,cc
> > icpc: error #10104: unable to open 'test,cc'
> > [root@localhost ~]# icpc -c test.cc
> > test.cc(9): error: more than one instance of overloaded function "method"
> > matches the argument list:
> >             function template "void method<X,T>(double, T)"
> >             function template "void method<X>(double, long)"
> >             argument types are: (double, long)
> >     method<A> (u, v);
> >     ^
> >
> > compilation aborted for test.cc (code 2)
> >
> >
> > If you can compile that with icpc, then I'll agree that my compiler is
> > funky!  I pulled that example oddly enough from someone that you helped in
> > February:
> > http://permalink.gmane.org/gmane.comp.gnu.octave.maintainers/17942
> >
>
> I can compile this normally. But I've got to apologize; my compiler is
> in fact version 11.1 (11.1 20100414), I was confused by the way our
> admin did the latest installations. So that may explain the
> difference. I now recall that I used a special patch to workaround
> this issue, but I can't find it anymore (probably deleted it when the
> latest upgrade fixed the bug).
>
>
>
> --
> RNDr. Jaroslav Hajek, PhD
> computing expert & GNU Octave developer
> Aeronautical Research and Test Institute (VZLU)
> Prague, Czech Republic
> url: www.highegg.matfyz.cz

_______________________________________________ Help-octave mailing list [hidden email] https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

Jaroslav Hajek-2
In reply to this post by crakarjax
On Mon, Aug 23, 2010 at 6:27 PM, RUSS BRENNAN <[hidden email]> wrote:

> I upgraded to 11.1 and the problem persists:
>
> [root@localhost ~]# icpc -v
> Version 11.1
> [root@localhost ~]# icpc -c test.cc
> test.cc(9): error: more than one instance of overloaded function "method"
> matches the argument list:
>             function template "void method<X,T>(double, T)"
>             function template "void method<X>(double, long)"
>             argument types are: (double, long)
>     method<A> (u, v);
>     ^
>
> compilation aborted for test.cc (code 2)
>
> Is the patch that you refer to applied to octave or the intel compiler?  In
> either case, if there's any chance that you can locate it I would much
> appreciate it.  I'm pulling my hair out here trying to get this thing to
> compile!  Are you on a 64-bit platform by chance?  I'm working on 32 bit
> right now.
>
>

Yes, I'm on a 64-bit platform. That may explain the difference. I was
using a patch to Octave's sources (patching Intel C++ is not even
legal). It appears that it's gone, however.

--
RNDr. Jaroslav Hajek, PhD
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz

_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|

RE: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"

crakarjax
using -gcc-version=410 solved this issue!  I am using gcc4 to compile, but intel apparently checks gcc -v for the version.  Overriding this allowed me to compile the test.cc program, even with 10.2! Thanks for the advice,

Russell

> Date: Wed, 25 Aug 2010 12:42:30 +0200
> Subject: Re: Compiling Octave 3.2.3 with icpc 10.1 fails: more than one instance of overloaded function "octave_int_cmp_op::mop"
> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
>
> On Mon, Aug 23, 2010 at 6:27 PM, RUSS BRENNAN <[hidden email]> wrote:
> > I upgraded to 11.1 and the problem persists:
> >
> > [root@localhost ~]# icpc -v
> > Version 11.1
> > [root@localhost ~]# icpc -c test.cc
> > test.cc(9): error: more than one instance of overloaded function "method"
> > matches the argument list:
> >             function template "void method<X,T>(double, T)"
> >             function template "void method<X>(double, long)"
> >             argument types are: (double, long)
> >     method<A> (u, v);
> >     ^
> >
> > compilation aborted for test.cc (code 2)
> >
> > Is the patch that you refer to applied to octave or the intel compiler?  In
> > either case, if there's any chance that you can locate it I would much
> > appreciate it.  I'm pulling my hair out here trying to get this thing to
> > compile!  Are you on a 64-bit platform by chance?  I'm working on 32 bit
> > right now.
> >
> >
>
> Yes, I'm on a 64-bit platform. That may explain the difference. I was
> using a patch to Octave's sources (patching Intel C++ is not even
> legal). It appears that it's gone, however.
>
> --
> RNDr. Jaroslav Hajek, PhD
> computing expert & GNU Octave developer
> Aeronautical Research and Test Institute (VZLU)
> Prague, Czech Republic
> url: www.highegg.matfyz.cz

_______________________________________________
Help-octave mailing list
[hidden email]
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave