Message boards :
Number crunching :
Compiling Applications for Linux
Message board moderation
Previous · 1 · 2 · 3 · 4 · 5 · Next
Author | Message |
---|---|
Claggy Send message Joined: 5 Jul 99 Posts: 4654 Credit: 47,537,079 RAC: 4 |
Is there someplace I can just download a tarball of "branches/sah_v7_opt"? I googled but can't seem to find it. Just do: svn checkout https://setisvn.ssl.berkeley.edu/svn/branches/sah_v7_opt http://setiathome.berkeley.edu/sah_porting.php Access the SVN repository directly, e.g. with a command like There are tarballs there, but they are a year out of date. Claggy |
jason_gee Send message Joined: 24 Nov 06 Posts: 7489 Credit: 91,093,184 RAC: 0 |
yeah, you won't be able to hurt anything with a normal checkout like Claggy's indicated. Was delayed here (as usual), but 680 located and Linux machine ready for some midnight surgery. "Living by the wisdom of computer science doesn't sound so bad after all. And unlike most advice, it's backed up by proofs." -- Algorithms to live by: The computer science of human decisions. |
Claggy Send message Joined: 5 Jul 99 Posts: 4654 Credit: 47,537,079 RAC: 4 |
Thanks. Loading rapidsvn allowed me to checkout that directory. I've seen that error before, i think it was because eithier i hadn't built the boinc libs, or i was pointing at the wrong directory, i'll run through the steps I use to build Boinc on Arm/x86_64, the Boinc libs, and apps (not that I've had much success with apps yet). Claggy |
jason_gee Send message Joined: 24 Nov 06 Posts: 7489 Credit: 91,093,184 RAC: 0 |
Up and running again, older ubuntu x64 12.04 LTS (just finished doing all the updates). Going to walk through a quick clean checkout and build of stock mb7 here first, see if anything's up there first, then all going well will try the same on Xbranch and commit any tweaks needed. "Living by the wisdom of computer science doesn't sound so bad after all. And unlike most advice, it's backed up by proofs." -- Algorithms to live by: The computer science of human decisions. |
petri33 Send message Joined: 6 Jun 02 Posts: 1668 Credit: 623,086,772 RAC: 156 |
http://boinc.berkeley.edu/trac/wiki/SourceCodeGit
To overcome Heisenbergs: "You can't always get what you want / but if you try sometimes you just might find / you get what you need." -- Rolling Stones |
Claggy Send message Joined: 5 Jul 99 Posts: 4654 Credit: 47,537,079 RAC: 4 |
To get the Software prerequisites to build Boinc (probably only need the ones in bold for building apps): sudo apt-get install git make m4 libtool autoconf pkg-config automake g++ gcc sudo apt-get install libcurl4-openssl-dev libssl-dev libwxgtk2.8-dev libsqlite3-dev sudo apt-get install gettext docbook2x docbook-xml libxml2-utils zlib1g-dev libsm-dev libice-dev libxmu-dev libxi-dev sudo apt-get install libx11-dev libnotify-dev freeglut3-dev libgtk2.0-dev libmysqlclient-dev python libfcgi-dev libjpeg8-dev sudo apt-get install libxss-dev libxcb-util0-dev libxcb-dpms0-dev libxext-dev libfftw3-dev subversion libstdc++6-4.6-dev (or libstdc++6-4.7-dev or libstdc++6-4.8-dev) http://boinc.berkeley.edu/trac/wiki/SoftwarePrereqsUnix How to build Boinc (for running from the home directory): git clone git://boinc.berkeley.edu/boinc-v2.git boinc cd boinc git checkout client_release/7.2/7.2.47; git status ./_autosetup ./configure --disable-server --enable-client --with-boinc-alt-platform=arm-unknown-linux-gnueabihf CXXFLAGS="-O3 " or for x86_64: ./configure --disable-server --enable-client CXXFLAGS="-O3 " make cd packages/generic/sea/ make copy and paste boinc_7.2.47_armv6l-unknown-linux-gnueabihf.sh (or boinc_7.2.47_x86_64-pc-linux-gnu.sh) into home directory sh boinc_7.2.47_armv6l-unknown-linux-gnueabihf.sh (or boinc_7.2.47_x86_64-pc-linux-gnu.sh) (you may need to change the permissions of the BOINC directory for it to run properly) http://boinc.berkeley.edu/trac/wiki/CompileClient How to build sample apps/libraries that are required for apps: cd boinc (you need to have got the boinc source from above) ./_autosetup ./configure --disable-client --disable-manager --disable-server LDFLAGS=-static-libgcc make cd samples/example_app ln -s `g++ -print-file-name=libstdc++.a` make http://boinc.berkeley.edu/trac/wiki/CompileAppLinux To build Seti apps: svn checkout https://setisvn.ssl.berkeley.edu/svn/seti_boinc svn checkout https://setisvn.ssl.berkeley.edu/svn/branches cd seti_boinc or branches ./_autosetup or sh ./_autosetup ./configure --disable-server LDFLAGS=-static-libgcc BOINCDIR=${HOME}/boinc (and lots of other options to make the app any good) make If i've missed any steps please correct me. Claggy |
jason_gee Send message Joined: 24 Nov 06 Posts: 7489 Credit: 91,093,184 RAC: 0 |
For stock multibeam, after making Boinc libs, then in seti_boinc (which is multibeam_V7) running ./_autosetup ./configure --disable-server --disable-graphics --enable-fast-math make clean make *almost* works, BUT FFTW configuration seems to be damaged, so a build isn't produced. Will have to do some digging, but I'm guessing that's probably collateral damage from Android beta juggling. Will probably query that in dues course, if I can't find the configure options (or they are broken). "Living by the wisdom of computer science doesn't sound so bad after all. And unlike most advice, it's backed up by proofs." -- Algorithms to live by: The computer science of human decisions. |
Claggy Send message Joined: 5 Jul 99 Posts: 4654 Credit: 47,537,079 RAC: 4 |
For stock multibeam, after making Boinc libs, then in seti_boinc (which is multibeam_V7) running I've managed to build a Stock 7.28 x86_64 app on my Ubuntu 12.04 host today using the above (It actually built two, a debug build as well), I've already benched the debug build, it was slow (the normal build didn't like the parameters, so i'm doing a bench of that on it's own) Claggy |
Claggy Send message Joined: 5 Jul 99 Posts: 4654 Credit: 47,537,079 RAC: 4 |
Meanwhile on one of my Parallella's building AKv8 fails with (same as on the Pi): In file included from main.cpp:87:0: analyzeFuncs.h: At global scope: analyzeFuncs.h:76:9: error: ‘__m128’ does not name a type typedef __m128 vFloat; ^ analyzeFuncs.h:77:9: error: ‘__m128i’ does not name a type typedef __m128i vUInt32; ^ analyzeFuncs.h:78:9: error: ‘__m128i’ does not name a type typedef __m128i vSInt32; ^ analyzeFuncs.h:79:9: error: ‘__m128i’ does not name a type typedef __m128i vUInt8; ^ analyzeFuncs.h:80:9: error: ‘__m128d’ does not name a type typedef __m128d vDouble; ^ make[2]: *** [seti_boinc-main.o] Error 1 make[1]: *** [all-recursive] Error 1 Claggy |
jason_gee Send message Joined: 24 Nov 06 Posts: 7489 Credit: 91,093,184 RAC: 0 |
yeah probably defaults to using ourra fft on android (which is slow). To confirm I'll have to see what happen if I try force USE_FFTWF here. If it builds I can probably take a look at the configure macros for easy fixes, once I re-familiarise completely. "Living by the wisdom of computer science doesn't sound so bad after all. And unlike most advice, it's backed up by proofs." -- Algorithms to live by: The computer science of human decisions. |
Josef W. Segur Send message Joined: 30 Oct 99 Posts: 4504 Credit: 1,414,761 RAC: 0 |
The detailed vectorizations Alex Kan did for Power PC and x86 (and later vectorized additions) would need to be refactored for ARM to get an optimized AKv8 build for Parallella or Pi, and suitable preprocessor defines added to enable that code. For most parts of the code, the original non-vectorized code derived from stock 5.13 is still in place so could be enabled at least temporarily for code sections not yet refactored. It will be a considerable amount of work, but probably worthwhile. Joe |
jason_gee Send message Joined: 24 Nov 06 Posts: 7489 Credit: 91,093,184 RAC: 0 |
Okey doke, seemed to get 7.28 (stock multibeam) building here (untested binary) Ubuntu 12.04 LTS x64, fully patched. Biggest issue here was that Ubuntu's repository fftw3 doesn't appear to put fftw libraries in the standard places, so wasn't being picked up by MB 7's .configure script. Rather than dig for it to make links to an old lib, I just built it to the standard lcoation as per fftw docs instead. I did both the double precision and and single float ones just for completion. Ignoring checking out / extracting Sequence was: #1) make and install fftw libraries and headers: ( location I used ~/seti/fftw) ./configure make sudo make install make clean ./configure --enable-float --enable-type-prefix make sudo make install #2 make and install boinc libs: ( location I used ~/seti/boinc) ./_autosetup ./configure --disable-server --disable-client --disable-manager --enable-optimize make sudo make install #3) make seti client: ( location I used ~/seti/seti_boinc) ./_autosetup ./configure --disable-server --disable-graphics --enable-fast-math --enable-static Binary produced in the client folder is called setiathome-7.28.x86_64-pc-linux-gnu Xbranch will have some parts of the process simpler, because of not requiring fftw at all, and some more challenging due to Cuda toolkit variations, some boincapi instability, and possible system header changes to look into if necessary. I'll wade through that in the next day or so, but I don't expect any particularly challenging roadblocks. "Living by the wisdom of computer science doesn't sound so bad after all. And unlike most advice, it's backed up by proofs." -- Algorithms to live by: The computer science of human decisions. |
jason_gee Send message Joined: 24 Nov 06 Posts: 7489 Credit: 91,093,184 RAC: 0 |
The detailed vectorizations Alex Kan did for Power PC and x86 (and later vectorized additions) would need to be refactored for ARM to get an optimized AKv8 build for Parallella or Pi, and suitable preprocessor defines added to enable that code. For most parts of the code, the original non-vectorized code derived from stock 5.13 is still in place so could be enabled at least temporarily for code sections not yet refactored. It will be a considerable amount of work, but probably worthwhile.Joe Joe, Alex's 'Hand' vectorisation there looks and feels largely heuristically based. Have you examined in any detail if the bulk alignment macros could be generated instead of hand copy-pasted etc ? "Living by the wisdom of computer science doesn't sound so bad after all. And unlike most advice, it's backed up by proofs." -- Algorithms to live by: The computer science of human decisions. |
Josef W. Segur Send message Joined: 30 Oct 99 Posts: 4504 Credit: 1,414,761 RAC: 0 |
The detailed vectorizations Alex Kan did for Power PC and x86 (and later vectorized additions) would need to be refactored for ARM to get an optimized AKv8 build for Parallella or Pi, and suitable preprocessor defines added to enable that code. For most parts of the code, the original non-vectorized code derived from stock 5.13 is still in place so could be enabled at least temporarily for code sections not yet refactored. It will be a considerable amount of work, but probably worthwhile.Joe I guess you're referring to the paligned pulse finding designed for Core 2 with macros which expand to provide 16 foldarrayby3, 64 foldarrayby4, and 256 foldarrayby5 functions. All that's needed only because the palign instruction requires immediate operands for the amount of shifting it does. Alex's PPC code uses Altivec shifting which can work from a variable so doesn't need multiple forms. So depending on what ARM has available that approach might need either few or many functions. As it happens I wrote an alternative pulse finding approach a few months ago which is both simpler and has tested out a little faster for x86. It only requires SSE so it works well on a broad range of Intel and AMD systems. I have no idea which approach will be best on ARM. Joe |
Claggy Send message Joined: 5 Jul 99 Posts: 4654 Credit: 47,537,079 RAC: 4 |
One of these listed above probably has std_fixes.h in it. No, none of them have std_fixes.h in them, the Boinc Git repository has it, the two steps you need to cure that error is one, get it with: git clone git://boinc.berkeley.edu/boinc-v2.git boinc and two, during your configure is to point at the correct location, ie for me it is: ./configure --disable-server LDFLAGS=-static-libgcc BOINCDIR=${HOME}/boinc Claggy |
Claggy Send message Joined: 5 Jul 99 Posts: 4654 Credit: 47,537,079 RAC: 4 |
My Stock 7.28 build was v slow compared to 7.01_x86_64 (not surprising as i didn't try to optimise it, had around 26 to 47% of the speed of 7.01: (I suppose that makes it a perfect candidate give to the project to get credit rebalanced, just a few more apps to de-optimise now ;-)For stock multibeam, after making Boinc libs, then in seti_boinc (which is multibeam_V7) running ===================================================================== The 7.28 stderr.txt: shmget in attach_shmem: Invalid argument The Stock 7.01 stderr.txt: shmget in attach_shmem: Invalid argument The fftw version in use is only fftw 3.3 and not the later fftw3.3.3 or 3.3.4: (fftw-3.3 fftwf_wisdom #x08ac4c16 #x457005cc #xea102cf7 #xd7ff9038 Claggy |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
Wow, a lot has been happening. I am wondering: who used to do the public Linux builds? I have a feeling that, in this situation at least, I may be more useful as a tester rather than a developer - I don't mind keeping up with various builds. Getting a successful build is one thing, making an optimised build that's better than what I have now might be something else. Main reason I'm wanting to do this is that I'm quite surprised at the drop in performance migrating from WinXP, especially for MB CUDA (x41g vs x41zc). I've done switches between Windows and Linux before, but only on less powerful CPU/GPUs. Out of the list of dependencies that Claggy had (at least in bold), I was only missing libfftw3-dev. I also noticed I'm using the master copy instead of the 7.2.47 release, so that may be complicating things as well for me, but I'm too tired to try again right now - going to bed after this. If Guy is successful with his work, I'll probably make a Fedora 19 VM to give try building there - given that I seem to be such a novice at this, step-by-step instructions are most welcome at this point. Especially since I'm more familiar with Debian-based systems than Red Hat. I also noticed that what looks like blanking work is being done for AstroPulse and the commit notes suggest that various optimising switches are in flux, so that complicates things. Still, the prospect of minimal CPU usage on GPU applications even with high-blanking tasks sounds exciting. Soli Deo Gloria |
Claggy Send message Joined: 5 Jul 99 Posts: 4654 Credit: 47,537,079 RAC: 4 |
I am wondering: who used to do the public Linux builds? Eric does the Public builds, i think he is best compiler guru here at getting the best out of the Stock builds, i'm on the other hand a Noob at compiling apps/clients, only been doing it for a few months, and that was my first attempt at building a Stock x86_64 app, and i purposely didn't try to use any extra optimisations, all my attempts have been to just compile an Arm app, anything as long as it works, so don't be put off. I've tried using --enable-fast-math, but it looks as if it'll be slower, just, i'd love to know what Eric puts into his configure, i'll have to make do with what Debian does (suitably modified, hopefully) I have a feeling that, in this situation at least, I may be more useful as a tester rather than a developer - I don't mind keeping up with various builds. Getting a successful build is one thing, making an optimised build that's better than what I have now might be something else. Main reason I'm wanting to do this is that I'm quite surprised at the drop in performance migrating from WinXP, especially for MB CUDA (x41g vs x41zc). I've done switches between Windows and Linux before, but only on less powerful CPU/GPUs. If you want to use 7.2.47 libs just checkout that tag: git checkout client_release/7.2/7.2.47; git status If Guy is successful with his work, I'll probably make a Fedora 19 VM to give try building there - given that I seem to be such a novice at this, step-by-step instructions are most welcome at this point. Especially since I'm more familiar with Debian-based systems than Red Hat. Claggy |
©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.