Closed liyujcx closed 1 year ago
Looks like your build machine and your target machine running the executable are different. Bladebit CUDA builds set -arch native
when building locally. You'll have to comment out that line or set the environment variable CI=1
when building
Looks like your build machine and your target machine running the executable are different. Bladebit CUDA builds set
-arch native
when building locally. You'll have to comment out that line or set the environment variableCI=1
when building
!!!!!, after set env, it works well. why not set CI=1 as default?
I build on ubantu22.04, but can't run. Running Error: root@lizhihua-X9DRL-3F-iF:~/cuda/self_build# ./bladebit_cuda -n 1 -f xx-p xx--compress 0 cudaplot /mnt/chia/tmp1
Bladebit Chia Plotter Version : 3.0.0-alpha3-dev Git Commit : 21e4a08969ac307214714dd578f4e5d4ea355d85 Compiled With: gcc 11.3.0
[Global Plotting Config] Will create 1 plots. Thread count : 40 Warm start enabled : false NUMA disabled : false CPU affinity disabled : false Farmer public key : xxx Pool public key : xxx Benchmark mode : disabled
[Bladebit CUDA Plotter] Selected cuda device 0 : NVIDIA GeForce RTX 3070 CUDA Compute Capability : 8.6 SM count : 46 Max blocks per SM : 16 Max threads per SM : 1536 Async Engine Count : 2 L2 cache size : 4.00 MB L2 persist cache max size : 3.00 MB Stack Size : 1.00 KB Memory: Total : 7.78 GB Free : 1.28 GB Illegal instruction (core dumped)
Build Log: root@lizhihua-virtual-machine:~/bladebit/build# cmake .. && cmake --build . --config Release --target bladebit_cuda -j4 -- The C compiler identification is GNU 9.5.0 -- The CXX compiler identification is GNU 11.3.0 -- The ASM compiler identification is GNU -- Found assembler: /usr/bin/cc -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found CUDAToolkit: /usr/local/cuda/include (found version "12.0.140") -- Looking for pthread.h -- Looking for pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE Found CUDA: true NVCC : /usr/local/cuda/bin/nvcc -- The CUDA compiler identification is NVIDIA 12.0.140 -- Detecting CUDA compiler ABI info -- Detecting CUDA compiler ABI info - done -- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc - skipped -- Detecting CUDA compile features -- Detecting CUDA compile features - done Config : Release Compiler : GNU CI build : false -- Build python bindings: 0 -- Build tests: 0 -- Build benchmarks: 0 -- Relic will be built from: 1d98e5abf3ca5b14fd729bd5bcced88ea70ecfd7 GMP_INCLUDES=/usr/include/x86_64-linux-gnu -- Found gmp: /usr/include/x86_64-linux-gnu -- Found libgmp
-- Configuring RELIC 0.5.0...
-- Available switches (default = CHECK, VERBS, DOCUM):
DEBUG=[off|on] Build with debugging support. PROFL=[off|on] Build with profiling support. CHECK=[off|on] Build with error-checking support. VERBS=[off|on] Build with detailed error messages. OVERH=[off|on] Build with overhead estimation. DOCUM=[off|on] Build documentation. STRIP=[off|on] Build only selected algorithms. QUIET=[off|on] Build with printing disabled. COLOR=[off|on] Build with colored output. BIGED=[off|on] Build with big-endian support. SHLIB=[off|on] Build shared library. STLIB=[off|on] Build static library. STBIN=[off|on] Build static binaries. AMALG=[off|on] Build amalgamation for better performance. AUSAN=[off|on] Build with ASan and UBSan (gcc/clang only).
-- Number of times each test or benchmark is ran (default = 50, 1000):
TESTS=n If n > 0, build automated tests and run them n times. BENCH=n If n > 0, build automated benchmarks and run them n * n times.
-- Number of available processor cores (default = 1):
CORES=n If n > 1, enable multithreading support.
-- Available modules (default = ALL)
WITH=BN Multiple precision arithmetic. WITH=DV Temporary double-precision digit vectors. WITH=FP Prime field arithmetic. WITH=FPX Prime extension field arithmetic. WITH=FB Binary field arithmetic. WITH=EP Elliptic curves over prime fields. WITH=EPX Elliptic curves over quadratic extensions of prime fields. WITH=EB Elliptic curves over binary fields. WITH=ED Elliptic Edwards curves over prime fields. WTTH=EC Elliptic curve cryptography. WITH=PB Pairings over binary elliptic curves. WITH=PP Pairings over prime elliptic curves. WTTH=PC Pairing-based cryptography. WITH=BC Block ciphers (symmetric encryption). WITH=MD Message digests (hash functions). WITH=CP Cryptographic protocols. WITH=MPC Multi-party computation primitives. WITH=ALL All of the above. Note: the programmer is responsible for not using unselected modules.
-- Available arithmetic backends (default = easy):
ARITH=easy Easy-to-understand and portable, but slow backend. ARITH=fiat Backend based on code generated from Fiat-Crypto. ARITH=gmp Backend based on GNU Multiple Precision library.
ARITH=gmp-sec Same as above, but using constant-time code.
-- Available memory-allocation policies (default = AUTO):
ALLOC=AUTO All memory is automatically allocated. ALLOC=DYNAMIC All memory is allocated dynamically on demand.
-- Supported operating systems (default = LINUX):
OPSYS= Undefined/No specific operating system. OPSYS=LINUX GNU/Linux operating system. OPSYS=FREEBSD FreeBSD operating system. OPSYS=NETBSD NetBSD operating system. OPSYS=MACOSX Mac OS X operating system. OPSYS=WINDOWS Windows operating system. OPSYS=DROID Android operating system. OPSYS=DUINO Arduino platform.
-- Supported multithreading APIs (default = UNDEF):
MULTI= No multithreading support. MULTI=OPENMP Open Multi-Processing. MULTI=PTHREAD POSIX threads.
-- Supported timers (default = HREAL):
TIMER= No timer. TIMER=HREAL GNU/Linux realtime high-resolution timer. TIMER=HPROC GNU/Linux per-process high-resolution timer. TIMER=HTHRD GNU/Linux per-thread high-resolution timer. TIMER=ANSI ANSI-compatible timer. TIMER=POSIX POSIX-compatible timer. TIMER=CYCLE Cycle-counting timer. (architecture-dependant) TIMER=PERF GNU/Linux performance monitoring framework.
-- Prefix to identify this build of the library (default = ""):
LABEL=relic
-- Available architectures (default = X64):
ARCH= No specific architecture (disable some features). ARCH=AVR Atmel AVR ATMega128 8-bit architecture. ARCH=MSP TI MSP430 16-bit architecture. ARCH=ARM ARM 32-bit architecture. ARCH=X86 Intel x86-compatible 32-bit architecture. ARCH=X64 AMD x86_64-compatible 64-bit architecture.
-- Available word sizes (default = 64):
WSIZE=8 Build a 8-bit library. WSIZE=16 Build a 16-bit library. WSIZE=32 Build a 32-bit library. WSIZE=64 Build a 64-bit library.
-- Byte boundary to align digit vectors (default = 1):
ALIGN=1 Do not align digit vectors. ALIGN=2 Align digit vectors into 16-bit boundaries. ALIGN=8 Align digit vectors into 64-bit boundaries. ALIGN=16 Align digit vectors into 128-bit boundaries.
-- Looking for include file execinfo.h -- Looking for include file execinfo.h - found -- Looking for backtrace -- Looking for backtrace - found -- Looking for backtrace_symbols -- Looking for backtrace_symbols - found -- Multiple precision arithmetic configuration (BN module):
** Options for the multiple precision module (default = 1024,DOUBLE,0):
** Available multiple precision arithmetic methods (default = COMBA;COMBA;MONTY;SLIDE;BASIC;BASIC):
-- Prime field arithmetic configuration (FP module):
** Arithmetic precision of the prime field module (default = 256,0,off,off):
** Available prime field arithmetic methods (default = BASIC;COMBA;COMBA;MONTY;MONTY;SLIDE): Field addition FP_METHD=BASIC Schoolbook addition. FP_METHD=INTEG Integrated modular addition.
-- Prime extension field arithmetic configuration (FPX module):
** Available bilinear pairing methods (default = BASIC;BASIC;BASIC): Quadratic extension arithmetic: FPX_METHD=BASIC Basic quadratic extension field arithmetic. FPX_METHD=INTEG Quadratic extension field arithmetic with embedded modular reduction.
-- Binary field arithmetic configuration (FB module):
** Options for the binary elliptic curve module (default = 283,0,on,on,on):
** Available binary field arithmetic methods (default = LODAH;QUICK;QUICK;BASIC;QUICK;QUICK;EXGCD;SLIDE;QUICK):
-- Prime elliptic curve arithmetic configuration (EP module):
** Options for the prime elliptic curve module (default = all on):
** Available prime elliptic curve methods (default = PROJC;LWNAF;COMBS;INTER):
-- Binary elliptic curve arithmetic configuration (EB module):
** Options for the binary elliptic curve module (default = on, w = 4):
** Available binary elliptic curve methods (default = PROJC;LWNAF;COMBS;INTER):
-- Elliptic Edwards curve over prime fields arithmetic configuration (ED module):
** Options for the prime elliptic Edwards curve module (default = all on): ED_PRECO=[off|on] Build precomputation table for generator. ED_DEPTH=w Width w in [2,6] of precomputation table for fixed point methods. ED_WIDTH=w Width w in [2,6] of window processing for unknown point methods.
** Available prime elliptic Edwards curve methods (default = PROJC;LWNAF;COMBS;INTER): ED_METHD=BASIC Affine coordinates. EP_METHD=PROJC Simple projective twisted Edwards coordinates. EP_METHD=EXTND Extended projective twisted Edwards coordinates.
-- Elliptic curve cryptography configuration (EC module):
** Options for the binary elliptic curve module (default = on):
** Available elliptic curve methods (default = PRIME):
-- Bilinear pairings arithmetic configuration (PP module):
** Available bilinear pairing methods (default = BASIC;OATEP):
-- Message digest configuration (MD module):
** Available hash functions (default = SH256):
-- Cryptographic protocols configuration (CP module):
** Options for the cryptographic protocols module (default = on, PKCS2):
-- Available pseudo-random number generators (default = HASHD):
RAND=HASHD Use the HASH-DRBG generator. (recommended) RAND=RDRND Use Intel RdRand instruction directly. RAND=UDEV Use the operating system underlying generator. RAND=CALL Override the generator with a callback.
-- Available random number generator seeders (default = UDEV):
SEED= Use a zero seed. (horribly insecure!) SEED=LIBC Use rand()/random() functions. (insecure!) SEED=RDRND Use Intel RdRand instruction directly. SEED=UDEV Use non-blocking /dev/urandom. (recommended) SEED=WCGR Use Windows' CryptGenRandom. (recommended)
-- Configured operating system: LINUX -- Configured GMP: -I/usr/include/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu/libgmp.so -- Compiler flags: -Wall -O3 -funroll-loops -fomit-frame-pointer -pthread -- Linker flags: -L/root/bladebit/build/_deps/relic-src/src/low/gmp/ -- Configured /root/bladebit/build/_deps/relic-src/include/relic_conf.h.in -- Found NUMA: /usr/include Embedding local build version -- Configuring done -- Generating done -- Build files have been written to: /root/bladebit/build [ 0%] Built target arith_objs [ 0%] Building C object _deps/sodium-build/CMakeFiles/sodium.dir/cmake_pch.h.gch
/root/bladebit/cuda/MatchCuda.cu(10): warning #177-D: variable "BBCU_MIN_GROUP_COUNT" was declared but never referenced
[ 97%] Building CUDA object CMakeFiles/lib_bladebit_cuda.dir/cuda/CudaPlotUtil.cu.o [ 98%] Building CXX object CMakeFiles/lib_bladebit_cuda.dir/cuda/GpuStreams.cpp.o /root/bladebit/cuda/MatchCuda.cu(29): warning #177-D: variable "groupIdx" was declared but never referenced
Remark: The warnings can be suppressed with "-diag-suppress"
/root/bladebit/cuda/MatchCuda.cu(39): warning #177-D: variable "groupIdx" was declared but never referenced
/root/bladebit/cuda/MatchCuda.cu(40): warning #177-D: variable "gid" was declared but never referenced
/root/bladebit/cuda/MatchCuda.cu(52): warning #177-D: variable "lastThreadId" was declared but never referenced
/root/bladebit/cuda/MatchCuda.cu(96): warning #177-D: variable "gid" was declared but never referenced
/root/bladebit/cuda/MatchCuda.cu(10): warning #177-D: variable "BBCU_MIN_GROUP_COUNT" was declared but never referenced
/root/bladebit/cuda/CudaParkSerializer.cu(133): warning #177-D: variable "parkSizeWritten" was declared but never referenced
Remark: The warnings can be suppressed with "-diag-suppress"
/root/bladebit/cuda/CudaParkSerializer.cu(133): warning #177-D: variable "parkSizeWritten" was declared but never referenced
Remark: The warnings can be suppressed with "-diag-suppress"
[ 98%] Linking CUDA device code CMakeFiles/lib_bladebit_cuda.dir/cmake_device_link.o [ 98%] Linking CXX static library liblib_bladebit_cuda.a [ 98%] Built target lib_bladebit_cuda [ 98%] Building CXX object CMakeFiles/bladebit_cuda.dir/src/main.cpp.o [100%] Linking CUDA device code CMakeFiles/bladebit_cuda.dir/cmake_device_link.o [100%] Linking CXX executable bladebit_cuda [100%] Built target bladebit_cuda root@lizhihua-virtual-machine:~/bladebit/build# root@lizhihua-virtual-machine:~/bladebit/build# root@lizhihua-virtual-machine:~/bladebit/build# ls -la total 97512 drwxr-xr-x 4 root root 4096 3月 27 21:59 . drwxr-xr-x 11 root root 4096 3月 27 21:49 .. -rwxr-xr-x 1 root root 36192560 3月 27 21:59 bladebit_cuda -rw-r--r-- 1 root root 40464 3月 27 21:57 CMakeCache.txt drwxr-xr-x 10 root root 4096 3月 27 21:59 CMakeFiles -rw-r--r-- 1 root root 1851 3月 27 21:57 cmake_install.cmake drwxr-xr-x 14 root root 4096 3月 27 21:56 _deps -rw-r--r-- 1 root root 57311938 3月 27 21:58 libbladebit.a -rw-r--r-- 1 root root 6176106 3月 27 21:59 liblib_bladebit_cuda.a -rw-r--r-- 1 root root 99386 3月 27 21:57 Makefile root@lizhihua-virtual-machine:~/bladebit/build# ./bladebit_cuda