Short answer: ./configure CXX=icpc
, found by reading the Blitz++ User’s Guide.
Long answer:
To compile blitz++ with intel c++ compiler, a file called bzconfig.h is required in blitz/intel/ folder. But there isn’t.
Yes and yes. Blitz++ is supposed to generate the file itself. According to the Blitz++ User’s Guide blitz.pdf
included in blitz-0.10.tar.gz
, section “Installation”,
Blitz++ uses GNU Autoconf, which handles rewriting Makefiles for various platforms and compilers.
More accurately, Blitz++ uses the GNU autotools tool chain (automake, autoconf, configure), which can generate makefiles, configure scripts, header files and more. The bzconfig.h
files are supposed to be generated by the configure
script, which comes with Blitz++, ready to use.
I just copy the one in blitz/ms/bzconfig.h in. That may give an non-optimal configuration.
If “non-optimal” means “non-working” to you, then yes. 🙂
You need an intel/bzconfig.h
that accurately represents your compiler.
Anyone can tell me how to compile blitz++ with intel c++ compiler?
Read and follow the fine manual, in particular the section “Installation” mentioned above.
go into the ‘blitz-VERSION’ directory, and type:
./configure CXX=[compiler]
where [compiler] is one of xlc++, icpc, pathCC, xlC, cxx, aCC, CC, g++, KCC, pgCC or FCC.
(If you do not choose a C++ compiler, the configure script will attempt to find an appropriate compiler for the current platform.)
Have you done this? For the Intel compiler, you would need to use
./configure CXX=icpc
.
In the manual, it said run bzconfig script to get the right bzconfig.h. But I don’t understand what it means.
I assume that by “it” you mean “that”. What do you mean by “manual”? My copy of the Blitz++ User’s Guide does not mention bzconfig
. Are you sure that you are using the manual that corresponds to your Blitz++ version?
PS: Looking for “bzconfig” in the contents of blitz-0.10, it looks like “bzconfig” is no longer part of Blitz++, but used to be:
find . -name bzconfig
-> No results
find . -print0 | xargs -0 grep -a -i -n -e bzconfig
:
./blitz/compiler.h:44: #error In <blitz/config.h>: A working template implementation is required by Blitz++ (you may need to rerun the compiler/bzconfig script)
That needs to be updated.
./blitz/gnu/bzconfig.h:4:/* blitz/gnu/bzconfig.h. Generated automatically at end of configure. */
./configure.ac:159:# autoconf replacement of bzconfig
There you have it, these bzconfig.h
files should be generated by configure
.
./ChangeLog.1:1787: will now replace the old file that was generate with the bzconfig
That may be the change that switched to autoconf.
./INSTALL:107: 2. Go into the compiler subdirectory and run the bzconfig
That needs to be updated. Is this what made you look for bzconfig
?
./README:27:compiler Compiler tests (used with obsolete bzconfig script)
Needs updating, a compiler
directory is no longer included.