Pages:
Author

Topic: CUDA Linux Client - page 2. (Read 16393 times)

legendary
Activity: 1540
Merit: 1002
September 29, 2010, 02:48:39 PM
#10
Ну-с, вот собрал небольшой пак из демона и графического клиента. Всё-таки удалось уговорить 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!
full member
Activity: 185
Merit: 100
September 29, 2010, 02:00:49 PM
#9
Ну-с, вот собрал небольшой пак из демона и графического клиента. Всё-таки удалось уговорить wxWidgets и биткоин подружиться, причём, статически. Размеры вышли чуть больше, чем у Сато, не знаю, почему так. Вроде, пострипал, и дебаг не включен. В общем, кому охота, налетайте. Единственная тонкость: после использования этого клиента стандартный биткоин перестаёт понимать базу (выдаёт пару ошибок о необходимости её починить и вылетает). Возможно, потому что я собрал с более новой Berkley DB. Так что в любом случае сделайте бэкап.
full member
Activity: 185
Merit: 100
September 26, 2010, 06:14:59 AM
#8
Солидно. Я, правда, эмуляторами не балуюсь, но в году эдак 98-99-м плотно на спектруме работал и играл, так как альтернативы всё равно не было. Линукс даёт сейчас ту же близость к машине, что и спектрум раньше, хотя, само собой, возможности выросли на порядок с тех пор. Если говорить об играх, нынешний мейнстрим не представляет из себя ничего интересного, вот только TF2 действительно удалась и не перестаёт радовать. А остальное — красивый шлак.
sr. member
Activity: 350
Merit: 252
probiwon.com
September 26, 2010, 05:34:37 AM
#7
Разве CUDA не завязано на иксы? Мне так казалось, что если не включить иксовый модуль nvidia, оно не будет работать. И да, ускорение мне нужно, так как поигрываю-с под вайном в TF2 и некоторые другие игры.

Может быть, я никогда не юзал, только догадки излагаю. Я играю в спектрумовские игры на эмуляторе Smiley
full member
Activity: 185
Merit: 100
September 26, 2010, 05:24:01 AM
#6
Разве CUDA не завязано на иксы? Мне так казалось, что если не включить иксовый модуль nvidia, оно не будет работать. И да, ускорение мне нужно, так как поигрываю-с под вайном в TF2 и некоторые другие игры. Да и не стоит оно того, чтобы получить +100-200 килохэшей, лучше уж комфортная работа и пристойное ускорение. Как я понял из беглого просмотра исходников, повышенная нагрузка вызвана большими объёмами загрузок на видеокарту, то есть, она считает в параллель сразу большой блок данных и выдаёт обратно сразу пачку хэшей. Из-за этого на остальные операции остаётся мало времени, и нагрузку можно снизить, уменьшив количество этих блоков. Правда, непонятно, почему это нагружает юзерлендовые иксы.

С такими-то мощностями, сравнимыми с двумя моими процами, очень хочется переноса обсчёта графики в Inkscape/GIMP на видеокарту... эх, мечты-мечты...
sr. member
Activity: 350
Merit: 252
probiwon.com
September 26, 2010, 01:11:34 AM
#5
По поводу залипания окон: отключите 3D в иксах, поставьте vesa или типа того

я с незапамятных времён не пользуюсь аппаратным ускорением %)
LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
September 25, 2010, 04:42:55 PM
#4
Только под FreeBSD пытался. Весело было, подключен к другому десктопу, а на нем SSH сессия на сервер. Smiley
full member
Activity: 185
Merit: 100
September 25, 2010, 04:10:34 PM
#3
Лучше и проще для патча от 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, Developer Drivers и GPU Computing SDK code samples. Хоть и написано, что samples, но без него никуда — там cutil_inline.h и пачка библиотек. Если пути указаны верно, должно собраться, хотя на других дистрибутивах могут отсутствовать библиотеки. Я добавил для себя libdl и libz. Разумеется, если раньше вы не компилили клиент вообще, то ещё надо слить wxWidgets и у оракла слить db (Berkeley DB).

Бинарник.
LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
September 25, 2010, 03:49:32 PM
#2
Рад, что получилось сделать это. Да, выкладывай мэйкфайл и бинарник. Потестим на разном железе. Smiley
full member
Activity: 185
Merit: 100
September 25, 2010, 02:46:32 PM
#1
Целый вечер протрахался, но собрал его. Попутно понадобилось изучить конпеляцию 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к, т.е. немного меньше. Но зато, вроде как, мэйнтейнится и залипаний окон вообще не заметно.
Pages:
Jump to: