Bitcoin Forum

Local => Майнеры => Topic started by: eurekafag on September 25, 2010, 07:46:32 PM



Title: CUDA Linux Client
Post by: eurekafag on September 25, 2010, 07:46:32 PM
Целый вечер протрахался, но собрал его. Попутно понадобилось изучить конпеляцию CUDA-кода и установить два SDK, чтобы без лишних костылей оно собралось. Судя по логам, работает. Скорость 5230 килохэшей на GF 8600GTS, на процессоре E6750 в два потока — всего 2300. Жаль, что автор кода не предусмотрел параллельную работу CPU и GPU майнеров, хотя я сомневаюсь, что при этом можно было бы вообще работать на компьютере. Сейчас с параметром -responsive процесс иксов жрёт около 20% CPU, сам bitcoind — 95%. Работать не очень комфортно, окна несколько залипают при переключении. Пробовал запускать с -aggressive, так иксы вообще встали намертво, пришлось с другой машины останавливать bitcoind. Без -responsive переключение между окнами может занимать более минуты, тоже не вариант.

Зависимости:

%[homecomp]:[~/svn-soft/bitcoin/trunk]> ldd bitcoind
   linux-gate.so.1 =>  (0xffffe000)
   libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb777f000)
   libdl.so.2 => /lib/libdl.so.2 (0xb777a000)
   libz.so.1 => /lib/libz.so.1 (0xb7766000)
   libcudart.so.3 => /usr/local/lib/libcudart.so.3 (0xb7712000)
   libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7621000)
   libm.so.6 => /lib/libm.so.6 (0xb75f7000)
   libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb75d9000)
   libc.so.6 => /lib/libc.so.6 (0xb746e000)
   libpthread.so.0 => /lib/libpthread.so.0 (0xb7453000)
   librt.so.1 => /lib/librt.so.1 (0xb7449000)
   libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7362000)
   /lib/ld-linux.so.2 (0xb77ab000)
   libpcre.so.0 => /lib/libpcre.so.0 (0xb7333000)

Автор кода оказался какашкой, и не выложил модифицированный под этот клиент makefile, так что пришлось разбираться самому. Если кому-то интересна тема, могу выложить бинарник и/или makefile для сборки. Также понадобится скачать CUDA Toolkit и GPU Computing SDK. Учитывая, какую оплеуху lzsaver дал жмоту puddinpop'у, думаю, было бы кошерно довести удар до конца и выпустить сборку под линукс раньше всех ^_^

PS: для сравнения собрал вариант от nelisky, он даёт порядка 5000к, т.е. немного меньше. Но зато, вроде как, мэйнтейнится и залипаний окон вообще не заметно.


Title: Re: CUDA Linux Client
Post by: LZ on September 25, 2010, 08:49:32 PM
Рад, что получилось сделать это. Да, выкладывай мэйкфайл и бинарник. Потестим на разном железе. :)


Title: Re: CUDA Linux Client
Post by: eurekafag on September 25, 2010, 09:10:34 PM
Лучше и проще для патча от nelisky. Вот makefile.unix:
Code:
# Copyright (c) 2009-2010 Satoshi Nakamoto
# Distributed under the MIT/X11 software license, see the accompanying
# file license.txt or http://www.opensource.org/licenses/mit-license.php.


INCLUDEPATHS= \
 -I"/usr/local/include/wx-2.9" \
 -I"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9" \
 -I"$(HOME)/build/boost_1_44_0" \
 -L"$(HOME)/build/boost_1_44_0/stage/lib"

# for wxWidgets 2.9.1, add -l Xxf86vm
WXLIBS= \
 -Wl,-Bstatic \
   -l wx_gtk2ud-2.9 \
 -Wl,-Bdynamic \
   -l gtk-x11-2.0 \
   -l SM

# for boost 1.37, add -mt to the boost libraries
LIBS= -dead_strip \
 -Wl,-Bstatic \
   -l boost_system \
   -l boost_filesystem \
   -l boost_program_options \
   -l boost_thread \
   -l db_cxx \
   -l crypto \
 -Wl,-Bdynamic \
   -l gthread-2.0 \
   -l z \
   -l dl \

DEFS=-D__WXGTK__ -DNOPCH -DFOURWAYSSE2
DEBUGFLAGS=-g -D__WXDEBUG__
CFLAGS=-O2 -msse3 -mmmx -Wno-invalid-offsetof -Wformat $(DEFS) $(INCLUDEPATHS)
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
    script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h noui.h init.h

CUDAROOT = "$(HOME)/NVIDIA_GPU_Computing_SDK"

