Message boards :
Number crunching :
ICC v9.0
Message board moderation
Author | Message |
---|---|
jrmm22 Send message Joined: 30 Jan 04 Posts: 353 Credit: 24,536,157 RAC: 0 |
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 |
Tetsuji Maverick Rai Send message Joined: 25 Apr 99 Posts: 518 Credit: 90,863 RAC: 0 |
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. |
Tetsuji Maverick Rai Send message Joined: 25 Apr 99 Posts: 518 Credit: 90,863 RAC: 0 |
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. |
jrmm22 Send message Joined: 30 Jan 04 Posts: 353 Credit: 24,536,157 RAC: 0 |
You'd better compile as a normal user; not root. 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! |
Tetsuji Maverick Rai Send message Joined: 25 Apr 99 Posts: 518 Credit: 90,863 RAC: 0 |
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. |
jrmm22 Send message Joined: 30 Jan 04 Posts: 353 Credit: 24,536,157 RAC: 0 |
you must not do that. 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. |
Tetsuji Maverick Rai Send message Joined: 25 Apr 99 Posts: 518 Credit: 90,863 RAC: 0 |
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. |
jrmm22 Send message Joined: 30 Jan 04 Posts: 353 Credit: 24,536,157 RAC: 0 |
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 :) ) 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! |
Tetsuji Maverick Rai Send message Joined: 25 Apr 99 Posts: 518 Credit: 90,863 RAC: 0 |
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. |
jrmm22 Send message Joined: 30 Jan 04 Posts: 353 Credit: 24,536,157 RAC: 0 |
I'm sorry, I just can't get a static CC... This is definitely not my week... Thanks |
Tetsuji Maverick Rai Send message Joined: 25 Apr 99 Posts: 518 Credit: 90,863 RAC: 0 |
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. |
Metod, S56RKO Send message Joined: 27 Sep 02 Posts: 309 Credit: 113,221,277 RAC: 9 |
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 ... |
Tetsuji Maverick Rai Send message Joined: 25 Apr 99 Posts: 518 Credit: 90,863 RAC: 0 |
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. |
Metod, S56RKO Send message Joined: 27 Sep 02 Posts: 309 Credit: 113,221,277 RAC: 9 |
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 ... |
Tetsuji Maverick Rai Send message Joined: 25 Apr 99 Posts: 518 Credit: 90,863 RAC: 0 |
Actually -static option doesn't work as expected on boinc/seti_boinc :) 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. |
doublechaz Send message Joined: 17 Nov 00 Posts: 90 Credit: 76,455,865 RAC: 735 |
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. |
StokeyBob Send message Joined: 31 Aug 03 Posts: 848 Credit: 2,218,691 RAC: 0 |
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. |
doublechaz Send message Joined: 17 Nov 00 Posts: 90 Credit: 76,455,865 RAC: 735 |
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 |
StokeyBob Send message Joined: 31 Aug 03 Posts: 848 Credit: 2,218,691 RAC: 0 |
Sorry, I'm working in Linux only. 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. |
doublechaz Send message Joined: 17 Nov 00 Posts: 90 Credit: 76,455,865 RAC: 735 |
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. |
©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.