Giter Site home page Giter Site logo

plasmapower / nano-vanity Goto Github PK

View Code? Open in Web Editor NEW
90.0 4.0 30.0 175 KB

A NANO vanity address generator (supports OpenCL)

License: BSD 2-Clause "Simplified" License

Rust 13.18% C 86.42% Python 0.39%
nano nano-currency gpu opencl cryptocurrency

nano-vanity's Issues

--suffix "word" simple does not work: generates incorrect seeds

The software generates a key but it is not correct.

Steps to reproduce:

  1. Use the following command to try to generate suffixes:
    Command: nano-vanity "1xx" --suffix "xx" --gpu --simple-output --limit 0
  2. Wait for a key to show up (it would appear to work correctly)
    Example key/account: 21FC40739D913D18CA48191311B63AA50A04C75AC8065DB3E60C5C244DC305A7 xrb_1xxhwfuxu55de4mm78sd393r4eccc4t5oekrbib3j3ptfefdayaocddewwxx
  3. Try to import this key in any wallet. The address there will be different from the above.
    Addrs for the key above: nano_1irrk8k5k5inprjgztx4c8cbiqgewjghn71ocajb1sdch59unqdtyg3js1q1

New NVIDIA OpenCL error

I'm getting this when trying to compile any commit (I also tried 30eedd0) on my current system. I have opencl-nvidia 415.25-1 from the Arch Linux repositories.

Instruction does not dominate all uses!
  %getElem5841.16 = getelementptr [64 x i8] addrspace(5)* %125, i64 0, i64 16
  %1926 = bitcast i8 addrspace(5)* %getElem5841.16 to <4 x i32> addrspace(5)*
Broken module found, compilation terminated!

cc @webmaster128

Thread overflow on AMD gpus

I keep getting a "thread 'main' has overflowed" error while using it with the -g option. Using it cpu-only works.
GPU is AMD RX 5600XT with latest drivers and the package was compiled with the --features gpu.

Couldn't find anything related other than an old post in the subreddit. Any workarounds?

Add parameter to optionally set local work group size

Right now, the OpenCL local work group size is determined by the platform, which is a good default.

But when manually setting local_work_size to 128 for my NVIDIA GPU, I was able to improve speed from 1.6M/s to more than 2.1M/s, which is a performance gain of 31 %.

However, using local work group size can be tricky if you don't know what you are doing. Setting it to any value > 1 on Apple-Intel-CPU systems gives you hard to understand error messages. This I'd classify it as an optional advanced feature.

Seed doesn't match generated wallet

I generated an address:
nano_1nicknamea58s7t9kxdaqndgb6udb3kge7peys13rjqqroxnsjcaxmhmjb8a

However, when I add the Private Key to Natrium I'm getting a different address:
nano_3hagfztpzj1sofogh6cf9d5ywxybsx8q6mskkhqz6p5b4s3swwc4wnj6q4dg

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value

Hello,
I thought I'd leave this here in case it helps narrow down the source of the issue that seems to be reference in this previous issue.

output of nvcc -V on Windows showing that cuda was installed.

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May__3_19:41:42_Pacific_Daylight_Time_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0

C++ was installed through visual studio community 2019.

GPU: Nvidia GeForce GTX 1650 Super
CPU: AMD Ryzen 5 3600

C:\Users\me\Documents\GitHub\nano-vanity> nano-vanity -g .karmaca1
Estimated attempts needed: 1099511627776
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: 

###################### OPENCL PROGRAM BUILD DEBUG OUTPUT ######################

<kernel>:292:25: error: implicit conversion from address space "generic" to address space "private" is not supported when passing to parameter of destination type
          blake2b_compress( S, S->buf ); // Compress
                               ^~~~~~
<kernel>:198:70: note: passing argument to parameter 'block' here
static int blake2b_compress( blake2b_state *S, __private const uchar block[BLAKE2B_BLOCKBYTES] )
                                                                     ^
<kernel>:317:23: error: implicit conversion from address space "generic" to address space "private" is not supported when passing to parameter of destination type
        blake2b_compress( S, S->buf );
                             ^~~~~~
<kernel>:198:70: note: passing argument to parameter 'block' here
static int blake2b_compress( blake2b_state *S, __private const uchar block[BLAKE2B_BLOCKBYTES] )
                                                                     ^
<kernel>:331:24: error: implicit conversion from address space "generic" to address space "private" is not supported when passing to parameter of destination type
  blake2b_compress( S, S->buf );
                       ^~~~~~
<kernel>:198:70: note: passing argument to parameter 'block' here
static int blake2b_compress( blake2b_state *S, __private const uchar block[BLAKE2B_BLOCKBYTES] )
                                                                     ^

###############################################################################

', C:\Users\me\.cargo\registry\src\github.com-1ecc6299db9ec823\nano-vanity-0.4.10\src\main.rs:404:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Some googling on the first issue brought me to this page., but I am unable to diagnose further.

Wish I could be of more help! Also wish I could make this amazing tool work for this GPU! Thanks.

Thread panic - tried different gpu options but none worked so far

C:\Users\c>nano-vanity .do11ar --gpu
Estimated attempts needed: 1073741824
Instruction does not dominate all uses!
%getElem5841.16 = getelementptr [64 x i8] addrspace(5)* %125, i64 0, i64 16
%1926 = bitcast i8 addrspace(5)* %getElem5841.16 to <4 x i32> addrspace(5)*
Broken module found, compilation terminated!
thread 'main' panicked at 'called Result::unwrap() on an Err value:

###################### OPENCL PROGRAM BUILD DEBUG OUTPUT ######################

###############################################################################

', libcore\result.rs:945:5
note: Run with RUST_BACKTRACE=1 for a backtrace.

Specs; Windows 10, CUDA toolkit installed,
Graphics Card: Nvidia 660

failed to install with --features gpu