CUDALIBPATHS= \
 -L$(CUDAROOT)/C/lib \
 -L$(CUDAROOT)/C/common/lib/linux \
 -L$(CUDAROOT)/shared/lib \
 -L/usr/local/cuda/lib

CUDALIBS= -lcudart -lcutil_i386 -lshrutil_i386

CUDAFLAGS=-fPIC -Xlinker -rpath /usr/local/cuda/lib $(CUDALIBPATHS) $(CUDALIBS)

OBJS= \
    obj/sha256_kernel.cuo \
    obj/util.o \
    obj/script.o \
    obj/db.o \
    obj/net.o \
    obj/irc.o \
    obj/main.o \
    obj/rpc.o \
    obj/init.o \
    cryptopp/obj/sha.o \
    obj/sha256.o \
    cryptopp/obj/cpu.o


all: bitcoin

obj/nogui/sha256.o: sha256.cpp
g++ -c $(CFLAGS) -O3 -o $@ $<

obj/%.o: %.cpp $(HEADERS)
g++ -c $(CFLAGS) -DGUI -o $@ $<

cryptopp/obj/%.o: cryptopp/%.cpp
g++ -c $(CFLAGS) -O3 -o $@ $<

bitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha256.o
g++ $(CFLAGS) -o $@ $^ $(WXLIBS) $(LIBS)


obj/nogui/%.o: %.cpp $(HEADERS)
g++ -c $(CFLAGS) -o $@ $<

obj/nogui/%.cuo: %.cu
    /usr/local/cuda/bin/nvcc  -gencode=arch=compute_10,code=\"sm_10,compute_10\"  -gencode=arch=compute_20,code=\"sm_20,compute_20\" --compiler-options -fno-strict-aliasing  -I. -I/usr/local/cuda/include -I$(CUDAROOT)/C/common/inc -I$(CUDAROOT)/shared/inc -DUNIX -O3   -o $@ -c $<

bitcoind: $(OBJS:obj/%=obj/nogui/%)
g++ $(CFLAGS) -o $@ $^ $(LIBS) $(CUDALIBPATHS) $(CUDALIBS)


