ICC v9.0

Message boards : Number crunching : ICC v9.0
Message board moderation

To post messages, you must log in.

1 · 2 · Next

AuthorMessage
jrmm22
Volunteer tester

Send message
Joined: 30 Jan 04
Posts: 353
Credit: 24,536,157
RAC: 0
United States
Message 124664 - Posted: 17 Jun 2005, 21:30:44 UTC

Icc version 9.0 is out.

I'm trying to compile boinc 4.44 and 4.45, but both fail miserably. I was wondering if Metod or Ned or Tetsuji could help me out, or guide me in the right direction.

I'm using Gentoo Linux
Gcc version 3.3.5-20050130
glibc 2.3.4

I'm getting strange errors...
I got a __built-in_va_start is undefined, (which I managed to solve and don't know how ;) )...
and the most recent is:

/root/tmp/compilar/boinc_public/RSAEuro/source/librsaeuro.a(prime.o)(.text+0x2c5):/root/tmp/compilar/boinc_public/RSAEuro/source/prime.c:281: undefined reference to `_intel_fast_memset'

Please contact me for specific errors, I've g2g..

jesus.menchaca@gmail.com


ID: 124664 · Report as offensive
Tetsuji Maverick Rai
Volunteer tester
Avatar

Send message
Joined: 25 Apr 99
Posts: 518
Credit: 90,863
RAC: 0
Japan
Message 124666 - Posted: 17 Jun 2005, 21:41:16 UTC
Last modified: 17 Jun 2005, 21:46:49 UTC

You'd better compile as a normal user; not root.

at first,

export CC=icc
export CXX=icpc
export MYSQL_CONFIG=true
export CFLAGS='-xP -ipo -O3 -fp-model fast -i-static -static'
export CXXFLAGS=$CFLAGS

(change -xP according to your cpu, if you are using P3, add -tpp6)

then in boinc directory (usually rename boinc_public to boinc, but it's not necessary),

./configure --disable-server --without-wx
make clean
make AR=xiar

And you'll have boinc in boinc/client. But the binary won't be a static binary. I'm also using Gentoo and ICC9.0.
Luckiest in the world. WMD = Weapon of Mass Distraction.
Click this table.
ID: 124666 · Report as offensive
Tetsuji Maverick Rai
Volunteer tester
Avatar

Send message
Joined: 25 Apr 99
Posts: 518
Credit: 90,863
RAC: 0
Japan
Message 124697 - Posted: 17 Jun 2005, 23:38:50 UTC
Last modified: 17 Jun 2005, 23:40:14 UTC

PS:

as for the errors, I suspect you should forget

source /opt/intel/cc/9.0/bin/iccvars.sh (for Bourne shell)
or
source /opt/intel/cc/9.0/bin/iccvars.csh (for csh)

before using icc/icpc. (usually this should be put in .bashrc or .zshrc or whatever.) You need to do it to link Intel specific libraries in /opt/intel/cc/9.0/lib. And if you use -i-static as I added above, Intel specific libraries will be linked statically and you don't have to worry about it.
Luckiest in the world. WMD = Weapon of Mass Distraction.
Click this table.
ID: 124697 · Report as offensive
jrmm22
Volunteer tester

Send message
Joined: 30 Jan 04
Posts: 353
Credit: 24,536,157
RAC: 0
United States
Message 124780 - Posted: 18 Jun 2005, 5:07:22 UTC - in response to Message 124666.  
Last modified: 18 Jun 2005, 5:27:00 UTC

You'd better compile as a normal user; not root.

at first,

export CC=icc
export CXX=icpc
export MYSQL_CONFIG=true
export CFLAGS='-xP -ipo -O3 -fp-model fast -i-static -static'
export CXXFLAGS=$CFLAGS

(change -xP according to your cpu, if you are using P3, add -tpp6)

then in boinc directory (usually rename boinc_public to boinc, but it's not necessary),

./configure --disable-server --without-wx
make clean
make AR=xiar

And you'll have boinc in boinc/client. But the binary won't be a static binary. I'm also using Gentoo and ICC9.0.


I also added
export GXX_INCLUDE=/usr/lib/gcc-lib/i686-pc-linug-gnu/3.3.5-20050130
to the iccvars.sh so that the stdc++ libs were found, as well as several -I and -L in the icc.cfg

however, I'm getting this error:


diagnostics.C(569): error: identifier "__builtin_va_start" is undefined
va_start(ptr, pszFormat);
^

compilation aborted for diagnostics.C (code 2)
make[2]: *** [diagnostics.o] Error 1
make[2]: Leaving directory `/root/tmp/compilar/boinc_public/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/tmp/compilar/boinc_public'
make: *** [all] Error 2

If I set GXX_ROOT=/usr/bin /usr, /usr/bin/g++, /usr/i686-pc-linux-gnu/gcc-bin/3.3.5-20050130/, I get:

icpc: error: could not find directory in which g++ resides
make[2]: *** [diagnostics.o] Error 1
make[2]: Leaving directory `/home/megaman/compilar/boinc_public/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/megaman/compilar/boinc_public'
make: *** [all] Error 2


Any ideas?

I somehow worked pass this error, but I don't know how I did it since I was working on 2 consoles... damn my stupidity.. =)

Thank you for your help!


ID: 124780 · Report as offensive
Tetsuji Maverick Rai
Volunteer tester
Avatar

Send message
Joined: 25 Apr 99
Posts: 518
Credit: 90,863
RAC: 0
Japan
Message 124819 - Posted: 18 Jun 2005, 7:22:50 UTC
Last modified: 18 Jun 2005, 7:34:41 UTC

you must not do that.

ICC automatically uses the standard heades/libraries, and that, overrides its own special headers using faster libraries on Linux. So if you add the standard one explicitly over them the compiler will be confused with the inconsistency; partially uses standard library and partially use Intel's library. Intel's library is much faster than the normal one. for ex, memcpy().

I don't know anything about GXX_ROOT, sorry!!
Luckiest in the world. WMD = Weapon of Mass Distraction.
Click this table.
ID: 124819 · Report as offensive
jrmm22
Volunteer tester

Send message
Joined: 30 Jan 04
Posts: 353
Credit: 24,536,157
RAC: 0
United States
Message 124831 - Posted: 18 Jun 2005, 7:52:16 UTC - in response to Message 124819.  

you must not do that.

ICC automatically uses the standard heades/libraries, and that, overrides its own special headers using faster libraries on Linux. So if you add the standard one explicitly over them the compiler will be confused with the inconsistency; partially uses standard library and partially use Intel's library. Intel's library is much faster than the normal one. for ex, memcpy().

I don't know anything about GXX_ROOT, sorry!!


Ok that got it compiled.. thanks a bunch for the help.. Its just that I read about GXX_LIBS and GXX_ROOT in a Intel Forum..

What's the 'AR=xiar' ?
How can I make it 100% static?

Thanks TMR, you're my hero.
ID: 124831 · Report as offensive
Tetsuji Maverick Rai
Volunteer tester
Avatar

Send message
Joined: 25 Apr 99
Posts: 518
Credit: 90,863
RAC: 0
Japan
Message 124845 - Posted: 18 Jun 2005, 9:20:50 UTC
Last modified: 18 Jun 2005, 9:52:03 UTC

Thank you for your question: Now I could build static 4.45 :) (Before this I could build static 4.27,but couldn't 4.45 :) )

Abort the final linking (it isn't necessary, but it takes a bit time).
Then "cd client", copy & paste the last linking command, add "-static" and remove all "-Wl,-Bdynamic"s (this is important), and invoke that command. Then you'll have a static boinc_client, so just invoke "make". You'll have a static "boinc" there.

on my box, the final modified linking command looks like:

% icpc -static -I../lib -I../api -I../db -I../RSAEuro/source -I../client -I../tools -I../sched -include ../config.h -xP -ipo -O3 -fp-model fast -i-static -o boinc_client boinc_client-acct_mgr.o boinc_client-app.o boinc_client-app_control.o boinc_client-app_graphics.o boinc_client-app_start.o boinc_client-check_state.o boinc_client-client_msgs.o boinc_client-client_state.o boinc_client-client_types.o boinc_client-cs_account.o boinc_client-cs_apps.o boinc_client-cs_benchmark.o boinc_client-cs_cmdline.o boinc_client-cs_data.o boinc_client-cs_files.o boinc_client-cs_prefs.o boinc_client-cs_scheduler.o boinc_client-cs_statefile.o boinc_client-cs_trickle.o boinc_client-dhrystone.o boinc_client-dhrystone2.o boinc_client-file_names.o boinc_client-file_xfer.o boinc_client-gui_rpc_server.o boinc_client-hostinfo_network.o boinc_client-hostinfo_unix.o boinc_client-http.o boinc_client-log_flags.o boinc_client-main.o boinc_client-net_stats.o boinc_client-net_xfer.o boinc_client-pers_file_xfer.o boinc_client-proxy.o boinc_client-scheduler_op.o boinc_client-ss_logic.o boinc_client-time_stats.o boinc_client-whetstone.o -pthread -L/home/tetsuji/boinc/build/latest-core/boinc-0612/lib -lboinc -L/home/tetsuji/boinc/build/latest-core/boinc-0612/RSAEuro/source -lrsaeuro -ldl /usr/lib/libnsl.a /usr/lib/libz.a /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5-20050130/libstdc++.a /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5-20050130/libgcc_eh.a /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5-20050130/libgcc.a -lm -lpthread -lc

looks like you are helping me :)

EDIT:
about xiar, it's a replacement for "ar", which should be used to make a library file from -ipo enabled object files, because they are not the "real" object files "ar" and "ranlib" can handle. I hope you'll have fun with ICC9.0 ;)
Luckiest in the world. WMD = Weapon of Mass Distraction.
Click this table.
ID: 124845 · Report as offensive
jrmm22
Volunteer tester

Send message
Joined: 30 Jan 04
Posts: 353
Credit: 24,536,157
RAC: 0
United States
Message 124891 - Posted: 18 Jun 2005, 14:14:42 UTC - in response to Message 124845.  
Last modified: 18 Jun 2005, 14:44:18 UTC

Thank you for your question: Now I could build static 4.45 :) (Before this I could build static 4.27,but couldn't 4.45 :) )

Abort the final linking (it isn't necessary, but it takes a bit time).
Then "cd client", copy & paste the last linking command, add "-static" and remove all "-Wl,-Bdynamic"s (this is important), and invoke that command. Then you'll have a static boinc_client, so just invoke "make". You'll have a static "boinc" there.

on my box, the final modified linking command looks like:

% icpc -static -I../lib -I../api -I../db -I../RSAEuro/source -I../client -I../tools -I../sched -include ../config.h -xP -ipo -O3 -fp-model fast -i-static -o boinc_client boinc_client-acct_mgr.o boinc_client-app.o boinc_client-app_control.o boinc_client-app_graphics.o boinc_client-app_start.o boinc_client-check_state.o boinc_client-client_msgs.o boinc_client-client_state.o boinc_client-client_types.o boinc_client-cs_account.o boinc_client-cs_apps.o boinc_client-cs_benchmark.o boinc_client-cs_cmdline.o boinc_client-cs_data.o boinc_client-cs_files.o boinc_client-cs_prefs.o boinc_client-cs_scheduler.o boinc_client-cs_statefile.o boinc_client-cs_trickle.o boinc_client-dhrystone.o boinc_client-dhrystone2.o boinc_client-file_names.o boinc_client-file_xfer.o boinc_client-gui_rpc_server.o boinc_client-hostinfo_network.o boinc_client-hostinfo_unix.o boinc_client-http.o boinc_client-log_flags.o boinc_client-main.o boinc_client-net_stats.o boinc_client-net_xfer.o boinc_client-pers_file_xfer.o boinc_client-proxy.o boinc_client-scheduler_op.o boinc_client-ss_logic.o boinc_client-time_stats.o boinc_client-whetstone.o -pthread -L/home/tetsuji/boinc/build/latest-core/boinc-0612/lib -lboinc -L/home/tetsuji/boinc/build/latest-core/boinc-0612/RSAEuro/source -lrsaeuro -ldl /usr/lib/libnsl.a /usr/lib/libz.a /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5-20050130/libstdc++.a /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5-20050130/libgcc_eh.a /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5-20050130/libgcc.a -lm -lpthread -lc

looks like you are helping me :)

EDIT:
about xiar, it's a replacement for "ar", which should be used to make a library file from -ipo enabled object files, because they are not the "real" object files "ar" and "ranlib" can handle. I hope you'll have fun with ICC9.0 ;)


I tried that for 4.27 and didn't work, it complained about GLIBC or some s*t like that. Hopefully if works now!

[edit]
: warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
bash-2.05b$ file boinc_client
boinc_client: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.4.1, dynamically linked (uses shared libs), not stripped

Damn.. lol
[/edit]

Thank you very much for your help, now I've got an incredibly fast Boinc client... (my Drhystone went from 3500 with Metod's client to 3861 with a just-compiled client...)

Do you know how to patch with FFTW sources the seti-app ?

Thanks again!
ID: 124891 · Report as offensive
Tetsuji Maverick Rai
Volunteer tester
Avatar

Send message
Joined: 25 Apr 99
Posts: 518
Credit: 90,863
RAC: 0
Japan
Message 124898 - Posted: 18 Jun 2005, 15:03:33 UTC
Last modified: 18 Jun 2005, 15:07:40 UTC

If you want to patch fftw, you can get the patch here

If you want to patch for IPP (Intel's Integrated Performance Primitives), my patch is here(readme included.) IPP is available for free for Linux (non-commercial license) here.

On P4 (Northwood, Prescott), IPP is about 8-10% faster than fftw.
Luckiest in the world. WMD = Weapon of Mass Distraction.
Click this table.
ID: 124898 · Report as offensive
jrmm22
Volunteer tester

Send message
Joined: 30 Jan 04
Posts: 353
Credit: 24,536,157
RAC: 0
United States
Message 124916 - Posted: 18 Jun 2005, 16:11:07 UTC - in response to Message 124898.  


: warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
bash-2.05b$ file boinc_client
boinc_client: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.4.1, dynamically linked (uses shared libs), not stripped

Damn.. lol


I'm sorry, I just can't get a static CC... This is definitely not my week...

Thanks
ID: 124916 · Report as offensive
Tetsuji Maverick Rai
Volunteer tester
Avatar

Send message
Joined: 25 Apr 99
Posts: 518
Credit: 90,863
RAC: 0
Japan
Message 124933 - Posted: 18 Jun 2005, 16:51:16 UTC

I'm still optimizing my client using VTune. I'm not sure how faster it will be.

Your problem will be fixed soon. But why do you need statically linked binaries? For personal use, dynamically linked binaries are enough, and they will save memory.
Luckiest in the world. WMD = Weapon of Mass Distraction.
Click this table.
ID: 124933 · Report as offensive
Metod, S56RKO
Volunteer tester

Send message
Joined: 27 Sep 02
Posts: 309
Credit: 113,221,277
RAC: 9
Slovenia
Message 124955 - Posted: 18 Jun 2005, 17:41:39 UTC - in response to Message 124845.  


Abort the final linking (it isn't necessary, but it takes a bit time).
Then "cd client", copy & paste the last linking command, add "-static" and remove all "-Wl,-Bdynamic"s (this is important), and invoke that command. Then you'll have a static boinc_client, so just invoke "make". You'll have a static "boinc" there.


I have a interesting story in addition to Tetsuji's instructions above.

The automake/configure stuff used for building BOINC CC and SETI/BOINC likes to mess up the static/shared linking. If you pass -static in CFLAGS to configure, it'll do its best to ignore it. It actually only matters at the final stage of linking (which Tetsuji described above), but that's still not nice though.

You can use Intel's option -fast if all the implied options are not interfering with what you want to do. In this case, the linking is done almost completely static. Except for one library on my Debian Sarge host: the jpeg library gets linked explicitly dynamically. The binary the is a ghost one - if you run ldd seti_boinc, you'll get an error message saying that such file doesn't exist.

On the other hand, if you're about normal shared binary, jpeg library will get linked staticaly. At least on my Debian Sarge.
Metod ...
ID: 124955 · Report as offensive
Tetsuji Maverick Rai
Volunteer tester
Avatar

Send message
Joined: 25 Apr 99
Posts: 518
Credit: 90,863
RAC: 0
Japan
Message 124956 - Posted: 18 Jun 2005, 17:54:45 UTC - in response to Message 124955.  


I have a interesting story in addition to Tetsuji's instructions above.

The automake/configure stuff used for building BOINC CC and SETI/BOINC likes to mess up the static/shared linking. If you pass -static in CFLAGS to configure, it'll do its best to ignore it. It actually only matters at the final stage of linking (which Tetsuji described above), but that's still not nice though.

You can use Intel's option -fast if all the implied options are not interfering with what you want to do. In this case, the linking is done almost completely static. Except for one library on my Debian Sarge host: the jpeg library gets linked explicitly dynamically. The binary the is a ghost one - if you run ldd seti_boinc, you'll get an error message saying that such file doesn't exist.

On the other hand, if you're about normal shared binary, jpeg library will get linked staticaly. At least on my Debian Sarge.


Actually -static option doesn't work as expected on boinc/seti_boinc :)

Yes -fast option is useful under some circumstances, but as I prefer to use basic options independently (-fast implies some options, -O3 -static -xP IIRC) I don't like -fast option.....that's why I use the way I mentioned :) I want to give options explicitly to tell the compiler what to do.
Luckiest in the world. WMD = Weapon of Mass Distraction.
Click this table.
ID: 124956 · Report as offensive
Metod, S56RKO
Volunteer tester

Send message
Joined: 27 Sep 02
Posts: 309
Credit: 113,221,277
RAC: 9
Slovenia
Message 124958 - Posted: 18 Jun 2005, 17:58:05 UTC - in response to Message 124956.  

Actually -static option doesn't work as expected on boinc/seti_boinc :)


It does for me and ICC 8.1. Plus it makes the '-static' option invisible to the automake/configure stuff so that it doesn't interfere.

But then, YMMV.
Metod ...
ID: 124958 · Report as offensive
Tetsuji Maverick Rai
Volunteer tester
Avatar

Send message
Joined: 25 Apr 99
Posts: 518
Credit: 90,863
RAC: 0
Japan
Message 124972 - Posted: 18 Jun 2005, 19:20:55 UTC - in response to Message 124958.  
Last modified: 18 Jun 2005, 19:52:24 UTC

Actually -static option doesn't work as expected on boinc/seti_boinc :)


It does for me and ICC 8.1. Plus it makes the '-static' option invisible to the automake/configure stuff so that it doesn't interfere.

But then, YMMV.


I mean -static option in CFLAGS/CXXFLAGS doesn't appear only in the final link command, because I didn't edit configure/automake stuff.. How did you edit them? It's as though boinc/seti_boinc's configure/Makefile prevented us from making statically linked binaries :)

BTW I am trying PGO on Windows$ on the second machine....but I don't hope it so much. And now RH9 has been installed and at the same time my Windows has a trouble!! lol Anyway my first machine is now a triple boot machine....too maniac.
Luckiest in the world. WMD = Weapon of Mass Distraction.
Click this table.
ID: 124972 · Report as offensive
Profile doublechaz

Send message
Joined: 17 Nov 00
Posts: 90
Credit: 76,455,865
RAC: 735
United States
Message 133093 - Posted: 6 Jul 2005, 1:09:35 UTC

I've been trying my hand at this, but I'm not sure I'm doing things at all correctly as far as the fftw patch. I find 6 fftw files on sourceforge. I guess I am supposed to drop those in on top of my seti source, but is that all that has to be done? I'm used to unified diffs. I wonder this because the seti I built using those six files is drastically slower than the default source on all the CPUs I've tested. Hm. Perhaps I'm working with seti source that is too new compared to when those six files were created? I'm using 4.18. Any info would be much appreciated.
ID: 133093 · Report as offensive
Profile StokeyBob
Avatar

Send message
Joined: 31 Aug 03
Posts: 848
Credit: 2,218,691
RAC: 0
United States
Message 133132 - Posted: 6 Jul 2005, 2:03:49 UTC - in response to Message 133093.  

I've been trying my hand at this, but I'm not sure I'm doing things at all correctly as far as the fftw patch. I find 6 fftw files on sourceforge. I guess I am supposed to drop those in on top of my seti source, but is that all that has to be done? I'm used to unified diffs. I wonder this because the seti I built using those six files is drastically slower than the default source on all the CPUs I've tested. Hm. Perhaps I'm working with seti source that is too new compared to when those six files were created? I'm using 4.18. Any info would be much appreciated.


I don't know anything about compiling but I do remember Tetsuji offering all the bits and pieces needed to get it done. I think you may find things that will help in this thread.

Will you make optimized windows client if I give you source?

P.S. I think he was using 8. something at the time.
ID: 133132 · Report as offensive
Profile doublechaz

Send message
Joined: 17 Nov 00
Posts: 90
Credit: 76,455,865
RAC: 735
United States
Message 133155 - Posted: 6 Jul 2005, 2:26:33 UTC

Sorry, I'm working in Linux only.

I didn't notice anywhere that said anything like 'get the patch here, or get my patched source here'. Just stuff about which library they were linking against, and which compiler and options. I'm trying to use gcc 3.4.3, fftw, and The June 30 4.18 source
ID: 133155 · Report as offensive
Profile StokeyBob
Avatar

Send message
Joined: 31 Aug 03
Posts: 848
Credit: 2,218,691
RAC: 0
United States
Message 133166 - Posted: 6 Jul 2005, 2:35:32 UTC - in response to Message 133155.  
Last modified: 6 Jul 2005, 2:36:00 UTC

Sorry, I'm working in Linux only.

I didn't notice anywhere that said anything like 'get the patch here, or get my patched source here'. Just stuff about which library they were linking against, and which compiler and options. I'm trying to use gcc 3.4.3, fftw, and The June 30 4.18 source


I see a bunch of "get the patch here" and stuff about 8 post earlier in this thread but I suppose you have already seen that.
ID: 133166 · Report as offensive
Profile doublechaz

Send message
Joined: 17 Nov 00
Posts: 90
Credit: 76,455,865
RAC: 735
United States
Message 133204 - Posted: 6 Jul 2005, 3:37:12 UTC

Sorry, I should have been more clear. That post is about the six loose files I mentioned. I'm only guessing at how to use them. I'm used to getting a single text file that you feed to a program and it modifies a whole slew of original files throughout your source tree making all needed changes to fully incorporate the new files.

When I build the stock seti source with a few compiler settings I get 130 minutes on my test machine instead of 150 minutes. But when I build with those six files placed in my source tree with any combination of settings I get at best 220 minutes. Not exactly what I was hoping for.

So perhaps the stuff in the tree above those six files is related? I don't know. I didn't figure out how to find any documentation on the contents of that sourceforge cvs repository. Hmm.
ID: 133204 · Report as offensive
1 · 2 · Next

Message boards : Number crunching : ICC v9.0


 
©2024 University of California
 
SETI@home and Astropulse are funded by grants from the National Science Foundation, NASA, and donations from SETI@home volunteers. AstroPulse is funded in part by the NSF through grant AST-0307956.