While I'm not much of a C/C++ programmer, i will surely help in making of cuda/opengl-enabled ebuilds for Gentoo Linux.
(You have my Bow)
|
|
|
The ebuild-9999 is bad, don't use it. How is it bad? More importantly, though, without losing focus of my original question, what else do I need to do besides update the makefile? Why it is bad ? Well, i looked at the source and i didn't like it, so i took the 0.3.13 one. I have no idea what do You need. I downloaded source, patched it and **it just worked** with 0.3.13 ebuild on my Gentoo AMD64. I only changed the digests in Manifest to match added/modified files.
|
|
|
I modified my makefile for bitcoin-9999.ebuild for svn Bitcoin and then LC_ALL=C TZ=UTC0 diff -Naur makefile.unix makefile.gentoo > files/bitcoin-9999-Makefile.patch ebuild bitcoin-9999.ebuild digest emerge bitcoin The emerge failed. What else do I need to do besides update the makefile? The ebuild-9999 is bad, don't use it. I'm using a modified 0.3.13 ebuild all the time - it works for SVN rev 158 source too. Also, You need to create additional separate makefile for CUDA version, place it in the files/ directory and then put an digest entry for it in the Manifest. At least this is what i did. For me, it emerges successfully, however the CUDA header & cpp files are omitted. So i need a better makefile.
|
|
|
Here is my Gentoo makefile, if anybody is interested. http://pastebin.com/73aFW42pAlso, i grepped all the CMake makefiles for "gpucommon.h" and "bitcoinminercuda.h". No results. So i'm not so sure the CMakefiles are going to work at all.
|
|
|
So that points to you not using the CMake build files. So your first step should be to use cmake to generate appropriate makefiles with CUDA enabled and then use those to make bitcoin.
I tried that at first, but build failed. This is the debug output i got: bitcoin-svn-rev-158 # make bitcoind -- Found BerkeleyDB: /usr/lib64/libdb.so -- Configuring done -- Generating done -- Build files have been written to: /home/Bitcoin/bitcoin-svn-rev-158 [ 5%] Building NVCC (Device) object cmake-bitcoind/./bitcoind_generated_bitcoinminercuda.cu.o Scanning dependencies of target bitcoind [ 11%] Building CXX object cmake-bitcoind/CMakeFiles/bitcoind.dir/__/src/db.cpp.o In file included from /home/Bitcoin/bitcoin-svn-rev-158/src/db.cpp:5: /home/Bitcoin/bitcoin-svn-rev-158/src/headers.h:45:20: error: db_cxx.h: Nie ma takiego pliku ani katalogu In file included from /home/Bitcoin/bitcoin-svn-rev-158/src/headers.h:123, from /home/Bitcoin/bitcoin-svn-rev-158/src/db.cpp:5: /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:26: error: ‘DbEnv’ does not name a type /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:37: error: ISO C++ forbids declaration of ‘Db’ with no type /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:37: error: expected ‘;’ before ‘*’ token /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:39: error: ‘DbTxn’ was not declared in this scope /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:39: error: template argument 1 is invalid /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:39: error: template argument 2 is invalid /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:152: error: ISO C++ forbids declaration of ‘Dbc’ with no type /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:152: error: expected ‘;’ before ‘*’ token /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:163: error: expected `;' before ‘int’ /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:163: error: ‘Dbc’ has not been declared /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:202: error: ISO C++ forbids declaration of ‘DbTxn’ with no type /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:202: error: expected ‘;’ before ‘*’ token /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:210: error: expected `;' before ‘public’ /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:163: error: ‘DB_NEXT’ was not declared in this scope /home/Bitcoin/bitcoin-svn-rev-158/src/db.h: In member function ‘bool CDB::Read(const K&, T&)’: /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:54: error: ‘pdb’ was not declared in this scope /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:61: error: ‘Dbt’ was not declared in this scope (...) (...)
However that approach won't work with Gentoo ebuild/emerge system, so i abandoned it. EDIT: This doesn't seem correct. How does GPL come into play when Bitcoin is under MIT license?
He included GPL sourcecode in the CUDA-patch.
|
|
|
Well i debugged the compile process a little, and concluded that i have wrong makefile, which does not include gpucommon.h/cpp and bitcoinminercuda.h/cpp, and does not convert them to objects. However, after adding them to makefile, HEADERS=(...) cuda/bitcoinminercuda.h cuda/cudashared.h gpucommon/gpucommon.h
all: bitcoind
OBJS= \ (...) obj/gpucommon.o \ obj/bitcoinminercuda.o
, make complains that it "cannot find rules to make object. Stop." EDIT: make: *** No rule to make target `obj/gpucommon.o', needed by `bitcoin'. Stop.
. I know, I'm not a C++ programmer.
|
|
|
Here it is: SVN Rev 158, patched & cmaked. However, still not working. http://www.tinyurl.pl/?KMsRtkuRMaybe somebody will figure out what i did wrong. BTW, Forget any hope that it will work under VirtualBox. No way.
|
|
|
UPDATE:
I tried everything again with bitcoind. The same results. 1200khash/sec with -gpu switch, and 4700 khash/sec without (and 8500 khash/sec with -4way switch).
So the client seems not to be using GPU at all.
BTW, I have NVIDIA Geforce 9800GT
EDIT: It would be really useful if the GPU client displayed any debugging info, because i don't even know if my card was detected, if CUDA is enabled properly etc etc.
|
|
|
OK, now I'm confused.
1. I installed the NVIDIA developer drivers 2. I installed NVIDIA cuda toolkit 3. I downloaded the svn rev. 158 source 4. I patched the source 5. I used CMAKEfiles on the source to make it buildable 6. I compiled / emerged everything
And the result is that on GUI version i get 1200khash/sec always, it does not matter if i used -gpu, -aggresion, -gputhreads, or any other switch. It seems that the client is not working on graphics card, it is just using CPU, and single core only.
Also, the client in graphics mode keeps breaking wxGTK/wxWidgets (wxWidgets often popup with some debug messages). But that is bearable.
---- EDIT: I guess i will try compiling only the daemon now and tell You how it went.
|
|
|
can you please post the ebuild?
I deleted it already and now i have to re-do it again. It may take a day or 2.
|
|
|
Do i need to use a special version of graphics drivers to get the OpenCL client working ?
|
|
|
Given that scientists cannot create much of a quantum computer, I don't see how the government can possess that kind of technology.
Be careful, because the price for thinking that You know what exactly is going on and being wrong is terrible. I really wouldn't be surprised if government alread had working prototypes of quantum computers. If they have, bitcoin surely comes next (after decrypting russian/iran/political enemies' hard disks) in line to be busted. No, because those resources are nearly always in demand from multiple agencies, and spread across multiple agencies with multiple missions to begin with. Neither the Federal Reserve nor the US Treasury has any direct access to these kind of resources.
The main grip the govern.m-ent (read: F-E-D) has over people is the money supply. If they start to lose that grip, be sure they will invest every possible resource they have, to save it. Don't be foolish - if bitcoin really becomes a threat to them, they won't hesitate to use quantum computers (if they have them), ban bitcoin usage, ban T-O-R usage or even call a terrorist & send to g.u.a.n.t.a.n.a.m.o every single person who uses any of this technologies. Bah, they even may shut down the internet (law just for this have been passed already) just to take care of that single threat. Yes, I'm serious. EDIT: BTW, I don't know if You realize, but the hegemony of U-S-A comes mostly from controlling money supply of the world through Oil (as Oil can only be bought for dollars). They use dollars as a way of collecting tax from the rest of the world using ever-inflating currency, but that's another long story. The point is, g.ove-rnment will never, ever let anyone take that power away from them. This is even more serious than with oil. They would actually repeat it all over again: attack a country, torture & kill innocents or even kill its own citizens just to take down a threat to the d.ol-lar currency...
|
|
|
You are not taking all circumstances under consideration..
And the most important one is: QUANTUM COMPUTERS.
The goverment always has everything much faster than the rest of the world (example: they had Internet at least 10-15 years before the public). Scientists currently say, that quantum computers are a matter of 10 years. So what if government is 10 years ahead of everybody else, and they have the Quantums already ?
I think this possibility should be SERIOUSLY taken into consideration. Perhaps the length of bitcoin cryptographic keys should be increased 10-fold to account for that (but this won't be enough to protect us from quantums anyway, so that may be actually pointless).
EDIT: However, increasing the length of crypto keys 10-fold would surely postpone the inevitable downfall of all hashes & current cryptographic algorithms in case of quantum comps are invented. That would give us bitcoiners more time to adjust & perhaps invent some defense.
|
|
|
It seems I used the normal driver.... Everything is clear now.
|
|
|
Yeah i tried using the -gpu switch, nothing happened. Well, actually perhaps something happened - i think the speed was cut in half - i had only 2200khash/sec instead of normal 4500khash/sec or 8500 khash/sec (-4way switch).
I guess then will try the new drivers tomorrow.
|
|
|
UPDATE:
I compiled it successfully using a modified ebuild. It launches and seems to generally work, but at the same speed as normal.
I have 195.36.24 version of NVIDIA drivers (too old perhaps ?).
I guess i will wait for the official CUDA build.
|
|
|
Nah, still can't compile it. Successfully emerged cuda-toolkit, patched source (rev 158), used the CMake files (also a success), but compilation fails with following errors: bitcoin-svn-rev-158 # make bitcoind -- Found BerkeleyDB: /usr/lib64/libdb.so -- Configuring done -- Generating done -- Build files have been written to: /home/Bitcoin/bitcoin-svn-rev-158 [ 5%] Building NVCC (Device) object cmake-bitcoind/./bitcoind_generated_bitcoinminercuda.cu.o Scanning dependencies of target bitcoind [ 11%] Building CXX object cmake-bitcoind/CMakeFiles/bitcoind.dir/__/src/db.cpp.o In file included from /home/Bitcoin/bitcoin-svn-rev-158/src/db.cpp:5: /home/Bitcoin/bitcoin-svn-rev-158/src/headers.h:45:20: error: db_cxx.h: Nie ma takiego pliku ani katalogu In file included from /home/Bitcoin/bitcoin-svn-rev-158/src/headers.h:123, from /home/Bitcoin/bitcoin-svn-rev-158/src/db.cpp:5: /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:26: error: ‘DbEnv’ does not name a type /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:37: error: ISO C++ forbids declaration of ‘Db’ with no type /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:37: error: expected ‘;’ before ‘*’ token /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:39: error: ‘DbTxn’ was not declared in this scope /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:39: error: template argument 1 is invalid /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:39: error: template argument 2 is invalid /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:152: error: ISO C++ forbids declaration of ‘Dbc’ with no type /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:152: error: expected ‘;’ before ‘*’ token /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:163: error: expected `;' before ‘int’ /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:163: error: ‘Dbc’ has not been declared /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:202: error: ISO C++ forbids declaration of ‘DbTxn’ with no type /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:202: error: expected ‘;’ before ‘*’ token /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:210: error: expected `;' before ‘public’ /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:163: error: ‘DB_NEXT’ was not declared in this scope /home/Bitcoin/bitcoin-svn-rev-158/src/db.h: In member function ‘bool CDB::Read(const K&, T&)’: /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:54: error: ‘pdb’ was not declared in this scope /home/Bitcoin/bitcoin-svn-rev-158/src/db.h:61: error: ‘Dbt’ was not declared in this scope (...) (...)
Any ideas what's wrong ? I run an AMD64 Gentoo. Linux tuxhost 2.6.34-gentoo-r2 #2 SMP Fri Jul 23 11:42:01 CEST 2010 x86_64 AMD Phenom(tm) 9850 Quad-Core Processor AuthenticAMD GNU/Linux
|
|
|
jgarzik: I tested this against vanilla client to be sure blocks are actually accepted. On ATI 4350 it makes ~5800 khash/s.
Hmm, that's weird. Shouldn't the speed be much bigger, like 10-fold or 100-fold faster at least ? I mean there was this guy somewhere on the BTC forum who claimed that he's getting 983 Mhash/s (983 000 khash/sec) with just 3 radeons 5870 or something.
|
|
|
ShadowOfHarbringer, is yours faster with -4way?
Indeed, it is almost 2 x as fast with -4way as it is without. I get about 8500 khash/sec with -4way, and 4500 khash/sec without.
|
|
|
Forgot to say, I suspected the detect might not work on 64-bit AMD. I found it hard to believe but AMD reports a different model number in 64-bit mode.
Could you grep CPUID your debug.log and tell me what it says? (and anyone else with 64-bit AMD) And what AMD chip do you have?
Do all AMDs that support 64-bit have the better SSE2 hardware also?
Will that be enough ?: cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 16 model : 2 model name : AMD Phenom(tm) 9850 Quad-Core Processor stepping : 3 cpu MHz : 2508.353 cache size : 512 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 5 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs npt lbrv svm_lock bogomips : 5018.72 TLB size : 1024 4K pages clflush size : 64 cache_alignment : 64 address sizes : 48 bits physical, 48 bits virtual power management: ts ttp tm stc 100mhzsteps hwpstate
EDIT: Also, i have just found out how to do the cpuid thingy: CPUID 444d4163 family 16, model 2, stepping 3, fUseSSE2=0
|
|
|
|