xmrig-cuda icon indicating copy to clipboard operation
xmrig-cuda copied to clipboard

Driver does not support CUDA 11.2 API! Update your nVidia driver!

Open BobbyBlock opened this issue 4 years ago • 15 comments

Getting this error every time I run XMRig

Driver does not support CUDA 11.2 API! Update your nVidia driver!
 * CUDA         disabled (no devices)

Driver is up to date as is everything else, this is what I get when running nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 455.45.01    Driver Version: 455.45.01    CUDA Version: 11.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce GTX 970     Off  | 00000000:1D:00.0  On |                  N/A |
|  2%   48C    P8    18W / 163W |    304MiB /  4041MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A       500      G   /usr/lib/Xorg                     120MiB |
|    0   N/A  N/A       698      G   /usr/bin/plasmashell              119MiB |
|    0   N/A  N/A      1325      G   ...gAAAAAAAAA --shared-files       14MiB |
|    0   N/A  N/A      1576      G   ...AAAAAAAAA= --shared-files       32MiB |
|    0   N/A  N/A      2647      G   /usr/lib/firefox/firefox            2MiB |
|    0   N/A  N/A      4321      G   /usr/lib/firefox/firefox            2MiB |
+-----------------------------------------------------------------------------+

I'm running a 970 which is still supported by CUDA 11 so I have no idea what the issue is. I know CUDA 11.2 is very new so that may have broke somthing

BobbyBlock avatar Jan 01 '21 02:01 BobbyBlock

I am in the same situtation.

Does the a old version of the API work better? @BobbyBlock

Here is an archive of it. https://developer.nvidia.com/cuda-11.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=deblocal

SourceCodeDeleted avatar Jan 09 '21 11:01 SourceCodeDeleted

Your driver clearly says it supports up to 11.1 (nvidia-smi output) So, Compile with the toolkit 11.1 not 11.2 Or await/upgrade to a driver that knows 11.2

Spudz76 avatar Jan 13 '21 20:01 Spudz76

This is my attempt with cuda 11.2...

cmake .. -DCUDA_LIB=/usr/local/cuda-11.2/lib64 -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.2/bin -DCMAKE_C_COMPILER=$(which gcc-8) -DCMAKE_CXX_COMPILER=$(which g++-8)
-- Found CUDA: /usr/local/cuda-11.2/bin (found suitable version "11.2", minimum required is "8.0") 


;  Valid CUDA Toolkit Map:
;   8.x for Fermi/Kepler          /Maxwell/Pascal,
;   9.x for       Kepler          /Maxwell/Pascal/Volta,
;  10.x for       Kepler          /Maxwell/Pascal/Volta/Turing,
;  11.x for       Kepler (in part)/Maxwell/Pascal/Volta/Turing/Ampere

;Reference https://developer.nvidia.com/cuda-gpus#compute for arch and family name


CMake Error at cmake/CUDA.cmake:71 (message):
  Unsupported CUDA architecture '30' specified.  Use CUDA v10.x maximum,
  Kepler (30) was dropped at v11.
Call Stack (most recent call first):
  CMakeLists.txt:76 (include)


-- Configuring incomplete, errors occurred!
See also "xmrig-cuda/build/CMakeFiles/CMakeOutput.log".
See also "xmrig-cuda/build/CMakeFiles/CMakeError.log".

I don't have much time to spend, I'll try later

zxfrank avatar Jan 18 '21 19:01 zxfrank

Do not specify all the CUDA details, only provide the toolkit base location with CUDA_TOOLKIT_ROOT_DIR, the rest is - and should only be - detected by CMake. My build script:

CC=/usr/bin/gcc-8 CXX=/usr/bin/g++-8 \
 cmake /usr/src/xmrig-cuda \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 \
  -DCUDA_VERBOSE_BUILD=ON \
  -DCUDA_ARCH=30\;52 \

It clearly told you what is wrong: image

EDIT: If you don't actually have an arch30 card, then supply the CUDA_ARCH with what card(s) you actually have. Otherwise it will try to add every GPU it knows about which is a waste of time and space.

The main bug is you've put /bin on the end of the actual toolkit root.

Spudz76 avatar Jan 18 '21 21:01 Spudz76

Could someone upload a compiled 11.2 version?

I've installed the plugin but when I start it always reports that Cuda is disabled. I have a 3090 on the system.

jamsoft avatar Feb 20 '21 14:02 jamsoft

Actually, scratch that.

I've got a 3090 with the latest drivers. I've downloaded the 11.1 XRig cuda driver, went through the setup process.

Initially I couldn't get it running. I rebooted, setup the permissions to unblock XRig from the ransomeware policy. Then I removed the config.json file from where XRig.exe lives.

I then executed my batch command I got from my pool homepage and low and behold, CUDA processing kicked in.

So any 30xx card with 11.2 should work fine with the 11.1 Cuda XRig driver.

jamsoft avatar Feb 20 '21 14:02 jamsoft

@jamsoft Could you share your compile setting ? thanks in advance. I have both 3090 and 1080ti, cannot find the correct way to compile the library under linxu following is my command.

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -DCUDA_VERBOSE_BUILD=ON -DCUDA_ARCH=30 -DCMAKE_C_COMPILER=$(which gcc) -DCMAKE_CXX_COMPILER=$(which g++)

strategist922 avatar Mar 28 '21 08:03 strategist922

