![]() |
Blitz Support : |
From: Julian C. Cummings (cummings_at_[hidden])
Date: 2003-07-25 14:02:45
Einar,
Another change which seems to eliminate the problem is to remove the
"restrict" label from the reference to the left-hand side entity in the
_bz_update::update() method. That change will probably hurt performance
somewhat as well, but would not be as devastating as activating BZ_DEBUG
throughout all the code. You can make this change in blitz/update.h and see
what the performance impact is with your code. I think this must be some
sort of glitch in the optimizer, but I will continue to investigate.
Regards, Julian C.
> -----Original Message-----
> From: blitz-support-bounces_at_[hidden]
> [mailto:blitz-support-bounces_at_[hidden]] On Behalf Of Einar Otnes
> Sent: Thursday, July 24, 2003 11:28 PM
> To: Support list for Blitz++
> Subject: Re: [Blitz-support] Problems with SGI compiler and
> optimization
>
>
>
> Julian,
> I'm glad you're looking into the problem which I think is
> rather important when it comes to optimizing the code. As far
> as I have understood compiling with -DBZ_DEBUG will slow down
> the array operations tremendously since each array element is
> checked with the array boundaries. From what I've seen from
> earlier replies this problem can be resolved by including "
> -strict_induction" when compiling. This option disables loop
> induction variable optimizations and is generally not
> recommended because it can cause considerable performance
> degradation. We are then left with a suboptimized code using
> blitz arrays in order to make it work which is not what
> Blitz++ is supposed to be... Thanks, Einar Otnes
>
>
>
>
> Julian Cummings
>
> <cummings_at_[hidden] To:
> Support list for Blitz++ <blitz-support_at_[hidden]>
> > cc:
> (bcc: Einar Otnes)
> Sent by:
> Subject: Re: [Blitz-support] Problems with SGI compiler
> and
> blitz-support-bounces_at_oonu
> optimization
>
> merics.org
>
>
>
>
>
> 24.07.2003 22:16
>
> Please respond to Support
>
> list for Blitz++
>
>
>
>
>
>
>
>
>
> Hello Einar,
>
> I've been looking into this problem you reported. It appears
> to me that the key change in the compilation options is
> adding -DBZ_DEBUG, not switching from optimization to debug
> flags. By just adding -DBZ_DEBUG to your set of optimization
> compiler flags, you should see that your code works properly.
>
> -DBZ_DEBUG mostly activates some Blitz assertions that are
> sprinkled throughout the code. I'm in the process of trying
> to narrow down what causes the change in behavior. It is
> probably something in the expression evaluator code.
>
> Regards, Julian C.
>
>
> Einar Otnes wrote:
>
> >I am struggling using Blitz++-0.6 on the SGI 7.3.1.3m compiler using
> >-O3 optimization option. The code compiles fine, but the
> output results
> >are just zero. When using the debugging option things are
> working fine.
> >I have attached a simple program that exhibits this
> behaviour. Here, we
> >get a problem with initializing the array which is zero
> after calling
> >the init
> ()
> >routine. Is this a problem with the SGI compiler? Or am I doing
> >something wrong? I have yet to try this example on the Intel Linux
> >compiler.
> >
> >
> > The program and the Makefile is listed below:
> >
> >Thanks
> >Einar Otnes
> >
> >
> >#include <iostream>
> >#include <string>
> >#include <blitz/array.h>
> >
> >namespace EPL
> >{
> >template<typename T>
> > class Field
> > {
> > public:
> >
> > Field(int M, int N)
> > {
> > init(M,N);
> > }
> >
> > protected:
> >
> > blitz::Array<T,2> dataArr;
> >
> >
> > void init(int M, int N){
> >
> > // Initialize the array. Does not work when compiling
> with -O3.
> >Sometimes this problem can be solved by
> > // using for loops for initialization working on the array
> >elementwise.
> > dataArr.resize(M,N);
> > dataArr = 0.34*blitz::tensor::i;
> > }
> >
> > };
> >
> >
> >template<typename T>
> > class BnField : public Field<T>
> > {
> > public:
> >
> > BnField(int M, int N):Field<T>(M,N)
> > {
> > std::cerr << "Hello World!" << std::endl;
> > }
> >
> > void multiplySelf(){
> >
> > T number(1,2);
> > dataArr = number*dataArr;
> > }
> >
> >
> > void printAll(){
> >
> > std::cerr << "dataArr = " << dataArr << std::endl;
> > }
> >
> > };
> >
> >
> >} // End namespace EPL
> >
> >
> >// Main program starts here
> >
> >using namespace EPL;
> >
> >int main(int argc, char *argv[])
> >{
> >
> > int M = 4;
> > int N = 5;
> >
> > BnField<std::complex<float> > B1(M,N);
> >
> > B1.printAll();
> >
> > B1.multiplySelf();
> >
> > B1.printAll();
> >
> > return EXIT_SUCCESS;
> >}
> >
> >
> >
> >The Makefile with the two different CXXFLAGS is given below. The code
> works
> >with the debugging option, but not without it.
> >
> >
> >
> ># Path where Blitz++ is installed
> >BZDIR = /private/eiot/Blitz++-0.6
> >
> >ARCH = mips64
> >
> >CXX = CC #-Bstatic
> >
> ># Flags for optimized executables
> >CXXFLAGS = -64 \
> > -DBZ_DISABLE_XOPEN_SOURCE \
> > -LANG:std -LANG:restrict \
> > -I$(BZDIR)/include \
> > -O3 -OPT:Olimit=0 -TENV:X=0 \
> > -apo
> >
> >
> >
> ># Flags for debugging
> >#CXXFLAGS = -64 -g3 -DBZ_DEBUG \
> ># -DBZ_DISABLE_XOPEN_SOURCE \
> ># -LANG:std -LANG:restrict \
> ># -I$(BZDIR)/include \
> ># -apo
> >
> >
> >LDFLAGS = -64 -lCio
> >
> >LIBS = -L$(BZDIR)/lib -lblitz \
> > -lm -lCio \
> > -apo
> >
> ># Name of executable file
> >EFILE = main
> >
> >OBJS = main.o
> >
> >main: $(OBJS)
> > @echo "linking..."
> > $(CXX) $(LDFLAGS) -o $(EFILE) $(OBJS) $(LIBS)
> >
> >$(OBJS): $(HDRS)
> > $(CXX) $(CXXFLAGS) -c $*.cpp
> >
> >clean:
> > rm -f $(OBJS) $(EFILE)
> > rm -rf ii_files/
> > rm -rf rii_files/
> >
> >main.o: main.cpp
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >-------------------------------------------------------------------
> >The information contained in this message may be CONFIDENTIAL and is
> >intended for the addressee only. Any unauthorised use,
> dissemination of
> the
> >information or copying of this message is prohibited. If you are not
> >the addressee, please notify the sender immediately by return e-mail
> >and
> delete
> >this message.
> >Thank you.
> >
> >
> >_______________________________________________
> >Blitz-support mailing list
> >Blitz-support_at_[hidden]
> >http://www.oonumerics.org/mailman/listinfo.cgi/blitz-support
> >
> >
>
> --
> Dr. Julian C. Cummings E-mail:
> cummings_at_[hidden]
> California Institute of Technology Phone: 626-395-2543
> 1200 E. California Blvd., Mail Code 158-79 Fax: 626-584-5917
> Pasadena, CA 91125
>
>
>
> _______________________________________________
> Blitz-support mailing list
> Blitz-support_at_[hidden]
> http://www.oonumerics.org/mailman/listinfo.cgi> /blitz-support
>
>
>
>
>
>
>
> -------------------------------------------------------------------
> The information contained in this message may be CONFIDENTIAL
> and is intended for the addressee only. Any unauthorised use,
> dissemination of the information or copying of this message
> is prohibited. If you are not the addressee, please notify
> the sender immediately by return e-mail and delete this
> message. Thank you.
>
> _______________________________________________
> Blitz-support mailing list
> Blitz-support_at_[hidden]
> http://www.oonumerics.org/mailman/listinfo.cgi> /blitz-support
>