~/nano-vanity/nano-vanity-master# cargo install --features gpu
Installing nano-vanity v0.4.0 (file:///root/nano-vanity/nano-vanity-master)
Downloading num-traits v0.2.0
Downloading libc v0.2.36
Downloading cl-sys v0.4.0
Downloading rustc-demangle v0.1.5
Downloading cc v1.0.4
Compiling rustc-demangle v0.1.5
Compiling typenum v1.9.0
Compiling libc v0.2.36
Compiling hex v0.3.1
Compiling vec_map v0.8.0
Compiling bitflags v1.0.1
Compiling unicode-width v0.1.4
Compiling cl-sys v0.4.0
Compiling arrayref v0.3.4
Compiling byte-tools v0.2.0
Compiling semver v0.1.20
Compiling cfg-if v0.1.2
Compiling crossbeam v0.3.2
Compiling nodrop v0.1.12
Compiling rustc-serialize v0.3.24
Compiling num-traits v0.2.0
Compiling constant_time_eq v0.1.3
Compiling subtle v0.5.1
Compiling strsim v0.7.0
Compiling futures v0.1.18
Compiling ansi_term v0.10.2
Compiling cc v1.0.4
Compiling textwrap v0.9.0
Compiling atty v0.2.6
Compiling num_cpus v1.8.0
Compiling rand v0.4.2
Compiling rustc_version v0.1.7
Compiling num-traits v0.1.43
Compiling num-integer v0.1.36
Compiling ocl-core v0.7.0
Compiling clap v2.30.0
Compiling subtle v0.3.0
Compiling enum_primitive v0.1.1
Compiling num-iter v0.1.35
Compiling qutex v0.2.0
Compiling generic-array v0.9.0
Compiling rand v0.3.22
Compiling crypto-mac v0.5.2
Compiling digest v0.7.2
Compiling blake2 v0.7.0
Compiling clear_on_drop v0.2.3
Compiling backtrace-sys v0.1.16
Compiling curve25519-dalek v0.14.4
Compiling num-complex v0.1.42
Compiling num-bigint v0.1.43
Compiling num-rational v0.1.42
Compiling backtrace v0.3.5
Compiling failure v0.1.1
Compiling num v0.1.42
Compiling ocl-core-vector v0.1.0
Compiling ed25519-dalek v0.6.1
Compiling ocl v0.16.0
Compiling nano-vanity v0.4.0 (file:///root/nano-vanity/nano-vanity-master)
error: linking with cc failed: exit code: 1
|
= note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/root/nano-vanity/nano-vanity-master/target/release/deps/nano_vanity-e98b75db9238ae4f.0.o" "-o" "/root/nano-vanity/nano-vanity-master/target/release/deps/nano_vanity-e98b75db9238ae4f" "/root/nano-vanity/nano-vanity-master/target/release/deps/nano_vanity-e98b75db9238ae4f.crate.allocator.o" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-nodefaultlibs" "-L" "/root/nano-vanity/nano-vanity-master/target/release/deps" "-L" "/root/nano-vanity/nano-vanity-master/target/release/build/clear_on_drop-e31b3549d3a3788c/out" "-L" "/root/nano-vanity/nano-vanity-master/target/release/build/backtrace-sys-8536398d32f70e75/out/.libs" "-L" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/root/nano-vanity/nano-vanity-master/target/release/deps/libocl-a586ab7596474069.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libocl_core-ed4bff774d81f3d4.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libqutex-60a4ee5405d0f8cd.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libed25519_dalek-c758208c8d60d38e.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libcurve25519_dalek-c6607aae326682b0.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libclear_on_drop-1790b263f285a563.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libfailure-2aeae3160c128342.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libbacktrace-fa904867419d62dd.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libbacktrace_sys-0a5ec6814934dcb8.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/librustc_demangle-cdad43a5a003a927.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libclap-774af01714bdf930.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libvec_map-814cd7c0cf4808e8.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libstrsim-9792a05c601b6e06.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libansi_term-cb67ce61483156b0.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libbitflags-aaad46cffcbd6f6a.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libnum_cpus-7e300dd3defaa2d4.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/librand-bd2a0b064338e455.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libcl_sys-c70e315c996e972a.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libnodrop-852c784118b28f59.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libsubtle-644a5e9b6574fbfa.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libsubtle-df31ee803002899e.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libcfg_if-203f3666a5d87c9e.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libblake2-2e8e72341de0d407.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libcrypto_mac-f3106c26653e46f5.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libdigest-da20e4e8988200e8.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libgeneric_array-e06b25bf54f0105d.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libtypenum-aaa338f807d04bc2.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libbyte_tools-0f3829862101d1d1.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libconstant_time_eq-9a5607ae9c6f1f88.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libatty-f9b1566069f31dad.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libtextwrap-dfd3f8c0b8441f67.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libunicode_width-bc5bebd2ab11f344.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libhex-e752b7e44f848907.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libenum_primitive-d2f7e24061da5d81.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libnum_traits-af354f4ad0703949.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libocl_core_vector-ef5d6ef2db2cd8b8.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libnum-4fe63ae2190c8f98.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libnum_rational-b111bb314337e07a.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libnum_bigint-0ea0a8aaecff2a19.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/librand-58d20777451da52e.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/liblibc-66e80913b145d958.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libnum_complex-69ca63cbf5c0aaf2.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/librustc_serialize-98f6fa729dd98050.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libnum_iter-ea87d528b4f55854.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libnum_integer-a6c39fc043e78905.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libnum_traits-e7894a81995a17be.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libfutures-61d9485b651fc63f.rlib" "/root/nano-vanity/nano-vanity-master/target/release/deps/libcrossbeam-806de6745177f51e.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-93d5378bceaf3688.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-5b1e62694efc0852.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-99d160586f71fd24.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_system-5c3db1423b91616a.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-01818c88b0095d9d.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-8fd871d342558b7c.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_unicode-24d077784ff294bb.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-c81546f616bee1cb.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-a607da81e1566936.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-48849975bde268ae.rlib" "-Wl,-Bdynamic" "-l" "OpenCL" "-l" "OpenCL" "-l" "util" "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "gcc_s" "-l" "c" "-l" "m" "-l" "rt" "-l" "pthread" "-l" "util"
= note: /usr/bin/ld: cannot find -lOpenCL
/usr/bin/ld: cannot find -lOpenCL
collect2: error: ld returned 1 exit status

error: aborting due to previous error

error: failed to compile nano-vanity v0.4.0 (file:///root/nano-vanity/nano-vanity-master), intermediate artifacts can be found at /root/nano-vanity/nano-vanity-master/target

Caused by:
Could not compile nano-vanity.

To learn more, run the command again with --verbose.

Compilation issue with modern AMD + optimization enabled

Current master at fc81a55 does not compile (as discussed in https://community.amd.com/thread/234809)

  1. Get a single-use Ubuntu 16.04 machine (no GPU required; 18.04 does not work due to kernel version compatibility of rocm-dkms)
  2. Login as root
apt update && apt upgrade -y && apt autoremove -y && apt install -y htop libnuma-dev && reboot
wget -qO - http://repo.radeon.com/rocm/apt/debian/rocm.gpg.key | sudo apt-key add -
echo 'deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main' | sudo tee /etc/apt/sources.list.d/rocm.list
apt update && apt install -y rocm-dkms
git clone https://github.com/PlasmaPower/nano-vanity.git && cd nano-vanity
./merge-kernel.py > kernel.cl

/opt/rocm/opencl/bin/x86_64/clang -include/opt/rocm/opencl/include/opencl-c.h -cl-std=CL1.2 -c -O0 kernel.cl
# good: creates kernel.o

/opt/rocm/opencl/bin/x86_64/clang -include/opt/rocm/opencl/include/opencl-c.h -cl-std=CL1.2 -c kernel.cl
# bad: does not terminate

Maybe there is some error which clang does not report. However, since CPU is at 100 % as long as the compiler runs it is more likely to be an infinite loop in the optimization process.

This may or may not be an issue in this project's code.

xor ID into key_root instead of dereferencing

In a fork of this project (other coin), the following change made the difference between working an non-working (no GPU results after thousands of %) on a NVIDIA Corporation GeForce GTX 1080, OpenCL 1.2.

diff --git a/src/opencl/entry.cl b/src/opencl/entry.cl
index fbd7a4f..47fb738 100644
--- a/src/opencl/entry.cl
+++ b/src/opencl/entry.cl
@@ -23,12 +23,20 @@ __kernel void generate_pubkey(
        ulong max_address_value,
        uchar generate_key_type
 ) {
-       int const thread = get_global_id (0);
        uchar key_material[32];
        for (size_t i = 0; i < 32; i++) {
                key_material[i] = key_root[i];
        }
-       *((size_t *) key_material) += thread;
+
+       const uint64_t thread_id = get_global_id(0);
+       key_material[24] ^= (thread_id >> (7*8)) & 0xFF;
+       key_material[25] ^= (thread_id >> (6*8)) & 0xFF;
+       key_material[26] ^= (thread_id >> (5*8)) & 0xFF;
+       key_material[27] ^= (thread_id >> (4*8)) & 0xFF;
+       key_material[28] ^= (thread_id >> (3*8)) & 0xFF;
+       key_material[29] ^= (thread_id >> (2*8)) & 0xFF;
+       key_material[30] ^= (thread_id >> (1*8)) & 0xFF;
+       key_material[31] ^= (thread_id >> (0*8)) & 0xFF;

My suggestion is that when dereferencing and assigning to key_material, the compiler does not understand that key_material depends on get_global_id.

Do you want to have this patch on master to avoid future surprises? Unfortunatly I cannot reproduce master by the patch because of #28.

Can not compile with --features gpu

error: aborting due to previous error

error: failed to compile `nano-vanity v0.4.0`, intermediate artifacts can be found at `C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB`

Caused by:
  Could not compile `nano-vanity`.

Caused by:
  process didn't exit successfully: `rustc --crate-name nano_vanity src\main.rs --crate-type bin --emit=dep-info,link -C opt-level=3 --cfg feature="gpu" --cfg feature="ocl" --cfg feature="ocl-core" -C metadata=da7dd52644eae442 -C extra-filename=-da7dd52644eae442 --out-dir C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps -L dependency=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps --extern blake2=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\libblake2-4a2e3ac7aa65828c.rlib --extern ocl=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\libocl-8e5c08b7eb8fa228.rlib --extern hex=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\libhex-8e2a706de0073980.rlib --extern ocl_core=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\libocl_core-68a2b179f86996a8.rlib --extern num_traits=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\libnum_traits-d0ed5e42940e5529.rlib --extern num_cpus=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\libnum_cpus-d3a19cb303e43454.rlib --extern ed25519_dalek=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\libed25519_dalek-25316837d4d6fa98.rlib --extern clap=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\libclap-c12fba289f36b7a0.rlib --extern digest=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\libdigest-96476359bca9424a.rlib --extern rand=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\librand-2e85984d56173d16.rlib --extern num_bigint=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\deps\libnum_bigint-7e362b36c2d05ba7.rlib --cap-lints allow -L native=C:\Users\Benjamin\AppData\Local\Temp\cargo-install.aPTN3oVY9xCB\release\build\clear_on_drop-9e37e71548bd5be8\out` (exit code: 101)

the parameter type `T` must be valid for the static lifetime...

$ cargo run
   Compiling rustc-serialize v0.3.24
error[E0310]: the parameter type `T` may not live long enough
    --> /Users/brandon/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustc-serialize-0.3.24/src/serialize.rs:1155:5
     |
1155 |     fn decode<D: Decoder>(d: &mut D) -> Result<Cow<'static, T>, D::Error> {
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |     |
     |     the parameter type `T` must be valid for the static lifetime...
     |     ...so that the type `T` will meet its required lifetime bounds...
     |
note: ...that is required by this bound
    --> /Users/brandon/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/borrow.rs:180:30
     |
180  | pub enum Cow<'a, B: ?Sized + 'a>
     |                              ^^
help: consider adding an explicit lifetime bound
     |
1151 | impl<'a, T: ?Sized + 'static> Decodable for Cow<'a, T>
     |                    +++++++++

For more information about this error, try `rustc --explain E0310`.
error: could not compile `rustc-serialize` (lib) due to 1 previous error

Windows Error - fatal error LNK1181: cannot open input file 'OpenCL.lib'

I receive the following error on a fresh install of Windows 10. I have the build tools from here installed. Any idea how to resolve it?

C:\Users\casey\Documents\Development\nano-vanity>cargo install --verbose
  Installing nano-vanity v0.3.4 (file:///C:/Users/casey/Documents/Development/nano-vanity)
       Fresh unicode-width v0.1.4
       Fresh arrayref v0.3.4
       Fresh constant_time_eq v0.1.3
       Fresh libc v0.2.36
       Fresh cc v1.0.4
       Fresh crossbeam v0.3.2
       Fresh rustc-serialize v0.3.24
       Fresh cfg-if v0.1.2
       Fresh byte-tools v0.2.0
       Fresh subtle v0.5.1
       Fresh vec_map v0.8.0
       Fresh nodrop v0.1.12
       Fresh num-traits v0.2.0
       Fresh hex v0.3.1
       Fresh rustc-demangle v0.1.5
       Fresh semver v0.1.20
       Fresh futures v0.1.18
       Fresh strsim v0.7.0
       Fresh bitflags v1.0.1
       Fresh textwrap v0.9.0
       Fresh num_cpus v1.8.0
       Fresh num-complex v0.1.42
       Fresh num-integer v0.1.36
       Fresh num-traits v0.1.43
       Fresh rustc_version v0.1.7
       Fresh qutex v0.2.0
       Fresh winapi v0.3.4
       Fresh num-iter v0.1.35
       Fresh enum_primitive v0.1.1
       Fresh subtle v0.3.0
       Fresh cl-sys v0.4.0
       Fresh typenum v1.9.0
       Fresh rand v0.4.2
       Fresh atty v0.2.6
       Fresh backtrace v0.3.5
       Fresh clear_on_drop v0.2.3
       Fresh generic-array v0.9.0
       Fresh num-bigint v0.1.43
       Fresh rand v0.3.22
       Fresh clap v2.30.0
       Fresh failure v0.1.1
       Fresh crypto-mac v0.5.2
       Fresh digest v0.7.2
       Fresh num-rational v0.1.42
       Fresh blake2 v0.7.0
       Fresh num v0.1.42
       Fresh ocl-core-vector v0.1.0
       Fresh curve25519-dalek v0.14.4
       Fresh ocl-core v0.7.0
       Fresh ed25519-dalek v0.6.1
       Fresh ocl v0.16.0
   Compiling nano-vanity v0.3.4 (file:///C:/Users/casey/Documents/Development/nano-vanity)
     Running `rustc --crate-name nano_vanity src\main.rs --crate-type bin --emit=dep-info,link -C opt-level=3 -C metadata=712667d6acba450c -C extra-filename=-712667d6acba450c --out-dir C:\Users\casey\Documents\Development\nano-vanity\target\release\deps -L dependency=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps --extern num_bigint=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libnum_bigint-f411eb8ae6ecb9de.rlib --extern ocl_core=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libocl_core-5b9033774547e116.rlib --extern hex=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libhex-b6b520324b899dca.rlib --extern num_traits=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libnum_traits-18ac497ca6efcf51.rlib --extern digest=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libdigest-e5901f0a5ecb978a.rlib --extern clap=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libclap-cc9b1dafb0c7e65b.rlib --extern blake2=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libblake2-c66db1b04532aa40.rlib --extern ocl=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libocl-4c28c029872ae12e.rlib --extern rand=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\librand-88d68ddc6bb54f5a.rlib --extern num_cpus=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libnum_cpus-6d3133cb552e2268.rlib --extern ed25519_dalek=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libed25519_dalek-85e5f4c676e39504.rlib -L native=C:\Users\casey\Documents\Development\nano-vanity\target\release\build\clear_on_drop-0c31754f9fbbe439\out`
error: linking with `link.exe` failed: exit code: 1181
  |
  = note: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.12.25827\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity0-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity1-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity10-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity11-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity12-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity13-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity14-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity15-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity2-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity3-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity4-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity5-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity6-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity7-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity8-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.nano_vanity9-8b240a95007d5922e3d0b4b0c0588d54.rs.rcgu.o" "/OUT:C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.exe" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\nano_vanity-712667d6acba450c.crate.allocator.rcgu.o" "/OPT:REF,ICF" "/DEBUG" "/NATVIS:C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/LIBPATH:C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps" "/LIBPATH:C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\build\\clear_on_drop-0c31754f9fbbe439\\out" "/LIBPATH:C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libclap-cc9b1dafb0c7e65b.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libstrsim-87172970a0ee1d1d.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libvec_map-c56be344bb54e1e0.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libblake2-c66db1b04532aa40.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libbyte_tools-30ea367c490fd762.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libnum_cpus-6d3133cb552e2268.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libed25519_dalek-85e5f4c676e39504.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libsubtle-f3c2186edb82999e.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libcurve25519_dalek-97cb1e296133d6e8.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libsubtle-27ef7d8df68e2725.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libdigest-e5901f0a5ecb978a.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libclear_on_drop-8925996a6b25ac1d.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libfailure-8bf38fd17cbe343a.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libbacktrace-caa587d04210c86d.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libcfg_if-e987c9ad8a4b17a4.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\librustc_demangle-6cf6462f07a69d99.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libcrypto_mac-60f3e4ebe2e0b354.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libgeneric_array-8c0caf03b165fec7.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libtypenum-c3dd495998ad2619.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libconstant_time_eq-67da61502985aa61.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libatty-9e06c157068926cb.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libtextwrap-62593ca603d73304.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libunicode_width-42ff7d5058597ced.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libhex-b6b520324b899dca.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libocl-4c28c029872ae12e.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libnodrop-c4d8d8911e5c0663.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libocl_core-5b9033774547e116.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libcl_sys-6c360987251c7a98.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libocl_core_vector-13962c373abbb680.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\librand-b5c4fb1884122db1.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libenum_primitive-e3d8fb37ef08568e.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libnum_traits-0ec498f46f639416.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libbitflags-2c050cb4199b50d4.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libnum-5019077b50990372.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libnum_rational-70bb46cc8b254ae3.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libnum_bigint-f411eb8ae6ecb9de.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\librand-88d68ddc6bb54f5a.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libwinapi-5f27828cc250bba2.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libnum_complex-241adc4767139bd0.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\librustc_serialize-68a83c17c907530b.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libnum_iter-32855407275e079e.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libnum_integer-97f8d4892f0f61f5.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libnum_traits-18ac497ca6efcf51.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\liblibc-9547bcd980def228.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libqutex-2e8ad109f53c23b7.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libfutures-0b3c52f281e85233.rlib" "C:\\Users\\casey\\Documents\\Development\\nano-vanity\\target\\release\\deps\\libcrossbeam-2c440f1f6a53f463.rlib" "C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-e4012f32ed49dbd4.rlib" "C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-e06b44655de3deec.rlib" "C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-bb7b44a2c820c759.rlib" "C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-7a58eced25824fd9.rlib" "C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc_system-274f63b9d93efba7.rlib" "C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-42d3f88d7348fdd5.rlib" "C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_unicode-0d9e538325cba131.rlib" "C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-a373617f7ef4ae90.rlib" "C:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-5d9fbbf902f0a218.rlib" "OpenCL.lib" "OpenCL.lib" "OpenCL.lib" "OpenCL.lib" "gdi32.lib" "dbghelp.lib" "winspool.lib" "setupapi.lib" "advapi32.lib" "user32.lib" "kernel32.lib" "secur32.lib" "msimg32.lib" "opengl32.lib" "credui.lib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "shell32.lib" "msvcrt.lib"
  = note: LINK : fatal error LNK1181: cannot open input file 'OpenCL.lib'


error: aborting due to previous error

error: failed to compile `nano-vanity v0.3.4 (file:///C:/Users/casey/Documents/Development/nano-vanity)`, intermediate artifacts can be found at `C:\Users\casey\Documents\Development\nano-vanity\target`

Caused by:
  Could not compile `nano-vanity`.

Caused by:
  process didn't exit successfully: `rustc --crate-name nano_vanity src\main.rs --crate-type bin --emit=dep-info,link -C opt-level=3 -C metadata=712667d6acba450c -C extra-filename=-712667d6acba450c --out-dir C:\Users\casey\Documents\Development\nano-vanity\target\release\deps -L dependency=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps --extern num_bigint=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libnum_bigint-f411eb8ae6ecb9de.rlib --extern ocl_core=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libocl_core-5b9033774547e116.rlib --extern hex=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libhex-b6b520324b899dca.rlib --extern num_traits=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libnum_traits-18ac497ca6efcf51.rlib --extern digest=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libdigest-e5901f0a5ecb978a.rlib --extern clap=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libclap-cc9b1dafb0c7e65b.rlib --extern blake2=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libblake2-c66db1b04532aa40.rlib --extern ocl=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libocl-4c28c029872ae12e.rlib --extern rand=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\librand-88d68ddc6bb54f5a.rlib --extern num_cpus=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libnum_cpus-6d3133cb552e2268.rlib --extern ed25519_dalek=C:\Users\casey\Documents\Development\nano-vanity\target\release\deps\libed25519_dalek-85e5f4c676e39504.rlib -L native=C:\Users\casey\Documents\Development\nano-vanity\target\release\build\clear_on_drop-0c31754f9fbbe439\out` (exit code: 101)

Cannot build on ubuntu-20.04 - failed to select a version for the requirement `crypto-mac = "^0.5"`

I cannot build on ubutnu-20.04. Any ideas? I don't have any rust experience.

git sha: 8bc189f

ds@server:/fast/nano-vanity$ cargo install nano-vanity
    Updating crates.io index
  Installing nano-vanity v0.4.11
error: failed to compile `nano-vanity v0.4.11`, intermediate artifacts can be found at `/tmp/cargo-installrJGv9f`

Caused by:
  failed to select a version for the requirement `crypto-mac = "^0.5"`
  candidate versions found which didn't match: 0.11.1, 0.11.0, 0.10.1, ...
  location searched: crates.io index
  required by package `blake2 v0.7.0`
      ... which is depended on by `nano-vanity v0.4.11`
ds@server:/fast/nano-vanity$ cargo install --path .
  Installing nano-vanity v0.4.11 (/fast/nano-vanity)
    Updating crates.io index
error: failed to compile `nano-vanity v0.4.11 (/fast/nano-vanity)`, intermediate artifacts can be found at `/fast/nano-vanity/target`

Caused by:
  failed to select a version for the requirement `crypto-mac = "^0.5"`
  candidate versions found which didn't match: 0.11.1, 0.11.0, 0.10.1, ...
  location searched: crates.io index
  required by package `blake2 v0.7.0`
      ... which is depended on by `nano-vanity v0.4.11 (/fast/nano-vanity)`

Error: linking with `cc` failed: exit status: 1

I have this error:

error: linking with `cc` failed: exit status: 1
  |
  = note: "cc" "-m64" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.0.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.1.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.10.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.11.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.12.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.13.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.14.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.15.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.2.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.3.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.4.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.5.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.6.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.7.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.8.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.nano_vanity.b9cd1caa-cgu.9.rcgu.o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729.44gyuchi435axqfk.rcgu.o" "-Wl,--as-needed" "-L" "/tmp/cargo-installkq5b1M/release/deps" "-L" "/tmp/cargo-installkq5b1M/release/build/clear_on_drop-ba3b41dda2b39628/out" "-L" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/tmp/cargo-installkq5b1M/release/deps/libocl-aeb70cde9444e15a.rlib" "/tmp/cargo-installkq5b1M/release/deps/libqutex-493fce6b82e41de4.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcrossbeam-3c9c63c2c50cee96.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcrossbeam_queue-e536c62d53ec3e30.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcrossbeam_channel-5297524d663dbf62.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcrossbeam_deque-b01d6e34cf04bab4.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcrossbeam_epoch-5253c8253c3379af.rlib" "/tmp/cargo-installkq5b1M/release/deps/libscopeguard-c857144e7f0e1819.rlib" "/tmp/cargo-installkq5b1M/release/deps/libmemoffset-8d48d41faf924ce2.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcrossbeam_utils-0d3454cc163eccf2.rlib" "/tmp/cargo-installkq5b1M/release/deps/liblazy_static-0df5d4f37a836555.rlib" "/tmp/cargo-installkq5b1M/release/deps/libmaybe_uninit-c2a3aef7c18f306f.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcfg_if-56662b0f273af21c.rlib" "/tmp/cargo-installkq5b1M/release/deps/libnodrop-fb29cb8bfca8d89c.rlib" "/tmp/cargo-installkq5b1M/release/deps/libocl_core-28dd47fcd6573d95.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcl_sys-9f1395cfb56b8146.rlib" "/tmp/cargo-installkq5b1M/release/deps/libocl_core_vector-d54b9ce0bf3cd4f0.rlib" "/tmp/cargo-installkq5b1M/release/deps/libnum-34347e881bf4bd1f.rlib" "/tmp/cargo-installkq5b1M/release/deps/libnum_rational-aa1a76821d12948b.rlib" "/tmp/cargo-installkq5b1M/release/deps/libnum_iter-a21ba7b446f8a008.rlib" "/tmp/cargo-installkq5b1M/release/deps/libnum_complex-dc598a76e359af1e.rlib" "/tmp/cargo-installkq5b1M/release/deps/libenum_primitive-6cc0c7d1de8e07f8.rlib" "/tmp/cargo-installkq5b1M/release/deps/libnum_traits-3a61745e970640aa.rlib" "/tmp/cargo-installkq5b1M/release/deps/libfailure-8bdc307e18c4f4d5.rlib" "/tmp/cargo-installkq5b1M/release/deps/libbacktrace-77feaa80dcf40fd3.rlib" "/tmp/cargo-installkq5b1M/release/deps/libminiz_oxide-64bbc3dfcc85a6b0.rlib" "/tmp/cargo-installkq5b1M/release/deps/libadler-56293137e09c9368.rlib" "/tmp/cargo-installkq5b1M/release/deps/libobject-47f6867a5440c667.rlib" "/tmp/cargo-installkq5b1M/release/deps/libmemchr-c7955008639a16b2.rlib" "/tmp/cargo-installkq5b1M/release/deps/libaddr2line-fa7a28a8be6201a7.rlib" "/tmp/cargo-installkq5b1M/release/deps/libgimli-c3460830815a04ac.rlib" "/tmp/cargo-installkq5b1M/release/deps/librustc_demangle-742846db1c8a4c60.rlib" "/tmp/cargo-installkq5b1M/release/deps/libfutures-57d4fc05b6b4f842.rlib" "/tmp/cargo-installkq5b1M/release/deps/libnum_bigint-c9b620e80c70f04c.rlib" "/tmp/cargo-installkq5b1M/release/deps/libnum_integer-e436e3ed4ff7c328.rlib" "/tmp/cargo-installkq5b1M/release/deps/libnum_traits-1adfb735cbc0c29f.rlib" "/tmp/cargo-installkq5b1M/release/deps/librustc_serialize-84098f9ae5fdccd7.rlib" "/tmp/cargo-installkq5b1M/release/deps/librand-542cefea972c0104.rlib" "/tmp/cargo-installkq5b1M/release/deps/librand-d43f9763441d63e7.rlib" "/tmp/cargo-installkq5b1M/release/deps/librand_chacha-a252c508f53a2e2a.rlib" "/tmp/cargo-installkq5b1M/release/deps/libppv_lite86-eeea7c8bc7df77ff.rlib" "/tmp/cargo-installkq5b1M/release/deps/librand_core-46160ef321e2274a.rlib" "/tmp/cargo-installkq5b1M/release/deps/libgetrandom-4075f1747ddf569a.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcfg_if-a04351a1e37ac403.rlib" "/tmp/cargo-installkq5b1M/release/deps/libnum_cpus-d8f16b2711e5d663.rlib" "/tmp/cargo-installkq5b1M/release/deps/libhex-7f2036190825f770.rlib" "/tmp/cargo-installkq5b1M/release/deps/libclap-d93c382c4504f2a7.rlib" "/tmp/cargo-installkq5b1M/release/deps/libvec_map-5d3b872e0a1408b5.rlib" "/tmp/cargo-installkq5b1M/release/deps/libtextwrap-c273469f9debde5a.rlib" "/tmp/cargo-installkq5b1M/release/deps/libunicode_width-b88877dbb8531487.rlib" "/tmp/cargo-installkq5b1M/release/deps/libstrsim-65d231e2011670e5.rlib" "/tmp/cargo-installkq5b1M/release/deps/libbitflags-045e5e9961c5ccd8.rlib" "/tmp/cargo-installkq5b1M/release/deps/libatty-3f209c6220a01bda.rlib" "/tmp/cargo-installkq5b1M/release/deps/liblibc-9b4d7ce1f8684159.rlib" "/tmp/cargo-installkq5b1M/release/deps/libansi_term-594c980194a3606c.rlib" "/tmp/cargo-installkq5b1M/release/deps/libblake2-759ad9b9adc9cfd2.rlib" "/tmp/cargo-installkq5b1M/release/deps/libopaque_debug-5532a40e8e391b1d.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcrypto_mac-c163aaa9a30fd228.rlib" "/tmp/cargo-installkq5b1M/release/deps/libdigest-6ed145bc1bbfd075.rlib" "/tmp/cargo-installkq5b1M/release/deps/libgeneric_array-d26278e24b6bd0ff.rlib" "/tmp/cargo-installkq5b1M/release/deps/libcurve25519_dalek-00dd5b7d4326e520.rlib" "/tmp/cargo-installkq5b1M/release/deps/libsubtle-269e431c727b651c.rlib" "/tmp/cargo-installkq5b1M/release/deps/librand_core-ed6c09628713c93c.rlib" "/tmp/cargo-installkq5b1M/release/deps/librand_core-2a4a638c5408492e.rlib" "/tmp/cargo-installkq5b1M/release/deps/libdigest-ea5fafa9ec123df9.rlib" "/tmp/cargo-installkq5b1M/release/deps/libgeneric_array-73d1e12b1efaa9be.rlib" "/tmp/cargo-installkq5b1M/release/deps/libtypenum-8d402692c022a671.rlib" "/tmp/cargo-installkq5b1M/release/deps/libclear_on_drop-06833b77a1f1df7a.rlib" "/tmp/cargo-installkq5b1M/release/deps/libbyteorder-50f17cee9e873c7b.rlib" "-Wl,--start-group" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-7c582493123fc1dd.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-1392776590706175.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-2eb6edf4d031cd1e.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-33a7ad3b5f7fedf6.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-7d32adce541987d9.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-5cb369120f224726.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-6ab2efd1d2f431a9.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-567f611439253c7e.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-ebbc63efd6d2efc5.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-862830f0d224a2e1.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-cad0401ae7a80e32.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-fd54290077194763.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-4fc3313c8ccb1ec0.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-19bf8dffe82b09d4.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-afc95b1640c4beca.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-aff6658baa87e3d1.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-8be8a1689a4f7b48.rlib" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-5284934f66073844.rlib" "-Wl,--end-group" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-2a0b2a4f96acb821.rlib" "-Wl,-Bdynamic" "-lOpenCL" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/home/INF1N17Y/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/tmp/cargo-installkq5b1M/release/deps/nano_vanity-99fb94870ee56729" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs"
  = note: /usr/bin/ld: cannot find -lOpenCL
          collect2: error: ld returned 1 exit status
          

error: failed to compile `nano-vanity v0.4.13`, intermediate artifacts can be found at `/tmp/cargo-installkq5b1M`

Caused by:
  could not compile `nano-vanity` due to previous error

System: Linux fedora 35 workstation

Reset start time for limit != 1

When multiple keys are generated, the number of attempts is reset but the start time is not. Thus the speed output is incorrect after the 1st key found.

$ ./target/debug/nano-vanity --limit 4 .sim
Estimated attempts needed: 32768
Tried 9981 keys (~30.46%; 1197.5 keys/s)
Found matching account!
Private Key: 5EDC2C45744F0596E7FD59F90DD14B6DE41C6DBB8F193EEF9F28DC3B82702310
Address:     xrb_3simaai9g1gobbwktuzgoaxtc5sq31efe4mc381f3cg549ym9mnaacu5fkmp
Tried 8090 keys (~24.69%; 552.0 keys/s)
Found matching account!
Private Key: D92639C14EFDF98BBACC51255F23045880EFA55D5CAF2A273D971C52E7F78307
Address:     xrb_3simfjfi9fou8noyjyys3e7k3ffi5c9wzyc849jog4ix116qbsyhskkz1gof
Tried 54848 keys (~167.38%; 916.3 keys/s)
Found matching account!
Private Key: ACEDB623ACDED9A5F9847DD975DB78F6F510F7BF22739B86C15F7360A62389EB
Address:     xrb_1simeuyr1njemhkuz38mhnrerrcyft4ud6jg8oiii4umbj63ferusocacxss
Tried 7213 keys (~22.01%; 109.4 keys/s)
Found matching account!
Private Key: 98BD1DD8E87CF5E59BE1A2254BA1AA4C3BEDB040D512D3F65C053E78D0F6B90B
Address:     xrb_1sim7jd8k7jjtqng131jabdhdmhcz31do4kbe9ar9pnnksejzzpfahw9xye5

I'll work on a PR.

error: Explicit load/store type does not match pointee type of pointer operand

Hey, what's up? Got the following error when using the GPU mode:

error: Explicit load/store type does not match pointee type of pointer operand

CPU mode works fine.

Full Log:

nano-vanity.exe myprefix --gpu
Estimated attempts needed: 1073741824
error: Explicit load/store type does not match pointee type of pointer operand

Address does not appear when importing into nanowallet

I generated an address with this program, but when importing my seed into nanowallet the corresponding address does not appear. Could you print the index in a future version?

I am trying to loop through all the addresses to find the generated address: /

No results on NVIDIA Corporation GeForce GTX 1080 since 1feeefe

Yesterday I bisected the project to find a bug that causes no GPU results on a NVIDIA Corporation GeForce GTX 1080 (Ubuntu 18.04).

Last good commit 30eedd0:

$ git checkout 30eedd02251ffca && git clean -xdf && cargo build --release --features gpu && RUST_BACKTRACE=1 ./target/release/nano-vanity --gpu --threads 0 --limit 0 1sim
[...]
Estimated attempts needed: 65536
Initializing GPU NVIDIA Corporation GeForce GTX 1080
Tried 0 keys (~0.00%)
Found matching account!
Private Key: 86AD025F1956F881DF5DEC4CB5BEFE344DFD826AAD3122286A99DA3A40427F6C
Account:     xrb_1sim9rd6n1bdp6kh1gqn1iog3pege6pfk7a9swnuy97zu8cfpmpa93x13sy5
Tried 0 keys (~0.00%)
Found matching account!
Private Key: 4B61C9674AE33C783E296E784FACCD32C9210E377ABC4E041C36489E5585BCB4
Account:     xrb_1simacbhanhe1ug6qs5xapubyxreokmbmxbshx16d8tx9pjork8wz61yha5s
Tried 0 keys (~0.00%)
Found matching account!
Private Key: 1BDA385708B0B2DC3ECE00465F328A8FECE8CD28BFF93B830167127FC2BE4E50
Account:     xrb_1simkbzdnrei3gd454ckh1rzhdjorwe9s4ned387g5ha1y6c7dzir9cd51hw
Tried 0 keys (~0.00%)
Found matching account!
Private Key: 6C2DCCFE3F44F7DC18C746B31C2BE3B4908B8A42C04EBBFDDADC68C931635F7E
Account:     xrb_1simunhpat9w4qbaorkrc8a1hb8ihnky1bbrmddccn7yaty8xbsaq46pjtyr
Tried 0 keys (~0.00%)
Found matching account!
Private Key: 9E9B1EE430C324A0EFB8395A4379B0A233EEB2E6EFBE5BC38F8AFC9A4B7B495F
Account:     xrb_1sim3bcst48zbaq7intn9dnydk3xxtefscpred5tbo5mu8fp3ktbtw9a5sru

First bad commit 1feeefe:

$ git checkout 1feeefe2973e4e9e6f9 && git clean -xdf && cargo build --release --features gpu && RUST_BACKTRACE=1 ./target/release/nano-vanity --gpu --threads 0 --limit 0 1sim
[...]
Estimated attempts needed: 65536
Initializing GPU NVIDIA Corporation GeForce GTX 1080
Tried 184549200 keys (~281599.73%)^C

This results is reproducible.

Now when I apply this code change in the open CL code on top of 1feeefe, it works again.

diff --git a/src/opencl/entry.cl b/src/opencl/entry.cl
index badd4ed..cc96210 100644
--- a/src/opencl/entry.cl
+++ b/src/opencl/entry.cl
@@ -50,7 +50,7 @@ __kernel void generate_pubkey (__global uchar *result, __global uchar *key_root,
                        public_offset_copy[i] = public_offset[i];
                }
                ge25519 ALIGN(16) public_offset_curvepoint;
-               ge25519_unpack_vartime(&public_offset_curvepoint, public_offset_copy);
+               // ge25519_unpack_vartime(&public_offset_curvepoint, public_offset_copy);
                ge25519_add(&A, &A, &public_offset_curvepoint);
        }
        uchar pubkey[32];
$ git checkout 1feeefe2973e4e9e6f9 && git clean -xdf && git diff && cargo build --release --features gpu && RUST_BACKTRACE=1 ./target/release/nano-vanity --gpu --threads 0 --limit 0 1sim
M	src/opencl/entry.cl
HEAD is now at 1feeefe Add support for public key offset
Removing target/
diff --git a/src/opencl/entry.cl b/src/opencl/entry.cl
index badd4ed..cc96210 100644
--- a/src/opencl/entry.cl
+++ b/src/opencl/entry.cl
@@ -50,7 +50,7 @@ __kernel void generate_pubkey (__global uchar *result, __global uchar *key_root,
                        public_offset_copy[i] = public_offset[i];
                }
                ge25519 ALIGN(16) public_offset_curvepoint;
-               ge25519_unpack_vartime(&public_offset_curvepoint, public_offset_copy);
+               // ge25519_unpack_vartime(&public_offset_curvepoint, public_offset_copy);
                ge25519_add(&A, &A, &public_offset_curvepoint);
        }
        uchar pubkey[32];
   Compiling typenum v1.9.0
   Compiling num-traits v0.2.0
   Compiling unicode-xid v0.0.4
[...]
    Finished release [optimized] target(s) in 30.95s
Estimated attempts needed: 65536
Initializing GPU NVIDIA Corporation GeForce GTX 1080
Tried 0 keys (~0.00%)
Found matching account!
Private Key: 42FB633B2A38F03503DFC08C769B08677ECDD07F8678EC3F036335FCAA363136
Account:     xrb_1simwz4qxrqa35peudfh6n8zsn9hd9okdrrxa6jro9e8ds68ite7q97fkjex
Tried 0 keys (~0.00%)
Found matching account!
Private Key: B8FCF29E515BD3C8314BE42B0A759C9D1F7AB50BCE9EB39247FDB487004ED9DC
Account:     xrb_1simsmt8rw95ygkaos753prcm3jaoi89asw6o8qoaxnqpo8r9zsn691krapf
Tried 0 keys (~0.00%)
Found matching account!
Private Key: 12D864ED008676DD648C42479600C9A44A93DA87DD525421D9AD5E640087FD02
Account:     xrb_1simnhcgarykchdqcwboimjorri5y9pj468ozjxhsdw84t8q9nyd4qdwp434
Tried 0 keys (~0.00%)
Found matching account!
Private Key: 6FA6F470AA8125DFF837FCB16AE55898D787F2F811F9AD571BA2B4D6B40CC654
Account:     xrb_1simjd87p11p7f6ccsbcppzzebkufacxbgtne31cr7g58tdoga3rd8zffuqg
Tried 0 keys (~0.00%)
Found matching account!
Private Key: DD11E26FC962684AF6A34260592FBA36A6305D0390FFE98DE0B0EA8E90CA6E32
Account:     xrb_1simhf5wib7hxspzjgbdhko5811p168zrsg6y5xzgdhqka3qo4xdwshb85r7
Tried 0 keys (~0.00%)
Found matching account!
Private Key: 78E69E4EABFC215E37BDF3FFE6349846C55695ACB3487C9E766C41C5596D075F
Account:     xrb_1simzqnw8uhk39e9os3xan1coycd9ju83ykcnnhxuxqmh1mzrnj4jbgxssu9

The most surprising thing to me is that the change that flips the code between working and non working (I reperated this dozens of times) is not executed at all, since it is in a generate_key_type 2 block only.

Given this and other OpenCL related observations, I guess there is some very aggressive optimization going on. Commenting out the line may cause the code to use less memory or something like that.

In this case, it does not help to set the .local_work_size(1) which which makes only one job per work group, which helped in a different optimization related case.

I am writing this as a note to myself after fighting this issue for hours hoping for some clever OpenCL hero to come along or at least as a warning for other frustrated users.

Nano-Vanity compiles, but won't run with the gpu flag (Error passing generic uint32_t to const uint32_t)

Nano-vanity compiles, but won't run with the GPU flag, even after installing GPU drivers from scratch + Visual Studio + CUDA Toolkit.

Also tried this, but no luck so far.

Nvidia 1080 Ti
Driver version: 527.56

Cuda:

> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Mon_Oct_24_19:40:05_Pacific_Daylight_Time_2022
Cuda compilation tools, release 12.0, V12.0.76
Build cuda_12.0.r12.0/compiler.31968024_0

Error:

Estimated attempts needed: 1099511627776
183 errors generated.
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: OclCore(ProgramBuild(BuildLog("<kernel>:1788:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_mul(r->x, p->x, p->t);
                       ^~~~
<kernel>:1258:28: note: passing argument to parameter 'out' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1788:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->x, p->x, p->t);
                             ^~~~
<kernel>:1258:51: note: passing argument to parameter 'a' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1788:29: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->x, p->x, p->t);
                                   ^~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1789:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_mul(r->y, p->y, p->z);
                       ^~~~
<kernel>:1258:28: note: passing argument to parameter 'out' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1789:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->y, p->y, p->z);
                             ^~~~
<kernel>:1258:51: note: passing argument to parameter 'a' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1789:29: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->y, p->y, p->z);
                                   ^~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1790:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_mul(r->z, p->z, p->t); 
                       ^~~~
<kernel>:1258:28: note: passing argument to parameter 'out' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1790:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->z, p->z, p->t); 
                             ^~~~
<kernel>:1258:51: note: passing argument to parameter 'a' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1790:29: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->z, p->z, p->t); 
                                   ^~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1795:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_mul(r->x, p->x, p->t);
                       ^~~~
<kernel>:1258:28: note: passing argument to parameter 'out' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1795:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->x, p->x, p->t);
                             ^~~~
<kernel>:1258:51: note: passing argument to parameter 'a' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1795:29: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->x, p->x, p->t);
                                   ^~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1796:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_mul(r->y, p->y, p->z);
                       ^~~~
