Pages:
Author

Topic: CUDA Optimalized BTC miner for NVIDIA cards (Read 7743 times)

sr. member
Activity: 311
Merit: 250
Also looking forward to Windows binaries and the comparison with cgminer. ;-)
sr. member
Activity: 252
Merit: 250
Code now works on cards with compute mode 3.5 (Titan, GTX780).
Tested on GTX-780 :-) It is about 275 MH/s.
any hope for compute 2.1? also how does that rate vs your cgminer speed

UPDATE:
Automatic GPU architecture chooser was added it works on any architecture from 1.0 to 3.5. The relevant cubin file should be in cmake-rpcminer. I added these files on github, so use them.
i guess the difficulty is too high now, but if you could include all the relevant information from the whole thread in the first post and possibly some windows binaries im sure it would help someone out.

think i missed some words from my last post. what is your rpcminer-optcuda MH vs your cgminer MH ?
newbie
Activity: 21
Merit: 0
Code now works on cards with compute mode 3.5 (Titan, GTX780).
Tested on GTX-780 :-) It is about 275 MH/s.
any hope for compute 2.1? also how does that rate vs your cgminer speed

UPDATE:
Automatic GPU architecture chooser was added it works on any architecture from 1.0 to 3.5. The relevant cubin file should be in cmake-rpcminer. I added these files on github, so use them.
sr. member
Activity: 252
Merit: 250
Code now works on cards with compute mode 3.5 (Titan, GTX780).
Tested on GTX-780 :-) It is about 275 MH/s.
any hope for compute 2.1? also how does that rate vs your cgminer speed
member
Activity: 66
Merit: 10
Any update on binaries for Windows? I've tried compiling with Cygwin, but cmake complains it can't find CUDA_CUDART_LIBRARY.

Code:
$ cmake ../
-- The C compiler identification is GNU 4.5.3
-- The CXX compiler identification is GNU 4.5.3
CMake Warning at /usr/share/cmake-2.8.9/Modules/Platform/CYGWIN.cmake:15 (message):
  CMake no longer defines WIN32 on Cygwin!

  (1) If you are just trying to build this project, ignore this warning or
  quiet it by setting CMAKE_LEGACY_CYGWIN_WIN32=0 in your environment or in
  the CMake cache.  If later configuration or build errors occur then this
  project may have been written under the assumption that Cygwin is WIN32.
  In that case, set CMAKE_LEGACY_CYGWIN_WIN32=1 instead.

  (2) If you are developing this project, add the line

    set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required

  at the top of your top-level CMakeLists.txt file or set the minimum
  required version of CMake to 2.8.4 or higher.  Then teach your project to
  build on Cygwin without WIN32.
Call Stack (most recent call first):
  /usr/share/cmake-2.8.9/Modules/CMakeSystemSpecificInformation.cmake:36 (INCLUDE)
  CMakeLists.txt:3 (PROJECT)


-- Check for working C compiler: /usr/bin/gcc.exe
-- Check for working C compiler: /usr/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++.exe
-- Check for working CXX compiler: /usr/bin/c++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Boost version: 1.53.0
-- Found the following Boost libraries:
--   date_time
--   filesystem
--   program_options
--   regex
--   system
--   thread
-- Found OpenSSL: /usr/lib/libssl.dll.a;/usr/lib/libcrypto.dll.a (found version "1.0.1e")
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
CMake Error at /usr/share/cmake-2.8.9/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE):
  Could NOT find CUDA (missing: CUDA_CUDART_LIBRARY)
Call Stack (most recent call first):
  /usr/share/cmake-2.8.9/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE)
  cmake-modules/FindCUDA.cmake:682 (find_package_handle_standard_args)
  CMakeLists.txt:32 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!

If anyone has any how-to's or some kind of guidance on how to get this working, please share.