@strategist922 the -DCUDA_ARCH=30 means you've told it to only compile for Kepler cores (like GTX770) and nothing else. So of course that won't ever work for 1080ti (arch 61) or 3090 (arch 86).

Try with -DCUDA_ARCH=61\;86 and then it will be able to drive those cards.

Also to force compiler use environment var prefixing of CC=$(which gcc) CXX=$(which g++) cmake .. -D(and so on) instead of the CMAKE_C_COMPILER and CMAKE_CXX_COMPILER

My build script for Cuda11.0 and 1060 (arch 61)

CC=/usr/bin/gcc-9 CXX=/usr/bin/g++-9 \
 cmake /usr/src/xmrig-cuda \
  -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.0 \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DCUDA_VERBOSE_BUILD=ON \
  -DCUDA_SHOW_REGISTER=ON \
  -DCUDA_ARCH=61 \

Spudz76 avatar Mar 30 '21 22:03 Spudz76

Debian bullseye/testing Notebook GTX 1050M Desktop GTX 1070

From the official testing repo: Nvidia-driver 460.56-1 (plus dependencies or whatever) nvidia-cuda-toolkit 11.2.1-2 libhwloc-plugins 2.4.1+dfsg-1 libhwloc-contrib-plugins 2.4.1+dfsg-2

git clone https://github.com/xmrig/xmrig-cuda.git mkdir xmrig-cuda/build && cd xmrig-cuda/build Changed cmake to: cmake .. -DCUDA_LIB=/usr/lib/x86_64-linux-gnu/stubs/libcuda.so -DCUDA_TOOLKIT_ROOT_DIR=/usr/lib/nvidia-cuda-toolkit

Only warnings I get are: /home/user/github/xmrig-cuda/src/RandomX/randomx_cuda.hpp(319): warning: pointless comparison of unsigned integer with zero

/home/user/github/xmrig-cuda/src/cuda_extra.cu: In function ‘void cryptonight_extra_cpu_prepare(nvid_ctx*, uint32_t, const xmrig_cuda::Algorithm&)’: /home/user/github/xmrig-cuda/src/cuda_extra.cu:415:170: warning: passing argument 5 to ‘restrict’-qualified parameter aliases with argument 6 [-Wrestrict] 415 | CUDA_CHECK_KERNEL(ctx->device_id, cryptonight_extra_gpu_prepareAlgorithm::CN_0<<<grid, block >>>(wsize, ctx->d_input, ctx->inputlen, startNonce, | ^
/home/user/github/xmrig-cuda/src/cuda_extra.cu: In function ‘int cuda_get_deviceinfo(nvid_ctx*)’: /home/user/github/xmrig-cuda/src/cuda_extra.cu:571:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘const size_t’ {aka ‘const long unsigned int’} [-Wsign-compare] 571 | if (ctx->device_blocks > max_blocks) { | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~

libxmrig-cuda.so is succesfully build and working on notebook and desktop (not that it makes a lot of difference in hashrate, but it is a nice exercise.

Now if someone can enlighten me on the warnings I'll be a happy camper.

If anyone wants to try libxmrig-cuda.so.zip

DeeDeeRanged avatar Apr 06 '21 13:04 DeeDeeRanged

I've seen those warnings forever, they are not actually a problem.

Spudz76 avatar Apr 10 '21 01:04 Spudz76

I know they are only warnings but it would have been nice to know why specially the "/home/user/github/xmrig-cuda/src/RandomX/randomx_cuda.hpp(319): warning: pointless comparison of unsigned integer with zero" as that seems to take forever when building the libxmrig-cuda.so :-) Just out of curiousity.

DeeDeeRanged avatar Apr 10 '21 08:04 DeeDeeRanged

nvcc parts just take a while, normally, even if that warning was not there. You can enable options on CMake commandline:

  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DCUDA_VERBOSE_BUILD=ON \
  -DCUDA_SHOW_REGISTER=ON \

And then it will appear to be doing things while it's taking forever, rather than chewing quietly. I have never run a build without those options so perhaps I don't notice how slow it might be because it has more lively output (looks busy).

Spudz76 avatar Apr 11 '21 22:04 Spudz76

@strategist922 the -DCUDA_ARCH=30 means you've told it to only compile for Kepler cores (like GTX770) and nothing else. So of course that won't ever work for 1080ti (arch 61) or 3090 (arch 86).

Try with -DCUDA_ARCH=61\;86 and then it will be able to drive those cards.

Also to force compiler use environment var prefixing of CC=$(which gcc) CXX=$(which g++) cmake .. -D(and so on) instead of the CMAKE_C_COMPILER and CMAKE_CXX_COMPILER

My build script for Cuda11.0 and 1060 (arch 61)

CC=/usr/bin/gcc-9 CXX=/usr/bin/g++-9 \
 cmake /usr/src/xmrig-cuda \
  -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.0 \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DCUDA_VERBOSE_BUILD=ON \
  -DCUDA_SHOW_REGISTER=ON \
  -DCUDA_ARCH=61 \

if I have a rig only with a specific arch will there be any significant benefit to compiling for just that other than the overall size of the shared object library?

RCTORONTO avatar Jun 12 '21 02:06 RCTORONTO

my comment was for Spudz76

RCTORONTO avatar Jun 12 '21 02:06 RCTORONTO

Saves compile time mostly, and size, yes.

The default arch string may also not include every GPU variant. I am not too familiar with which, since I have used custom CUDA_ARCH string since day 0.

Spudz76 avatar Jun 12 '21 13:06 Spudz76