<kernel>:1258:28: note: passing argument to parameter 'out' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1796:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->y, p->y, p->z);
                             ^~~~
<kernel>:1258:51: note: passing argument to parameter 'a' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1796:29: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->y, p->y, p->z);
                                   ^~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1797:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_mul(r->z, p->z, p->t); 
                       ^~~~
<kernel>:1258:28: note: passing argument to parameter 'out' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1797:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->z, p->z, p->t); 
                             ^~~~
<kernel>:1258:51: note: passing argument to parameter 'a' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1797:29: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->z, p->z, p->t); 
                                   ^~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1798:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_mul(r->t, p->x, p->y); 
                       ^~~~
<kernel>:1258:28: note: passing argument to parameter 'out' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1798:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->t, p->x, p->y); 
                             ^~~~
<kernel>:1258:51: note: passing argument to parameter 'a' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1798:29: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->t, p->x, p->y); 
                                   ^~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1803:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_sub(p->ysubx, r->y, r->x);
                       ^~~~~~~~
<kernel>:1191:28: note: passing argument to parameter 'out' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1803:27: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(p->ysubx, r->y, r->x);
                                 ^~~~
<kernel>:1191:51: note: passing argument to parameter 'a' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1803:33: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(p->ysubx, r->y, r->x);
                                       ^~~~