Is your CUDA_TOOLKIT_ROOT_DIR environment variable set?
It wasn't, but I just set it prior to compilation and the problem persists. Any other clues? Or is cygwin not appropriate for compiling this? (might have to make a liveUSB with linux just for mining...)
newbie
Activity: 21
Merit: 0
Code now works on cards with compute mode 3.5 (Titan, GTX780).
Tested on GTX-780 :-) It is about 275 MH/s.
newbie
Activity: 21
Merit: 0
Can you explain the increase of hash rate? I thought the original miner got all could be achieved on sm30...
I'll start digging into the code, but I'd like to read high-level explanation.

Everything about the used register-count. If a CUDA code uses too many registers 2 things can happen: you can run the code on less threads, or you can tell the nvcc compiler to force use less register. There is no magic if your code needs 72 register, but you force the compiler use only 63 will mean 9 register will be in  local memory (available via spill loads), and this is slower then the registers.

So optimizing a CUDA code usually means write a code that can run with less register. On the other hand you can use a lot of special functions and types (I moved the input storing to __constant__ memory ). Memory reading and writing is slow, avoid unnecessary memory ops. And there are a lot of other tricks...
newbie
Activity: 21
Merit: 0
Any update on binaries for Windows? I've tried compiling with Cygwin, but cmake complains it can't find CUDA_CUDART_LIBRARY.

Code:
$ cmake ../
-- The C compiler identification is GNU 4.5.3
-- The CXX compiler identification is GNU 4.5.3
CMake Warning at /usr/share/cmake-2.8.9/Modules/Platform/CYGWIN.cmake:15 (message):
  CMake no longer defines WIN32 on Cygwin!

  (1) If you are just trying to build this project, ignore this warning or
  quiet it by setting CMAKE_LEGACY_CYGWIN_WIN32=0 in your environment or in
  the CMake cache.  If later configuration or build errors occur then this
  project may have been written under the assumption that Cygwin is WIN32.
  In that case, set CMAKE_LEGACY_CYGWIN_WIN32=1 instead.

  (2) If you are developing this project, add the line

    set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required

  at the top of your top-level CMakeLists.txt file or set the minimum
  required version of CMake to 2.8.4 or higher.  Then teach your project to
  build on Cygwin without WIN32.
Call Stack (most recent call first):
  /usr/share/cmake-2.8.9/Modules/CMakeSystemSpecificInformation.cmake:36 (INCLUDE)
  CMakeLists.txt:3 (PROJECT)


-- Check for working C compiler: /usr/bin/gcc.exe
-- Check for working C compiler: /usr/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++.exe
-- Check for working CXX compiler: /usr/bin/c++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Boost version: 1.53.0
-- Found the following Boost libraries:
--   date_time
--   filesystem
--   program_options
--   regex
--   system
--   thread
-- Found OpenSSL: /usr/lib/libssl.dll.a;/usr/lib/libcrypto.dll.a (found version "1.0.1e")
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
CMake Error at /usr/share/cmake-2.8.9/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE):
  Could NOT find CUDA (missing: CUDA_CUDART_LIBRARY)
Call Stack (most recent call first):
  /usr/share/cmake-2.8.9/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE)
  cmake-modules/FindCUDA.cmake:682 (find_package_handle_standard_args)
  CMakeLists.txt:32 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!

If anyone has any how-to's or some kind of guidance on how to get this working, please share.

Is your CUDA_TOOLKIT_ROOT_DIR environment variable set?
newbie
Activity: 39
Merit: 0
Can you explain the increase of hash rate? I thought the original miner got all could be achieved on sm30...
I'll start digging into the code, but I'd like to read high-level explanation.
member
Activity: 66
Merit: 10
Any update on binaries for Windows? I've tried compiling with Cygwin, but cmake complains it can't find CUDA_CUDART_LIBRARY.