clean:
-rm -f obj/*.o
-rm -f obj/nogui/*.o
-rm -f cryptopp/obj/*.o
-rm -f headers.h.gch

Пути с $(HOME) надо подкорректировать для себя. У меня в OpenSuSE 11.3 какая-то кривая сборка boost-devel, нет *.a файлов для линковки, так что собрал свой буст и положил по указанному пути. Ещё надо скачать CUDA Toolkit (http://developer.nvidia.com/object/cuda_3_2_toolkit_rc.html#Linux), Developer Drivers и GPU Computing SDK code samples. Хоть и написано, что samples, но без него никуда — там cutil_inline.h и пачка библиотек. Если пути указаны верно, должно собраться, хотя на других дистрибутивах могут отсутствовать библиотеки. Я добавил для себя libdl и libz. Разумеется, если раньше вы не компилили клиент вообще, то ещё надо слить wxWidgets и у оракла слить db (Berkeley DB).

Бинарник (http://rghost.ru/2730564).


Title: Re: CUDA Linux Client
Post by: LZ on September 25, 2010, 09:42:55 PM
Только под FreeBSD пытался. Весело было, подключен к другому десктопу, а на нем SSH сессия на сервер. :)


Title: Re: CUDA Linux Client
Post by: bitcoinex on September 26, 2010, 06:11:34 AM
По поводу залипания окон: отключите 3D в иксах, поставьте vesa или типа того

я с незапамятных времён не пользуюсь аппаратным ускорением %)


Title: Re: CUDA Linux Client
Post by: eurekafag on September 26, 2010, 10:24:01 AM
Разве CUDA не завязано на иксы? Мне так казалось, что если не включить иксовый модуль nvidia, оно не будет работать. И да, ускорение мне нужно, так как поигрываю-с под вайном в TF2 и некоторые другие игры. Да и не стоит оно того, чтобы получить +100-200 килохэшей, лучше уж комфортная работа и пристойное ускорение. Как я понял из беглого просмотра исходников, повышенная нагрузка вызвана большими объёмами загрузок на видеокарту, то есть, она считает в параллель сразу большой блок данных и выдаёт обратно сразу пачку хэшей. Из-за этого на остальные операции остаётся мало времени, и нагрузку можно снизить, уменьшив количество этих блоков. Правда, непонятно, почему это нагружает юзерлендовые иксы.

С такими-то мощностями, сравнимыми с двумя моими процами, очень хочется переноса обсчёта графики в Inkscape/GIMP на видеокарту... эх, мечты-мечты...


Title: Re: CUDA Linux Client
Post by: bitcoinex on September 26, 2010, 10:34:37 AM
Разве CUDA не завязано на иксы? Мне так казалось, что если не включить иксовый модуль nvidia, оно не будет работать. И да, ускорение мне нужно, так как поигрываю-с под вайном в TF2 и некоторые другие игры.

Может быть, я никогда не юзал, только догадки излагаю. Я играю в спектрумовские игры на эмуляторе :)


Title: Re: CUDA Linux Client
Post by: eurekafag on September 26, 2010, 11:14:59 AM
Солидно. Я, правда, эмуляторами не балуюсь, но в году эдак 98-99-м плотно на спектруме работал и играл, так как альтернативы всё равно не было. Линукс даёт сейчас ту же близость к машине, что и спектрум раньше, хотя, само собой, возможности выросли на порядок с тех пор. Если говорить об играх, нынешний мейнстрим не представляет из себя ничего интересного, вот только TF2 действительно удалась и не перестаёт радовать. А остальное — красивый шлак.


Title: Re: CUDA Linux Client
Post by: eurekafag on September 29, 2010, 07:00:49 PM
Ну-с, вот собрал небольшой пак (http://eureka7.ru/bitcoin-cuda-0.3.12.8-bin.tar.bz2) из демона и графического клиента. Всё-таки удалось уговорить wxWidgets и биткоин подружиться, причём, статически. Размеры вышли чуть больше, чем у Сато, не знаю, почему так. Вроде, пострипал, и дебаг не включен. В общем, кому охота, налетайте. Единственная тонкость: после использования этого клиента стандартный биткоин перестаёт понимать базу (выдаёт пару ошибок о необходимости её починить и вылетает). Возможно, потому что я собрал с более новой Berkley DB. Так что в любом случае сделайте бэкап.


Title: Re: CUDA Linux Client
Post by: nelisky on September 29, 2010, 07:48:39 PM
Ну-с, вот собрал небольшой пак (http://eureka7.ru/bitcoin-cuda-0.3.12.8-bin.tar.bz2) из демона и графического клиента. Всё-таки удалось уговорить wxWidgets и биткоин подружиться, причём, статически. Размеры вышли чуть больше, чем у Сато, не знаю, почему так. Вроде, пострипал, и дебаг не включен. В общем, кому охота, налетайте. Единственная тонкость: после использования этого клиента стандартный биткоин перестаёт понимать базу (выдаёт пару ошибок о необходимости её починить и вылетает). Возможно, потому что я собрал с более новой Berkley DB. Так что в любом случае сделайте бэкап.

Sorry for the english request on the russian lists, but if people are using my patch I would really appreciate all feedback you could give, and patches to make it work in other OSs. Please post comments that might be of use to the community in general in the original english thread if at all possible.

Thanks!


Title: Re: CUDA Linux Client
Post by: mizerydearia on October 04, 2010, 02:12:00 AM
Лучше и проще для патча от nelisky. Вот makefile.unix:
Code:
# Copyright (c) 2009-2010 Satoshi Nakamoto
# Distributed under the MIT/X11 software license, see the accompanying
# file license.txt or http://www.opensource.org/licenses/mit-license.php.


INCLUDEPATHS= \
 -I"/usr/local/include/wx-2.9" \
 -I"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9" \
 -I"$(HOME)/build/boost_1_44_0" \
 -L"$(HOME)/build/boost_1_44_0/stage/lib"

# for wxWidgets 2.9.1, add -l Xxf86vm
WXLIBS= \
 -Wl,-Bstatic \
   -l wx_gtk2ud-2.9 \
 -Wl,-Bdynamic \
   -l gtk-x11-2.0 \
   -l SM

# for boost 1.37, add -mt to the boost libraries
LIBS= -dead_strip \
 -Wl,-Bstatic \
   -l boost_system \
   -l boost_filesystem \
   -l boost_program_options \
   -l boost_thread \
   -l db_cxx \
   -l crypto \
 -Wl,-Bdynamic \
   -l gthread-2.0 \
   -l z \
   -l dl \

DEFS=-D__WXGTK__ -DNOPCH -DFOURWAYSSE2
DEBUGFLAGS=-g -D__WXDEBUG__
CFLAGS=-O2 -msse3 -mmmx -Wno-invalid-offsetof -Wformat $(DEFS) $(INCLUDEPATHS)
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
    script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h noui.h init.h

CUDAROOT = "$(HOME)/NVIDIA_GPU_Computing_SDK"

CUDALIBPATHS= \
 -L$(CUDAROOT)/C/lib \
 -L$(CUDAROOT)/C/common/lib/linux \
 -L$(CUDAROOT)/shared/lib \
 -L/usr/local/cuda/lib

CUDALIBS= -lcudart -lcutil_i386 -lshrutil_i386

CUDAFLAGS=-fPIC -Xlinker -rpath /usr/local/cuda/lib $(CUDALIBPATHS) $(CUDALIBS)

OBJS= \
    obj/sha256_kernel.cuo \
    obj/util.o \
    obj/script.o \
    obj/db.o \
    obj/net.o \
    obj/irc.o \
    obj/main.o \
    obj/rpc.o \
    obj/init.o \
    cryptopp/obj/sha.o \
    obj/sha256.o \
    cryptopp/obj/cpu.o


all: bitcoin

obj/nogui/sha256.o: sha256.cpp
g++ -c $(CFLAGS) -O3 -o $@ $<

obj/%.o: %.cpp $(HEADERS)
g++ -c $(CFLAGS) -DGUI -o $@ $<

cryptopp/obj/%.o: cryptopp/%.cpp
g++ -c $(CFLAGS) -O3 -o $@ $<

bitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha256.o
g++ $(CFLAGS) -o $@ $^ $(WXLIBS) $(LIBS)


obj/nogui/%.o: %.cpp $(HEADERS)
g++ -c $(CFLAGS) -o $@ $<

obj/nogui/%.cuo: %.cu
   /usr/local/cuda/bin/nvcc  -gencode=arch=compute_10,code=\"sm_10,compute_10\"  -gencode=arch=compute_20,code=\"sm_20,compute_20\" --compiler-options -fno-strict-aliasing  -I. -I/usr/local/cuda/include -I$(CUDAROOT)/C/common/inc -I$(CUDAROOT)/shared/inc -DUNIX -O3   -o $@ -c $<

bitcoind: $(OBJS:obj/%=obj/nogui/%)
g++ $(CFLAGS) -o $@ $^ $(LIBS) $(CUDALIBPATHS) $(CUDALIBS)


clean:
-rm -f obj/*.o
-rm -f obj/nogui/*.o
-rm -f cryptopp/obj/*.o
-rm -f headers.h.gch

Пути с $(HOME) надо подкорректировать для себя. У меня в OpenSuSE 11.3 какая-то кривая сборка boost-devel, нет *.a файлов для линковки, так что собрал свой буст и положил по указанному пути. Ещё надо скачать CUDA Toolkit (http://developer.nvidia.com/object/cuda_3_2_toolkit_rc.html#Linux), Developer Drivers и GPU Computing SDK code samples. Хоть и написано, что samples, но без него никуда — там cutil_inline.h и пачка библиотек. Если пути указаны верно, должно собраться, хотя на других дистрибутивах могут отсутствовать библиотеки. Я добавил для себя libdl и libz. Разумеется, если раньше вы не компилили клиент вообще, то ещё надо слить wxWidgets и у оракла слить db (Berkeley DB).

Бинарник (http://rghost.ru/2730564).

I added this patch to http://www.bitcoin.org/wiki/doku.php?id=list_of_patches but I am not sure how to name it appropriately.  Will someone edit the wiki and provide the correct name?

That's not a patch, just a makefile which I run on OpenSuSE. I have no idea why Sato put so few libraries and why it builds at all on his comp. I see the obvious lack of -l dl and -l z at the very least.

Mmkay, I removed it then.


Title: Re: CUDA Linux Client
Post by: eurekafag on October 04, 2010, 10:39:45 AM
That's not a patch, just a makefile which I run on OpenSuSE. I have no idea why Sato put so few libraries and why it builds at all on his comp. I see the obvious lack of -l dl and -l z at the very least.


Title: Re: CUDA Linux Client
Post by: erbauer on October 09, 2010, 03:27:10 PM
Ну-с, вот собрал небольшой пак (http://eureka7.ru/bitcoin-cuda-0.3.12.8-bin.tar.bz2) из демона и графического клиента. Всё-таки удалось уговорить wxWidgets и биткоин подружиться, причём, статически. Размеры вышли чуть больше, чем у Сато, не знаю, почему так. Вроде, пострипал, и дебаг не включен. В общем, кому охота, налетайте. Единственная тонкость: после использования этого клиента стандартный биткоин перестаёт понимать базу (выдаёт пару ошибок о необходимости её починить и вылетает). Возможно, потому что я собрал с более новой Berkley DB. Так что в любом случае сделайте бэкап.

Выдает вот это:

./bitcoin: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory

Система Ubuntu 10.04.

libjpeg установлен:
v   libjpeg-dbg                     -                                           
v   libjpeg-dev                     -                                           
i A libjpeg-progs                   - Programs for manipulating JPEG files     
i   libjpeg62                       - библиотека времени выполнения для работы с
p   libjpeg62-dbg                   - Development files for the IJG JPEG library
i A libjpeg62-dev                   - Development files for the IJG JPEG library

Может надо симлинк куда-то сделать?

Подскажите пожалуйста.


Title: Re: CUDA Linux Client
Post by: eurekafag on October 09, 2010, 03:40:08 PM
Небось, только не факт, что либа подойдёт. Посмотри ls -la /usr/lib/libjpeg*

Шестая установлена, это видно, а какой версии просто libjpeg-dev — не знаю. У меня, например, в хромиуме есть проблема как раз с этой библиотекой, при выборе на любом картинкозаливочном сайте файла .jpg (из локальных, разумеется, в диалоге выбора файла), хромиум падает, потому как собран с 6-й или 7-й версией, и исправлять это никто не собирается. Для суси есть нормальная рабочая сборка, но обновляется она довольно редко. Выбора нет, использую её.


Title: Re: CUDA Linux Client
Post by: Ygre on November 10, 2010, 01:48:06 PM
А без CUDA можно обойтись? Мне не приходилось еще собирать пакеты, и есть только более-менее понятные описания сборки .deb, а за CUDA только-что узнал и еще не понял: будет-ли оно работать на моем железе.


Title: Re: CUDA Linux Client
Post by: eurekafag on November 10, 2010, 03:56:56 PM
Да, можно прекрасно обходиться без CUDA, используя официальный клиент. Правда, с текущей сложностью это просто смешно (для генерации, разумеется). Выгоднее на улице монетки подбирать.


Title: Re: CUDA Linux Client
Post by: em3rgentOrdr on November 11, 2010, 10:05:24 AM
Have any of you Russian comrades had any success compiling this for Ubuntu?  I have CUDA properly installed (can compile the NVIDIA tests), but I still get this error when trying to compile the CUDA-enabled bitcoin on my Ubuntu 10.04:

Quote
. / Bitcoin: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory

even though I already have libjpeg installed (I'm pretty sure).

Anyway, if any of you have had luck with this, I would appreciate some help, or if possible, just post a compiled binary.

Спасибо.


Title: Re: CUDA Linux Client
Post by: bitcoinex on November 11, 2010, 11:38:41 AM
Quote
Выдает вот это:

./bitcoin: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory

Система Ubuntu 10.04.

libjpeg установлен:
v   libjpeg-dbg                     -                                          
v   libjpeg-dev                     -                                          
i A libjpeg-progs                   - Programs for manipulating JPEG files      
i   libjpeg62                       - библиотека времени выполнения для работы с
p   libjpeg62-dbg                   - Development files for the IJG JPEG library
i A libjpeg62-dev                   - Development files for the IJG JPEG library

Может надо симлинк куда-то сделать?

Подскажите пожалуйста.

Have any of you Russian comrades had any success compiling this for Ubuntu?  I have CUDA properly installed (can compile the NVIDIA tests), but I still get this error when trying to compile the CUDA-enabled bitcoin on my Ubuntu 10.04:

Quote
. / Bitcoin: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory

even though I already have libjpeg installed (I'm pretty sure).

Anyway, if any of you have had luck with this, I would appreciate some help, or if possible, just post a compiled binary.

Спасибо.

Так вот же предложили сделать сначала:

Quote
Небось, только не факт, что либа подойдёт. Посмотри ls -la /usr/lib/libjpeg*

Шестая установлена, это видно, а какой версии просто libjpeg-dev — не знаю. У меня, например, в хромиуме есть проблема как раз с этой библиотекой, при выборе на любом картинкозаливочном сайте файла .jpg (из локальных, разумеется, в диалоге выбора файла), хромиум падает, потому как собран с 6-й или 7-й версией, и исправлять это никто не собирается. Для суси есть нормальная рабочая сборка, но обновляется она довольно редко. Выбора нет, использую её.

Вот, например, на моём дебиане показывается:

Code:
$ LANG=C ls -la /usr/lib/libjpeg*
-rw-r--r-- 1 root root 164916 Jun 30 21:38 /usr/lib/libjpeg.a
-rw-r--r-- 1 root root    918 Jun 30 21:38 /usr/lib/libjpeg.la
lrwxrwxrwx 1 root root     17 Sep 23 20:41 /usr/lib/libjpeg.so -> libjpeg.so.62.0.0
lrwxrwxrwx 1 root root     17 Sep 23 20:41 /usr/lib/libjpeg.so.62 -> libjpeg.so.62.0.0
-rw-r--r-- 1 root root 127964 Jun 30 21:38 /usr/lib/libjpeg.so.62.0.0

Я сам не использую генераторы, просто для примера. Ваш вывод этой команды какой?

в любом случае, попробуйте что-то вроде:

sudo aptitude install libjpeg8


Title: Re: CUDA Linux Client
Post by: eurekafag on November 11, 2010, 08:08:38 PM
Убунта застряла с libjpeg6 по непонятным причинам, когда весь мир давно на 8-ке. Из-за них хромиум собирают с зависимостью от libjpeg6, и в моей сусе официальные сборки из билдбота падают при выборе картинки (например, чтобы куда-нибудь её закачать) в стандартном диалоге. Все падают. Стабильно. Все об этом знают и не чешутся, потому что в убунте не падают, а убунта — это единственный линукс. Впрочем, в сусе есть свои официальные непадающие сборки с libjpeg8, причём, более-менее современные. Ну может на пару недель отстают, некритично.

Это я к тому, что моя сборка не пойдёт на убунте, равно как и убунтовская не пойдёт у меня. Sad but true, конпеляйте самостоятельно.


Title: Re: CUDA Linux Client
Post by: LZ on January 21, 2011, 01:13:07 PM
Под старыми федорами достаточно установить libjpeg-turbo-devel,
и может потребоваться сделать с libjpeg.so на libjpeg.so.8 симлинк.
Code:
yum install libjpeg-turbo-devel
ln -s /usr/lib/libjpeg.so /usr/lib/libjpeg.so.8
ln -s /usr/lib64/libjpeg.so /usr/lib64/libjpeg.so.8


Title: Re: CUDA Linux Client
Post by: Zenitur on May 03, 2011, 08:56:27 PM
Когда у меня было мало khash'ей я поиском нашёл именно эту тему. Первая ссылка не работает, вторая - только для 32-битных систем, да и программа по ней старая. Я хоть и ламер, но решил написать что узнал дальше.

Есть несколько (http://bitcointalk.org/index.php?topic=2876.0) видов майнеров для GPU и все они работают либо с bitcoin (ускоряя его), либо с пулом. Для Linux я нашёл два, беспроблемный poclbm (http://bitcointalk.org/index.php?topic=1334.0) (OpenCL) и проблемный RPC Miner (http://bitcointalk.org/index.php?topic=2444.0) (CUDA). Описываю запуск в Linux. Конечно же, в системе должны быть библиотеки CUDA и OpenCL (у nVidia они уже в проприетарном драйвере, и несколько - в отдельном CUDA Toolkit), и для всего, кроме poclbm, необходимо установить SDK. Для poclbm его не нужно устанавливать для nVidia (я не стал и всё заработало), для AMD - надо (в SDK - системная библиотека libOpenCL.so).

poclbm

Удовлетворяем зависимости. Устанавливаем pyopencl (у меня нашёлся в репозитарии, если у вас не нашёлся - предлагаю найти любимым поисковиком и установить). Затем устанавливаем python-jsonrpc (у меня не нашёлся в репозитарии, поэтому ниже способ установки без него:)

Code:
svn checkout http://svn.json-rpc.org/trunk/python-jsonrpc
cd python-jsonrpc
su
# python setup.py install
# exit

Настраиваем Bitcoin (если не будет использован пул). В скрытом каталоге /home/user/.bitcoin в bitcoin.conf вписываем:

rpcuser=user
rpcpassword=password

Придумать можно своё. Это нужно для того, чтобы сторонняя программа могла присоединиться к нашему bitcoin либо bitcoind, без этого после запуска с ключом -server в консольном выводе мы увидим ошибку (невозможно включить режим сервера RPC, потому что нет параметров rpcuser и rpcpassword в файле конфигурации программы - что-то такое).

Запускаем bitcoin либо bitcoind с ключом -server. Можно в консоли, можно по "Выполнить..." через Alt-F2.

Запускаем в консоли ту самую программу:

Code:
python poclbm.py -d 0 --user user --pass password

Где -d 0 - это номер нужной видеокарты. То что у неё номер 0 я узнал из сообщения об ошибке при запуске скрипта без параметров. Мы увидим то, что генерируется заметно быстрее, чем на CPU (у меня с GeForce 9800GT 512 Mb RAM - около 26700, если не шевелить мышкой и ничего не делать, иначе замедлится на 400-500, а ещё интейфейс системы немного замедлится).

Для пула команда другая:

Code:
python poclbm.py -d 0 --host=deepbit.net --port=8332 --user=xxx@xxx.ru --pass=xxx

Для пула deepbit.net. Название пула, его порт, имя пользователя и пароль нужно заменить на свои.

Стоит сказать, что я только запускал оба майнера, дополнительные настройки не смотрел. Выключить poclbm можно сочетанием клавиш Ctrl-C, нам скажут bye и выключатся.

RPC Miner

Его установка сложна, так как он ориентирован в основном на Windows. Мне очень помогло сообщение 222 (http://bitcointalk.org/index.php?topic=2444.msg98970#msg98970) в его теме обсуждения. Это руководство для того чтобы заставить работать последний на данный момент исходный код, дата которого 20110227. Можно сделать всё как там написано. Зависимости: boost, DB, CUDA Toolkit вместе с CUDA SDK (последний нужен для компилирования), больше не знаю что нужно ещё.

Открыть главный CMakeLists.txt и увидеть список того что, нужно скомпилировать. Везде выставить OFF, кроме первого и последнего (CUDA и RPC Miner). GUI, к сожалению, не компилируется (у меня, не находит какие-то заголовочные файлы wxWidgets), хотя вам, может, и повезёт! Затем найти строчку SET(Boost_USE_STATIC_LIBS   ON) и заменить ON на OFF. Сохранить.

Зайти в каталог с этим файлом и выполнить cmake . Это конфигуратор, компиляцию запускать не надо. Ищем файл src/serialize.h и дописываем последний include: #include <limits.h> . А следующей строчкой дописываем using namespace boost; Сохраняем файл.

Открываем файл src/cuda/bitcoinminercuda.cu и дописываем в самом начале над #ifdef _BITCOIN_MINER_CUDA_ следующее #define _BITCOIN_MINER_CUDA_ . Зачем это надо и надо ли вообще я не знаю, но при компиляции из-за этого действия я получил 5 WARNING'ов, но компиляция прошла успешно.

Запускаем make. Всё скомпилировалось. Теперь запускаем:

Code:
nvcc src/cuda/bitcoinminercuda.cu -gencode arch=compute_10,\"code=sm_10,compute_10\" -gencode arch=compute_11,\"code=sm_11,compute_11\" --keep -gencode arch=compute_20,\"code=sm_20,compute_20\" --keep

Выполнение команды закончится ошибкой - так и должно быть.

Заходим в cmake-rpcminer и видим бинарник rpcminer. Запускаем его из консоли.

Code:
./rpcminer

После недолгой инициализации видим ошибку. Хочет какой-то файл с расширением cubin (у меня захотел версию 11), каталогом ниже лежат версии 10, 11 и 20. Берём нужную и переименовываем в тот вид, в котором у нас этот файл затребовали. Снова запускаем rpcminer. Вот, теперь работает. Теперь запускаем с параметрами:

Code:
./rpcminer -user=user -password=password

Предварительно необходимо отредактировать файл конфигурации bitcoin (как именно я написал выше, в совете по запуску poclbm). У меня на GeForce 9800GT 512 Mb RAM выдало 18000 khash. Меньше, чем с неродным для nVidia OpenCL Странно. Наверное, дело в том что с pyoclbm у меня ещё и все ядра процессора заняты на 100% тоже, а с RPC Miner возможно занят только GPU. Мне лень остановить pyoclbm и проверить: я уже увидел, что колоссального прироста в скорости нет, и возвращаться к тому, на компиляцию чего потратил столько времени, не хочу.

Как и с pyoclbm, я не знаю никаких особых параметров для RPC Miner. -agression=5 и -agression=10 - вот что увидел в его теме форума беглым взглядом. Мне не помогли.


Title: Re: CUDA Linux Client
Post by: Red Dragon on May 07, 2011, 06:34:09 PM
Пытаюсь запустить poclbm (OpenCL) на CentOS release 5.5 (Final).
Получаю

 python poclbm.py
  File "poclbm.py", line 62
    finally:
          ^
SyntaxError: invalid syntax


Подозреваю, что версия питона не подходящая, как исправить?


Title: Re: CUDA Linux Client
Post by: Red Dragon on May 07, 2011, 08:40:37 PM
Обновил версию питона до 2.7 (и отдельно поставил 2.6 отсюда http://fedoraproject.org/wiki/EPEL ), однако модуль pyopencl он не видит :(
 python poclbm.py
Traceback (most recent call last):
  File "poclbm.py", line 3, in <module>
    import pyopencl as cl
ImportError: No module named pyopencl



Title: Re: CUDA Linux Client
Post by: Zenitur on May 07, 2011, 09:01:56 PM
Уже лучше. Переустанови pyopencl, чтобы он стал поддерживать новый Python.


Title: Re: CUDA Linux Client
Post by: Red Dragon on May 07, 2011, 11:41:43 PM
да, но как? На сентос и питон то через костыли ставится, попробовал по http://ofan666.blogspot.com/2011/04/install-opencl-and-pyopencl-in.html на этапе проверки $ ./HelloCL выдает Segmentation fault и не видит numpy, хотя я его через yum поставил :(


Title: Re: CUDA Linux Client
Post by: Red Dragon on May 08, 2011, 02:53:52 AM
Уфф, тем временем, как ни странно, получилось запустить RPC Miner (спасибо за подробную инструкцию)! Кто сравнивал эти решения по производительности, для GPU поддерживающих CUDA, у какого софта производительность выше?

Еще очень хотелось бы всё таки запустить ufasoft'овский и загрузить не только GPU, но и простаивающие CPUs (сейчас при работающем RPC Miner с опциями по умолчанию, совокупная загрузка CPU ~ 10%).

Вопрос, если стоит 2 GPU на машине, то как RPC Miner указать использовать оба? В опциях не нашел, пока запускаю два различных процесса с разными параметрами -gpu=0 и -gpu=1.

Поигравшись с настройками, удалось значительно увеличить производительность, при этом загрузка CPUs упала до 0!

Кто знает, какие значения по умолчанию у

-gpugrid=X
   Specifies what the grid size of the kernel should be.  Useful for fine tuning
   hash rate.

-gputhreads=X
   Specifies how many threads per kernel invocation should run.  Useful for fine
   tuning hash rate.

?


Title: Re: CUDA Linux Client
Post by: Zenitur on May 08, 2011, 03:59:00 AM
Я уверен, что RPC Miner запускается на нескольких GPU одной командой. Но я не знаю как. Также не знаю как запускать его на CPU и GPU одновременно, а очень хотелось бы. Как именно ты поигрался настройками? Мне тоже хочется увеличить производительность.

Мой pyoclbm задействует и GPU, и CPU, поэтому быстрее. Что было бы если бы не задействовались CPU, либо RPC Miner задействовал CPU тоже, я не знаю.


Title: Re: CUDA Linux Client
Post by: Red Dragon on May 09, 2011, 12:26:06 AM
Пока что максимум (~105 Mh/s, но иногда раз в 10с короткие провалы до 50 Mh/s - c чем связано, не ясно) получается при -aggression=14 -workrefreshms=1000 -gputhreads=512 но любая нвидия может такое переварить. Наибольший прирост производительности получился от увеличения aggression (но больше 14 не получается) и, как ни странно, gputhreads, правда 1024 gputhreads уже не тянет, вываливается с Segmentation fault.

Удалось запустить и python poclbm, но не впечатлил пока что совершенно, выдает ~ 70 Mh/s (от настроек меняется на +-3 Mh/s).

Также запустился и phoenix, тоже пока максимум 82 Mh/s c параметрами VECTORS AGGRESSION=13.

Для CPU - запускаю отдельно minerd https://en.bitcoin.it/wiki/Cpu_Miner наибольшее быстродействие с опцией -a sse2_64


Title: Re: CUDA Linux Client
Post by: Zenitur on May 09, 2011, 11:35:06 AM
Как ты достиг такого прироста, какой именно майнер? И как именно узнать оптимальность параметров для определённой видеокарты? Что касается ufasoft: тоже скомпилировал и тоже 0 Mhash. Наверное дело в том что пришлось вручную править asm-файлы как кто-то подсказал на форуме программы. minerd для CPU меня разочаровывает. Официальный bitcoin выдаёт 5000 khash, а minerd с sse2_64 - 2000. 2100 с 4way. У меня AMD.


Title: Re: CUDA Linux Client
Post by: Zenitur on May 09, 2011, 11:44:32 AM
Red Dragon,смотри что я нашёл: http://bitcointalk.org/index.php?topic=7534.0

Update: что-то RPC выдаёт нереальное количество khash'ей: 1655006568 khash/s . Это терахеш? На моей 9800GT? Это без пула, это ко мне сконнектилось. С 112 потоками.