<kernel>:1191:72: note: passing argument to parameter 'b' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1804:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_add(p->xaddy, r->y, r->x);
                       ^~~~~~~~
<kernel>:1136:28: note: passing argument to parameter 'out' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1804:27: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(p->xaddy, r->y, r->x);
                                 ^~~~
<kernel>:1136:51: note: passing argument to parameter 'a' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1804:33: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(p->xaddy, r->y, r->x);
                                       ^~~~
<kernel>:1136:72: note: passing argument to parameter 'b' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1805:18: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_copy(p->z, r->z);
                        ^~~~
<kernel>:1121:29: note: passing argument to parameter 'out' here
curve25519_copy(bignum25519 out, const bignum25519 in) {
                            ^
<kernel>:1805:24: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_copy(p->z, r->z);
                              ^~~~
<kernel>:1121:52: note: passing argument to parameter 'in' here
curve25519_copy(bignum25519 out, const bignum25519 in) {
                                                   ^
<kernel>:1806:23: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_mul_const(p->t2d, r->t, ge25519_ec2d);
                             ^~~~~~
<kernel>:1355:34: note: passing argument to parameter 'out' here
curve25519_mul_const(bignum25519 out, const bignum25519 a, constant uint32_t *b) {
                                 ^
<kernel>:1806:31: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul_const(p->t2d, r->t, ge25519_ec2d);
                                     ^~~~
<kernel>:1355:57: note: passing argument to parameter 'a' here
curve25519_mul_const(bignum25519 out, const bignum25519 a, constant uint32_t *b) {
                                                        ^
<kernel>:1817:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(a, p->y, p->x);
                          ^~~~
<kernel>:1191:51: note: passing argument to parameter 'a' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1817:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(a, p->y, p->x);
                                ^~~~
<kernel>:1191:72: note: passing argument to parameter 'b' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1818:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(b, p->y, p->x);
                          ^~~~
<kernel>:1136:51: note: passing argument to parameter 'a' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1818:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(b, p->y, p->x);
                                ^~~~
<kernel>:1136:72: note: passing argument to parameter 'b' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1819:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(t, q->y, q->x);
                          ^~~~
<kernel>:1191:51: note: passing argument to parameter 'a' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1819:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(t, q->y, q->x);
                                ^~~~
<kernel>:1191:72: note: passing argument to parameter 'b' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1820:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(u, q->y, q->x);
                          ^~~~
<kernel>:1136:51: note: passing argument to parameter 'a' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1820:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(u, q->y, q->x);
                                ^~~~
<kernel>:1136:72: note: passing argument to parameter 'b' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1823:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(c, p->t, q->t);
                          ^~~~
<kernel>:1258:51: note: passing argument to parameter 'a' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1823:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(c, p->t, q->t);
                                ^~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1825:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(d, p->z, q->z);
                          ^~~~
<kernel>:1258:51: note: passing argument to parameter 'a' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1825:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(d, p->z, q->z);
                                ^~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1827:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_sub(r->x, b, a);
                       ^~~~
<kernel>:1191:28: note: passing argument to parameter 'out' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1828:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_add(r->y, b, a);
                       ^~~~
<kernel>:1136:28: note: passing argument to parameter 'out' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1829:29: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_add_after_basic(r->z, d, c);
                                   ^~~~
<kernel>:1150:40: note: passing argument to parameter 'out' here
curve25519_add_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                       ^
<kernel>:1830:29: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_sub_after_basic(r->t, d, c);
                                   ^~~~
<kernel>:1207:40: note: passing argument to parameter 'out' here
curve25519_sub_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                       ^
<kernel>:1838:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_square(a, p->x);
                             ^~~~
<kernel>:1453:54: note: passing argument to parameter 'in' here
curve25519_square(bignum25519 out, const bignum25519 in) {
                                                     ^
<kernel>:1839:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_square(b, p->y);
                             ^~~~
<kernel>:1453:54: note: passing argument to parameter 'in' here
curve25519_square(bignum25519 out, const bignum25519 in) {
                                                     ^
<kernel>:1840:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_square(c, p->z);
                             ^~~~
<kernel>:1453:54: note: passing argument to parameter 'in' here
curve25519_square(bignum25519 out, const bignum25519 in) {
                                                     ^
<kernel>:1842:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_add(r->x, p->x, p->y);
                       ^~~~
<kernel>:1136:28: note: passing argument to parameter 'out' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1842:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(r->x, p->x, p->y);
                             ^~~~
<kernel>:1136:51: note: passing argument to parameter 'a' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1842:29: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(r->x, p->x, p->y);
                                   ^~~~
<kernel>:1136:72: note: passing argument to parameter 'b' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1843:20: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_square(r->x, r->x);
                          ^~~~
<kernel>:1453:31: note: passing argument to parameter 'out' here
curve25519_square(bignum25519 out, const bignum25519 in) {
                              ^
<kernel>:1843:26: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_square(r->x, r->x);
                                ^~~~
<kernel>:1453:54: note: passing argument to parameter 'in' here
curve25519_square(bignum25519 out, const bignum25519 in) {
                                                     ^
<kernel>:1844:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_add(r->y, b, a);
                       ^~~~
<kernel>:1136:28: note: passing argument to parameter 'out' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1845:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_sub(r->z, b, a);
                       ^~~~
<kernel>:1191:28: note: passing argument to parameter 'out' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1846:29: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_sub_after_basic(r->x, r->x, r->y);
                                   ^~~~
<kernel>:1207:40: note: passing argument to parameter 'out' here
curve25519_sub_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                       ^
<kernel>:1846:35: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub_after_basic(r->x, r->x, r->y);
                                         ^~~~
<kernel>:1207:63: note: passing argument to parameter 'a' here
curve25519_sub_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                              ^
<kernel>:1846:41: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub_after_basic(r->x, r->x, r->y);
                                               ^~~~
<kernel>:1207:84: note: passing argument to parameter 'b' here
curve25519_sub_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                                   ^
<kernel>:1847:29: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_sub_after_basic(r->t, c, r->z);
                                   ^~~~
<kernel>:1207:40: note: passing argument to parameter 'out' here
curve25519_sub_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                       ^
<kernel>:1847:38: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub_after_basic(r->t, c, r->z);
                                            ^~~~
<kernel>:1207:84: note: passing argument to parameter 'b' here
curve25519_sub_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                                   ^
<kernel>:1856:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(a, p->y, p->x);
                          ^~~~
<kernel>:1191:51: note: passing argument to parameter 'a' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1856:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(a, p->y, p->x);
                                ^~~~
<kernel>:1191:72: note: passing argument to parameter 'b' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1857:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(b, p->y, p->x);
                          ^~~~
<kernel>:1136:51: note: passing argument to parameter 'a' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1857:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(b, p->y, p->x);
                                ^~~~
<kernel>:1136:72: note: passing argument to parameter 'b' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1858:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(a, a, qb[signbit]); /* x for +, y for - */
                             ^~~~~~~~~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1859:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_mul(r->x, b, qb[signbit^1]); /* y for +, x for - */
                       ^~~~
<kernel>:1258:28: note: passing argument to parameter 'out' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1859:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->x, b, qb[signbit^1]); /* y for +, x for - */
                                ^~~~~~~~~~~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1860:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_add(r->y, r->x, a);
                       ^~~~
<kernel>:1136:28: note: passing argument to parameter 'out' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1860:23: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(r->y, r->x, a);
                             ^~~~
<kernel>:1136:51: note: passing argument to parameter 'a' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1861:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_sub(r->x, r->x, a);
                       ^~~~
<kernel>:1191:28: note: passing argument to parameter 'out' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1861:23: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(r->x, r->x, a);
                             ^~~~
<kernel>:1191:51: note: passing argument to parameter 'a' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1862:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(c, p->t, q->t2d);
                          ^~~~
<kernel>:1258:51: note: passing argument to parameter 'a' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1862:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(c, p->t, q->t2d);
                                ^~~~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1863:24: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_add_reduce(r->t, p->z, p->z);
                              ^~~~
<kernel>:1166:35: note: passing argument to parameter 'out' here
curve25519_add_reduce(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                  ^
<kernel>:1863:30: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add_reduce(r->t, p->z, p->z);
                                    ^~~~
<kernel>:1166:58: note: passing argument to parameter 'a' here
curve25519_add_reduce(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                         ^
<kernel>:1863:36: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add_reduce(r->t, p->z, p->z);
                                          ^~~~
<kernel>:1166:79: note: passing argument to parameter 'b' here
curve25519_add_reduce(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                              ^
<kernel>:1864:18: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_copy(r->z, r->t);
                        ^~~~
<kernel>:1121:29: note: passing argument to parameter 'out' here
curve25519_copy(bignum25519 out, const bignum25519 in) {
                            ^
<kernel>:1864:24: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_copy(r->z, r->t);
                              ^~~~
<kernel>:1121:52: note: passing argument to parameter 'in' here
curve25519_copy(bignum25519 out, const bignum25519 in) {
                                                   ^
<kernel>:1865:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_add(rb[2+signbit], rb[2+signbit], c); /* z for +, t for - */
                       ^~~~~~~~~~~~~
<kernel>:1136:28: note: passing argument to parameter 'out' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1865:32: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(rb[2+signbit], rb[2+signbit], c); /* z for +, t for - */
                                      ^~~~~~~~~~~~~
<kernel>:1136:51: note: passing argument to parameter 'a' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1866:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_sub(rb[2+(signbit^1)], rb[2+(signbit^1)], c); /* t for +, z for - */
                       ^~~~~~~~~~~~~~~~~
<kernel>:1191:28: note: passing argument to parameter 'out' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1866:36: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(rb[2+(signbit^1)], rb[2+(signbit^1)], c); /* t for +, z for - */
                                          ^~~~~~~~~~~~~~~~~
<kernel>:1191:51: note: passing argument to parameter 'a' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1875:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(a, p->y, p->x);
                          ^~~~
<kernel>:1191:51: note: passing argument to parameter 'a' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1875:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_sub(a, p->y, p->x);
                                ^~~~
<kernel>:1191:72: note: passing argument to parameter 'b' here
curve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1876:20: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(b, p->y, p->x);
                          ^~~~
<kernel>:1136:51: note: passing argument to parameter 'a' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                  ^
<kernel>:1876:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_add(b, p->y, p->x);
                                ^~~~
<kernel>:1136:72: note: passing argument to parameter 'b' here
curve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1877:23: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(a, a, qb[signbit]); /* ysubx for +, xaddy for - */
                             ^~~~~~~~~~~
<kernel>:1258:72: note: passing argument to parameter 'b' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                                                                       ^
<kernel>:1878:17: error: passing '__generic uint32_t *' (aka '__generic unsigned int *') to parameter of type 'uint32_t *' (aka 'unsigned int *') changes address space of pointer
        curve25519_mul(r->x, b, qb[signbit^1]); /* xaddy for +, ysubx for - */
                       ^~~~
<kernel>:1258:28: note: passing argument to parameter 'out' here
curve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {
                           ^
<kernel>:1878:26: error: passing 'const __generic uint32_t *' (aka 'const __generic unsigned int *') to parameter of type 'const uint32_t *' (aka 'const unsigned int *') changes address space of pointer
        curve25519_mul(r->x, b, qb[signbit^1]); /* xaddy for +, ysubx for - */
                                ^~~~~~~~~~~~~

failed to select a version for the requirement `rustc_version = "^0.1"

Installing nano-vanity v0.4.10 (/home/anarkrypto/nano/nano-vanity)
Updating crates.io index
error: failed to compile nano-vanity v0.4.10 (/home/anarkrypto/nano/nano-vanity), intermediate artifacts can be found at /home/anarkrypto/nano/nano-vanity/target

Caused by:
failed to select a version for the requirement rustc_version = "^0.1"
candidate versions found which didn't match: 0.3.3, 0.3.2, 0.3.1, ...
location searched: crates.io index
required by package ocl-core v0.10.0
... which is depended on by ocl v0.19.0
... which is depended on by nano-vanity v0.4.10 (/home/anarkrypto/nano/nano-vanity)

checkpoints maybe?

I am not sure if this just tries random numbers or there's some method (e.g. seeded RNG with counter) to this but if there it would really be nice to have some way to keep checkpoints so that on a crash you dont completely start over when generating something longer.

212% but nothing found yet.

I am trying to find an address with 8 characters but it hasnt been found yet. It's already over the estimated time at 212% and counting. We are able to put in that many characters right?

Optimize suffixes

I've designed for this, but it hasn't been implemented yet.

The basic plan is to add a suffix_len in addition to the prefix_len. When both a prefix and suffix exist, things will get more complicated. Luckily, we don't have to worry about speed for that, because generating the prefix_len and suffix_len only happens once.

nano-vanity.exe location

I kept getting link.exe errors so I ran "cargo install nano-vanity --no-default-features" and that worked. However, I forgot to include the "--features gpu" tag. Now whenever I try running"cargo install nano-vanity --no-default-features --features-gpu" or anything else, I get this message

Updating crates.io index
error: binary nano-vanity.exe already exists in destination as part of nano-vanity v0.4.10
Add --force to overwrite

Unfortunately, when I use --force, I end up with the link.exe error again. I tried deleting my nano-vanity folder and removing all the packages installed by rust, but that does not seem to help. I cannot find nano-vanity.exe anywhere either, or else I would have deleted that by now.

Where does nano-vanity.exe exist?

OS: Windows 10
GPU: Radeon RX 5700 XT
Performed: OpenCL is installed, C++ development tools from Visual Studios 2019 is installed.

nano-vanity outputs wrong private key!

running on Windows 10 in Powershell:

PS H:\Dropbox\Eigene Dateien\Desktop> nano-vanity *tee
Estimated attempts needed: 32768
Tried 52401 keys (~159.92%)
Found matching account!
Key:     F2FDCE6009082085503B86447A0B2A1DC8628BC3679B4C0C2F41165210B54BBB
Account: xrb_1teekh9j9x8zg96eztht61ditafx7qeenw7docw9kkshw3umm1icxc969cxi
PS H:\Dropbox\Eigene Dateien\Desktop>

but the account displayed on nanovault.io and nano desktop 10.0.1 is:

xrb_1u3mymukt1bgbe9kenyaakxwqryoscrzn6npiiiq1s3fk4sn6gm95x1ggmj3

Handle error case when no GPU is found

Heyho โ€“ thanks for doing this.

After compiling on a server with no GPU I get

$ RUST_BACKTRACE=1 nano-vanity  --gpu .ababab
Estimated attempts needed: 1073741824
thread 'main' panicked at 'Platform::list: Error retrieving platform list: Unable to get platform id list after 10 seconds of waiting.', libcore/result.rs:1009:5
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::print
             at libstd/sys_common/backtrace.rs:71
             at libstd/sys_common/backtrace.rs:59
   2: std::panicking::default_hook::{{closure}}
             at libstd/panicking.rs:211
   3: std::panicking::default_hook
             at libstd/panicking.rs:227
   4: std::panicking::rust_panic_with_hook
             at libstd/panicking.rs:477
   5: std::panicking::continue_panic_fmt
             at libstd/panicking.rs:391
   6: rust_begin_unwind
             at libstd/panicking.rs:326
   7: core::panicking::panic_fmt
             at libcore/panicking.rs:77
   8: core::result::unwrap_failed
   9: ocl::standard::platform::Platform::list
  10: nano_vanity::gpu::Gpu::new
  11: nano_vanity::main
  12: std::rt::lang_start::{{closure}}
  13: std::panicking::try::do_call
             at libstd/rt.rs:59
             at libstd/panicking.rs:310
  14: __rust_maybe_catch_panic
             at libpanic_unwind/lib.rs:103
  15: std::rt::lang_start_internal
             at libstd/panicking.rs:289
             at libstd/panic.rs:392
             at libstd/rt.rs:58
  16: main
  17: __libc_start_main
  18: _start

It would be nice to show an error message if no GPU was available.

support Apple Silicon GPU (OpenCL downgrade)

Brandons-Laptop:nano-vanity brandon 2024-04-16 12:28:33 $ cargo run -- --threads 0 --gpu xrb_3xem
    Finished dev [unoptimized + debuginfo] target(s) in 0.02s
     Running `/Users/brandon/.cargo/target/debug/nano-vanity --threads 0 --gpu xrb_3xem`
Estimated attempts needed: 65536
UNSUPPORTED (log once): buildComputeProgram: cl2Metal failed
thread 'main' panicked at src/main.rs:406:10:
called `Result::unwrap()` on an `Err` value: OclCore(ProgramBuild(BuildLog("program_source:1121:17: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_copy(__generic bignum25519 out, const __generic bignum25519 in) {\n                ^\nprogram_source:1121:50: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_copy(__generic bignum25519 out, const __generic bignum25519 in) {\n                                                 ^\nprogram_source:1136:16: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_add(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n               ^\nprogram_source:1136:49: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_add(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                ^\nprogram_source:1136:80: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_add(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                                               ^\nprogram_source:1150:28: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_add_after_basic(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                           ^\nprogram_source:1150:61: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_add_after_basic(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                            ^\nprogram_source:1150:92: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_add_after_basic(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                                                           ^\nprogram_source:1166:23: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_add_reduce(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                      ^\nprogram_source:1166:56: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_add_reduce(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                       ^\nprogram_source:1166:87: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_add_reduce(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                                                      ^\nprogram_source:1191:16: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_sub(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n               ^\nprogram_source:1191:49: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_sub(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                ^\nprogram_source:1191:80: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_sub(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                                               ^\nprogram_source:1207:28: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_sub_after_basic(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                           ^\nprogram_source:1207:61: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_sub_after_basic(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                            ^\nprogram_source:1207:92: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_sub_after_basic(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                                                           ^\nprogram_source:1223:23: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_sub_reduce(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                      ^\nprogram_source:1223:56: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_sub_reduce(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                       ^\nprogram_source:1223:87: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_sub_reduce(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                                                      ^\nprogram_source:1240:16: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_neg(__generic bignum25519 out, const __generic bignum25519 a) {\n               ^\nprogram_source:1240:49: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_neg(__generic bignum25519 out, const __generic bignum25519 a) {\n                                                ^\nprogram_source:1258:16: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_mul(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n               ^\nprogram_source:1258:49: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_mul(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                ^\nprogram_source:1258:80: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_mul(__generic bignum25519 out, const __generic bignum25519 a, const __generic bignum25519 b) {\n                                                                               ^\nprogram_source:1355:22: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_mul_const(__generic bignum25519 out, const __generic bignum25519 a, constant uint32_t *b) {\n                     ^\nprogram_source:1355:55: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_mul_const(__generic bignum25519 out, const __generic bignum25519 a, constant uint32_t *b) {\n                                                      ^\nprogram_source:1453:19: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_square(__generic bignum25519 out, const __generic bignum25519 in) {\n                  ^\nprogram_source:1453:52: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_square(__generic bignum25519 out, const __generic bignum25519 in) {\n                                                   ^\nprogram_source:1528:48: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_square_times(bignum25519 out, const __generic bignum25519 in, int count) {\n                                               ^\nprogram_source:1604:19: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_expand(__generic bignum25519 out, const unsigned char in[32]) {\n                  ^\nprogram_source:1649:50: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_contract(unsigned char out[32], const __generic bignum25519 in) {\n                                                 ^\nprogram_source:1765:29: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_swap_conditional(__generic bignum25519 a, __generic bignum25519 b, uint32_t iswap) {\n                            ^\nprogram_source:1765:54: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_swap_conditional(__generic bignum25519 a, __generic bignum25519 b, uint32_t iswap) {\n                                                     ^\nprogram_source:1787:43: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_p1p1_to_partial(ge25519 *r, const __generic ge25519_p1p1 *p) {\n                                          ^\nprogram_source:1794:40: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_p1p1_to_full(ge25519 *r, const __generic ge25519_p1p1 *p) {\n                                       ^\nprogram_source:1802:49: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_full_to_pniels(ge25519_pniels *p, const __generic ge25519 *r) {\n                                                ^\nprogram_source:1814:41: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_add_p1p1(ge25519_p1p1 *r, const __generic ge25519 *p, const __generic ge25519 *q) {\n                                        ^\nprogram_source:1814:69: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_add_p1p1(ge25519_p1p1 *r, const __generic ge25519 *p, const __generic ge25519 *q) {\n                                                                    ^\nprogram_source:1835:44: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_double_p1p1(ge25519_p1p1 *r, const __generic ge25519 *p) {\n                                           ^\nprogram_source:1851:47: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_nielsadd2_p1p1(ge25519_p1p1 *r, const __generic ge25519 *p, const __generic ge25519_niels *q, unsigned char signbit) {\n                                              ^\nprogram_source:1851:75: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_nielsadd2_p1p1(ge25519_p1p1 *r, const __generic ge25519 *p, const __generic ge25519_niels *q, unsigned char signbit) {\n                                                                          ^\nprogram_source:1870:47: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const __generic ge25519 *p, const __generic ge25519_pniels *q, unsigned char signbit) {\n                                              ^\nprogram_source:1870:75: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const __generic ge25519 *p, const __generic ge25519_pniels *q, unsigned char signbit) {\n                                                                          ^\nprogram_source:1890:42: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_double_partial(ge25519 *r, const __generic ge25519 *p) {\n                                         ^\nprogram_source:1897:34: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_double(ge25519 *r, const __generic ge25519 *p) {\n                                 ^\nprogram_source:1904:31: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_add(ge25519 *r, const __generic ge25519 *p,  const __generic ge25519 *q) {\n                              ^\nprogram_source:1904:60: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_add(ge25519 *r, const __generic ge25519 *p,  const __generic ge25519 *q) {\n                                                           ^\nprogram_source:1911:37: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_nielsadd2(ge25519 *r, const __generic ge25519_niels *q) {\n                                    ^\nprogram_source:1931:44: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_pnielsadd(ge25519_pniels *r, const __generic ge25519 *p, const __generic ge25519_pniels *q) {\n                                           ^\nprogram_source:1931:72: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_pnielsadd(ge25519_pniels *r, const __generic ge25519 *p, const __generic ge25519_pniels *q) {\n                                                                       ^\nprogram_source:1960:38: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_pow_two5mtwo0_two250mtwo0(__generic bignum25519 b) {\n                                     ^\nprogram_source:1984:18: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_recip(__generic bignum25519 out, const __generic bignum25519 z) {\n                 ^\nprogram_source:1984:51: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_recip(__generic bignum25519 out, const __generic bignum25519 z) {\n                                                  ^\nprogram_source:2002:25: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_pow_two252m3(__generic bignum25519 two252m3, const __generic bignum25519 z) {\n                        ^\nprogram_source:2002:63: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\ncurve25519_pow_two252m3(__generic bignum25519 two252m3, const __generic bignum25519 z) {\n                                                              ^\nprogram_source:2022:41: error: OpenCL C version 1.2 does not support the '__generic' type qualifier\nge25519_pack(unsigned char r[32], const __generic ge25519 *p) {\n                                        ^")))
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Brandons-Laptop:nano-vanity brandon 2024-04-16 12:28:36 $ 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.