Code:
$ cmake ../
-- The C compiler identification is GNU 4.5.3
-- The CXX compiler identification is GNU 4.5.3
CMake Warning at /usr/share/cmake-2.8.9/Modules/Platform/CYGWIN.cmake:15 (message):
  CMake no longer defines WIN32 on Cygwin!

  (1) If you are just trying to build this project, ignore this warning or
  quiet it by setting CMAKE_LEGACY_CYGWIN_WIN32=0 in your environment or in
  the CMake cache.  If later configuration or build errors occur then this
  project may have been written under the assumption that Cygwin is WIN32.
  In that case, set CMAKE_LEGACY_CYGWIN_WIN32=1 instead.

  (2) If you are developing this project, add the line

    set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required

  at the top of your top-level CMakeLists.txt file or set the minimum
  required version of CMake to 2.8.4 or higher.  Then teach your project to
  build on Cygwin without WIN32.
Call Stack (most recent call first):
  /usr/share/cmake-2.8.9/Modules/CMakeSystemSpecificInformation.cmake:36 (INCLUDE)
  CMakeLists.txt:3 (PROJECT)


-- Check for working C compiler: /usr/bin/gcc.exe
-- Check for working C compiler: /usr/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++.exe
-- Check for working CXX compiler: /usr/bin/c++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Boost version: 1.53.0
-- Found the following Boost libraries:
--   date_time
--   filesystem
--   program_options
--   regex
--   system
--   thread
-- Found OpenSSL: /usr/lib/libssl.dll.a;/usr/lib/libcrypto.dll.a (found version "1.0.1e")
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
CMake Error at /usr/share/cmake-2.8.9/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE):
  Could NOT find CUDA (missing: CUDA_CUDART_LIBRARY)
Call Stack (most recent call first):
  /usr/share/cmake-2.8.9/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE)
  cmake-modules/FindCUDA.cmake:682 (find_package_handle_standard_args)
  CMakeLists.txt:32 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!

If anyone has any how-to's or some kind of guidance on how to get this working, please share.
newbie
Activity: 21
Merit: 0
would be great to get some more MH out of my 560ti, currently 83 MH

waiting for win7 64bit binaries

have you fixed rpc-miner-cuda so it doesnt crash the display driver when closing it, or was that a windows issue

Well, I don't know, I have dedicated cards for CUDA (no display or X attached to it)
newbie
Activity: 21
Merit: 0
260 MH/s to slow. Embarrassed

Unfortunately NV cards not so good for mining. Buy AMD or some asic if you want more or you can design a new asic.
newbie
Activity: 21
Merit: 0
what performance increase is expected compared to guiminer or cgminer?

Well actually CG miner is quite good, I don't expect more then 10%. For Titan and GTX780, if somebody will do some optimalization CUDA can be better. If I have enough money I'll buy a 780, and try it.
newbie
Activity: 12
Merit: 0
260 MH/s to slow. Embarrassed
newbie
Activity: 9
Merit: 0
what performance increase is expected compared to guiminer or cgminer?
sr. member
Activity: 252
Merit: 250
would be great to get some more MH out of my 560ti, currently 83 MH

waiting for win7 64bit binaries

have you fixed rpc-miner-cuda so it doesnt crash the display driver when closing it, or was that a windows issue
newbie
Activity: 21
Merit: 0
With this miner I manage to get from my GTX480 from 110 till 140 Mh/s at default, thanks. 

You welcome!
member
Activity: 89
Merit: 10
With this miner I manage to get from my GTX480 from 110 till 140 Mh/s at default, thanks. 
newbie
Activity: 21
Merit: 0
I have written instructions in the readme files, but I write here some important information:
 - Use 4.2 if you compile the cu files. CU files should be compiled as a second pass and compiled next to the executable
 - I've added precompiled cubin files to the project, it is OS independent so you can copy it next to the executable file, if you don't want to compile the cu files
 - The program has an auto-tuning feature, if you don't define the gpuGrid, and gputhreads, it will find the best configuration, it is a wider search then the original (it can take several minutes!)
 - Once it is done you can use it next time
 - It does't have native stratum support, use a proxy instead
 - For measuring the time please run it for at least a few minutes
newbie
Activity: 43
Merit: 0
interesting, definitely a good thing. Everyone is so focused on AMD cards, yes rightfully so as they are faster but people have tons of nvidia cards laying around.
Pages:
Jump to: