mersenneforum.org

mersenneforum.org (https://www.mersenneforum.org/index.php)
-   Factoring (https://www.mersenneforum.org/forumdisplay.php?f=19)
-   -   Faster GPU-ECM with CGBN (https://www.mersenneforum.org/showthread.php?t=27103)

wombatman 2022-04-03 17:07

[QUOTE=SethTro;603168]This is expected. I'm balancing binary size and compile time vs range of numbers that can be tested.

If you want to run ECM on numbers > 1020 bits look around line 670 in cgbn_stage1.cu[/QUOTE]

Good deal. Thanks!

EdH 2022-07-12 00:30

[QUOTE=SethTro;601241]IFAIK you don't need to compile CGBN (or setup the googletest), you just need the folder downloaded ("cloned") from Github.[/QUOTE]I've brought the folder down (via git) without installing CGBN for a second machine and although cgbn.h is present, ECM says it is not:[code]configure: Using CGBN from /home/math56/Math/CGBN/include/cgbn
checking if CGBN is present... no
configure: error: cgbn.h not found (check if /cgbn needed after <PATH>/include)[/code]I've tried with and without /cgbn after /include, per the readme, with no success. I've also tried copying cgbn.h into different places.[code]$ ls /home/math56/Math/CGBN/include/cgbn
arith cgbn.cu [B]cgbn.h[/B] core impl_mpz.cc
cgbn_cpu.h cgbn_cuda.h cgbn_mpz.h impl_cuda.cu[/code]

Rubiksmath 2022-11-13 03:26

Yes, actually I was wondering about being able to run GPU CGBN ECM on larger inputs, I've had a look at line ~670 in cgbn_stage1.cu where I do see stuff pertaining to increasing this limit. I tried using the pair (64,65536) on line 674, but that most definitely doesn't work, (probably isn't listed in the file for a reason). I've dropped that down to what is shown as being possible in the file (32,32768), and it works just fine. Is there any way for me to run ECM on CGBN for inputs 32768 bits < x < 65536 bits? it's not a huge deal if I can't, but I just want to make sure if there is a genuine limitation on that front or not.

frmky 2022-11-13 04:28

[QUOTE=Rubiksmath;617646] Is there any way for me to run ECM on CGBN for inputs 32768 bits < x < 65536 bits?[/QUOTE]
The mp library this uses, [URL="https://github.com/NVlabs/CGBN"]CGBN[/URL], only supports up to 32K bits.

Rubiksmath 2022-11-13 05:36

Yeah its fine, but I realised it's close to the crossover point for prime95 being faster on my setup anyways, but thanks.

unconnected 2023-01-10 23:12

[CODE]GMP-ECM 7.0.5-dev [configured with GMP 6.2.0, --enable-asm-redc, --enable-gpu, --enable-assert] [ECM]
Tuned for x86_64/k8/params.h
Running on 26e7257eb032
Input number is 4933690381437887549969735079506443650079144604086477481448833678294621880539619157395309333381034407331998010707341338594855159592072955760853143773167984453717817933398916246333087963048042904812789734246049822280162009403879978378918898771591314986935017070386367227682824501468178552695667071784654604199 (307 digits)
Using MODMULN [mulredc:1, sqrredc:1]
Computing batch product (of 15869673 bits) of primes up to B1=11000000 took 400ms
GPU: will use device -1: Tesla P100-PCIE-16GB, compute capability 6.0, 56 MPs.
GPU: maxSharedPerBlock = 49152 maxThreadsPerBlock = 1024 maxRegsPerBlock = 65536
GPU: Selection and initialization of the device took 24ms
Using B1=11000000, B2=0, sigma=3:435506682-3:435508473 (1792 curves)
dF=0, k=0, d=55304, d2=0, i0=0
Expected number of curves to find a factor of n digits (assuming one exists):
35 40 45 50 55 60 65 70 75 80
1683 12398 103007 951342 9649550 1.1e+08 1.1e+09 1.4e+11 Inf Inf
ecm: cgbn_stage1.cu:770: int cgbn_ecm_stage1(__mpz_struct (*)[1], int*, const __mpz_struct*, const __mpz_struct*, uint32_t, uint32_t, float*, int): Assertion `pct_faster > 100' failed.[/CODE] Is this expected behaviour because the input is close to 2^1024?

SethTro 2023-01-11 01:06

[QUOTE=unconnected;622190][CODE]
ecm: cgbn_stage1.cu:770: int cgbn_ecm_stage1(__mpz_struct (*)[1], int*, const __mpz_struct*, const __mpz_struct*, uint32_t, uint32_t, float*, int): Assertion `pct_faster > 100' failed.[/CODE] Is this expected behaviour because the input is close to 2^1024?[/QUOTE]

This is not expected, and probably has to do with a bad assumption of mine in this block

[CODE]
/* Alert that recompiling with a smaller kernel would likely improve speed */
{
size_t optimized_bits = ((n_log2 + 5)/128 + 1) * 128;
if (optimized_bits < BITS && 0.8 * BITS > n_log2 ) {
/* Assume speed is roughly O(N) but slightly slower for not being a power of two */
float pct_faster = 90 * BITS / optimized_bits;
assert(pct_faster > 100);
outputf (OUTPUT_VERBOSE, "Compiling custom kernel for %d bits should be ~%.0f%% faster\n",
optimized_bits, pct_faster);
}
}
[/CODE]

you can disable the assert without consequences and I'll work on patching it in the repo soon(tm).

unconnected 2023-01-11 04:54

Got it, thank you!

SethTro 2023-01-11 21:50

[url]https://gitlab.inria.fr/zimmerma/ecm/-/commit/fc7d1970a43d0f68f84ff3e918ccdac727726c5c[/url]

Should be fixed now;

You correctly guessed it's because your number is right up against the limit.

It's possible that CARRY_BITS can be significantly reduced from 6 to 2? 1? which would speedup numbers C152-C153 and C306-C308 significantly but would require checking results on several cards or adding a new test.

Denial140 2023-01-22 16:34

I have been trying to compile this for a GTX1660Ti on Debian 11 without much success. I should probably preface this by saying I am completely inexperienced with building things on Linux, so if I miss out information that would be helpful for debugging then please let me know.

I followed successfully EdH's guide on installing GMP. I tried installing the latest ECM from [url]https://gitlab.inria.fr/zimmerma/ecm[/url] and it successfully installs when I try without --enable-gpu, but I run into issues with the gpu, which are similar whether I use CGBN or not. (I am mainly interested in running on Mersennes, so I'd figured I'd post here given CGBN is pretty much required for that). The only difference is that, when I include CGBN, I can't use the --with-gmp option, as it fails to find the CGBN library. Anyway onto the more important issues:

When I set the compiler to gcc (have tried gcc, gcc-10 and gcc-9 commands), the configure fails with "cuda.h present but cannot be compiled". I tried also to get gcc-8 as suggested in readme.gpu, but installing gcc-8 seems to uninstall the Nvidia toolkit (whether I use version 12.0 or 11.2 of the toolkit), and vice versa. If instead I set it to nvcc, I get a similar error for gmp.h. The only thing that gets past this stage is setting it to g++, which causes issues further down the line.

The configure works fine with g++, but make gives several implicit type conversion errors (presumably as a result of treating main.c as C++? This was the impression I got from google.) Adding -fpermissive bypasses these, but gives a couple of errors about definitions crossing label jumps in cudawrapper.c. After adding some variable declarations to account for this, I get stuck with the following errors:
[CODE]/bin/bash ./libtool --tag=CC --mode=link g++ -g -W -Wall -Wundef -pedantic -g -O2 -DWITH_GPU -version-info 1:0:0 -g -o libecm.la -rpath /usr/local/lib libecm_la-ecm.lo libecm_la-ecm2.lo libecm_la-pm1.lo libecm_la-pp1.lo libecm_la-getprime_r.lo libecm_la-listz.lo libecm_la-lucas.lo libecm_la-stage2.lo libecm_la-mpmod.lo libecm_la-mul_lo.lo libecm_la-polyeval.lo libecm_la-median.lo libecm_la-schoen_strass.lo libecm_la-ks-multiply.lo libecm_la-rho.lo libecm_la-bestd.lo libecm_la-auxlib.lo libecm_la-random.lo libecm_la-factor.lo libecm_la-sp.lo libecm_la-spv.lo libecm_la-spm.lo libecm_la-mpzspm.lo libecm_la-mpzspv.lo libecm_la-ntt_gfp.lo libecm_la-ecm_ntt.lo libecm_la-pm1fs2.lo libecm_la-sets_long.lo libecm_la-auxarith.lo libecm_la-batch.lo libecm_la-parametrizations.lo libecm_la-cudawrapper.lo aprtcle/libecm_la-mpz_aprcl.lo libecm_la-addlaws.lo libecm_la-torsions.lo cudakernel.lo cudacommon.lo cgbn_stage1.lo ./x86_64/libmulredc.la -lcudart -lstdc++ -lgmp -lrt -lm -lm -lm -lm -lm
libtool: link: rm -fr .libs/libecm.a .libs/libecm.la .libs/libecm.lai
libtool: link: (cd .libs/libecm.lax/libmulredc.a && ar x "/home/daniel/maths_compute/gmp-ecm/ecm-edited/./x86_64/.libs/libmulredc.a")
libtool: link: ar cr .libs/libecm.a libecm_la-ecm.o libecm_la-ecm2.o libecm_la-pm1.o libecm_la-pp1.o libecm_la-getprime_r.o libecm_la-listz.o libecm_la-lucas.o libecm_la-stage2.o libecm_la-mpmod.o libecm_la-mul_lo.o libecm_la-polyeval.o libecm_la-median.o libecm_la-schoen_strass.o libecm_la-ks-multiply.o libecm_la-rho.o libecm_la-bestd.o libecm_la-auxlib.o libecm_la-random.o libecm_la-factor.o libecm_la-sp.o libecm_la-spv.o libecm_la-spm.o libecm_la-mpzspm.o libecm_la-mpzspv.o libecm_la-ntt_gfp.o libecm_la-ecm_ntt.o libecm_la-pm1fs2.o libecm_la-sets_long.o libecm_la-auxarith.o libecm_la-batch.o libecm_la-parametrizations.o libecm_la-cudawrapper.o aprtcle/libecm_la-mpz_aprcl.o libecm_la-addlaws.o libecm_la-torsions.o cudakernel.o cudacommon.o cgbn_stage1.o .libs/libecm.lax/libmulredc.a/mulredc1.o .libs/libecm.lax/libmulredc.a/mulredc10.o .libs/libecm.lax/libmulredc.a/mulredc11.o .libs/libecm.lax/libmulredc.a/mulredc12.o .libs/libecm.lax/libmulredc.a/mulredc13.o .libs/libecm.lax/libmulredc.a/mulredc14.o .libs/libecm.lax/libmulredc.a/mulredc15.o .libs/libecm.lax/libmulredc.a/mulredc16.o .libs/libecm.lax/libmulredc.a/mulredc17.o .libs/libecm.lax/libmulredc.a/mulredc18.o .libs/libecm.lax/libmulredc.a/mulredc19.o .libs/libecm.lax/libmulredc.a/mulredc1_10.o .libs/libecm.lax/libmulredc.a/mulredc1_11.o .libs/libecm.lax/libmulredc.a/mulredc1_12.o .libs/libecm.lax/libmulredc.a/mulredc1_13.o .libs/libecm.lax/libmulredc.a/mulredc1_14.o .libs/libecm.lax/libmulredc.a/mulredc1_15.o .libs/libecm.lax/libmulredc.a/mulredc1_16.o .libs/libecm.lax/libmulredc.a/mulredc1_17.o .libs/libecm.lax/libmulredc.a/mulredc1_18.o .libs/libecm.lax/libmulredc.a/mulredc1_19.o .libs/libecm.lax/libmulredc.a/mulredc1_2.o .libs/libecm.lax/libmulredc.a/mulredc1_20.o .libs/libecm.lax/libmulredc.a/mulredc1_3.o .libs/libecm.lax/libmulredc.a/mulredc1_4.o .libs/libecm.lax/libmulredc.a/mulredc1_5.o .libs/libecm.lax/libmulredc.a/mulredc1_6.o .libs/libecm.lax/libmulredc.a/mulredc1_7.o .libs/libecm.lax/libmulredc.a/mulredc1_8.o .libs/libecm.lax/libmulredc.a/mulredc1_9.o .libs/libecm.lax/libmulredc.a/mulredc2.o .libs/libecm.lax/libmulredc.a/mulredc20.o .libs/libecm.lax/libmulredc.a/mulredc3.o .libs/libecm.lax/libmulredc.a/mulredc4.o .libs/libecm.lax/libmulredc.a/mulredc5.o .libs/libecm.lax/libmulredc.a/mulredc6.o .libs/libecm.lax/libmulredc.a/mulredc7.o .libs/libecm.lax/libmulredc.a/mulredc8.o .libs/libecm.lax/libmulredc.a/mulredc9.o
libtool: link: ranlib .libs/libecm.a
libtool: link: rm -fr .libs/libecm.lax
libtool: link: ( cd ".libs" && rm -f "libecm.la" && ln -s "../libecm.la" "libecm.la" )
/bin/bash ./libtool --tag=CC --mode=link g++ -g -W -Wall -Wundef -pedantic -g -O2 -DWITH_GPU -o ecm ecm-auxi.o ecm-b1_ainc.o ecm-candi.o ecm-eval.o ecm-main.o ecm-resume.o ecm-addlaws.o ecm-torsions.o ecm-getprime_r.o aprtcle/ecm-mpz_aprcl.o ecm-memusage.o libecm.la -lgmp -lrt -lm -lm -lm -lm -lm
libtool: link: g++ -g -W -Wall -Wundef -pedantic -g -O2 -DWITH_GPU -o ecm ecm-auxi.o ecm-b1_ainc.o ecm-candi.o ecm-eval.o ecm-main.o ecm-resume.o ecm-addlaws.o ecm-torsions.o ecm-getprime_r.o aprtcle/ecm-mpz_aprcl.o ecm-memusage.o ./.libs/libecm.a -lcudart -lstdc++ -lgmp -lrt -lm
/usr/bin/ld: ./.libs/libecm.a(libecm_la-mpmod.o): in function `mulredc(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, long, unsigned long)':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:399: undefined reference to `mulredc20(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:396: undefined reference to `mulredc19(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:393: undefined reference to `mulredc18(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:390: undefined reference to `mulredc17(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:387: undefined reference to `mulredc16(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:384: undefined reference to `mulredc15(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:381: undefined reference to `mulredc14(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:378: undefined reference to `mulredc13(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:375: undefined reference to `mulredc12(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:372: undefined reference to `mulredc11(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:369: undefined reference to `mulredc10(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:366: undefined reference to `mulredc9(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:363: undefined reference to `mulredc8(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:360: undefined reference to `mulredc7(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:357: undefined reference to `mulredc6(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:354: undefined reference to `mulredc5(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:351: undefined reference to `mulredc4(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:348: undefined reference to `mulredc3(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:345: undefined reference to `mulredc2(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:342: undefined reference to `mulredc1(unsigned long*, unsigned long, unsigned long, unsigned long, unsigned long)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-mpmod.o): in function `ecm_redc_n(unsigned long*, unsigned long const*, long, unsigned long const*, unsigned long const*, long)':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:199: undefined reference to `__gmpn_mullo_n(unsigned long*, unsigned long const*, unsigned long const*, long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:211: undefined reference to `__gmpn_add_nc(unsigned long*, unsigned long const*, unsigned long const*, long, unsigned long)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-mpmod.o): in function `ecm_mulredc_basecase_n(unsigned long*, unsigned long const*, unsigned long const*, unsigned long const*, long, unsigned long*, unsigned long*)':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:589: undefined reference to `__gmpn_redc_1(unsigned long*, unsigned long*, unsigned long const*, long, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:595: undefined reference to `__gmpn_redc_2(unsigned long*, unsigned long*, unsigned long const*, long, unsigned long const*)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-mpmod.o): in function `ecm_sqrredc_basecase_n(unsigned long*, unsigned long const*, unsigned long const*, long, unsigned long*, unsigned long*) [clone .part.0]':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:648: undefined reference to `__gmpn_redc_1(unsigned long*, unsigned long*, unsigned long const*, long, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:654: undefined reference to `__gmpn_redc_2(unsigned long*, unsigned long*, unsigned long const*, long, unsigned long const*)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-mpmod.o): in function `__ecm_mpres_mul_z_to_z':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:1596: undefined reference to `__gmpn_fft_best_k(long, int)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:1597: undefined reference to `__gmpn_fft_next_size(long, int)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:1620: undefined reference to `__gmpn_mul_fft(unsigned long*, long, unsigned long const*, long, unsigned long const*, long, int)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-mpmod.o): in function `__ecm_mpres_get_z':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:269: undefined reference to `__gmpn_redc_2(unsigned long*, unsigned long*, unsigned long const*, long, unsigned long const*)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-mpmod.o): in function `__ecm_mpresn_mul_ui':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:2326: undefined reference to `__gmpn_add_nc(unsigned long*, unsigned long const*, unsigned long const*, long, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:548: undefined reference to `mulredc1_20(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-mpmod.o): in function `mulredc_1':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:491: undefined reference to `mulredc1(unsigned long*, unsigned long, unsigned long, unsigned long, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:494: undefined reference to `mulredc1_2(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:497: undefined reference to `mulredc1_3(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:500: undefined reference to `mulredc1_4(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:503: undefined reference to `mulredc1_5(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:506: undefined reference to `mulredc1_6(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:509: undefined reference to `mulredc1_7(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:512: undefined reference to `mulredc1_8(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:515: undefined reference to `mulredc1_9(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:518: undefined reference to `mulredc1_10(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:521: undefined reference to `mulredc1_11(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:524: undefined reference to `mulredc1_12(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:527: undefined reference to `mulredc1_13(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:530: undefined reference to `mulredc1_14(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:533: undefined reference to `mulredc1_15(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:536: undefined reference to `mulredc1_16(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:539: undefined reference to `mulredc1_17(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:542: undefined reference to `mulredc1_18(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:545: undefined reference to `mulredc1_19(unsigned long*, unsigned long, unsigned long const*, unsigned long const*, unsigned long)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-mpmod.o): in function `__ecm_mpres_mul':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:1421: undefined reference to `__gmpn_fft_best_k(long, int)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:1422: undefined reference to `__gmpn_fft_next_size(long, int)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:1445: undefined reference to `__gmpn_mul_fft(unsigned long*, long, unsigned long const*, long, unsigned long const*, long, int)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/mpmod.c:1445: undefined reference to `__gmpn_mul_fft(unsigned long*, long, unsigned long const*, long, unsigned long const*, long, int)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-schoen_strass.o): in function `F_divby3_1(__mpz_struct*, unsigned int)':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/schoen_strass.c:246: undefined reference to `__gmpn_mod_34lsub1(unsigned long*, long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/schoen_strass.c:246: undefined reference to `__gmpn_mod_34lsub1(unsigned long*, long)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-schoen_strass.o): in function `F_mulmod(__mpz_struct*, __mpz_struct*, __mpz_struct*, unsigned int)':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/schoen_strass.c:156: undefined reference to `__gmpn_fft_best_k(long, int)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/schoen_strass.c:159: undefined reference to `__gmpn_mul_fft(unsigned long*, long, unsigned long const*, long, unsigned long const*, long, int)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-schoen_strass.o): in function `__ecm_F_mul':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/schoen_strass.c:277: undefined reference to `__gmpn_mod_34lsub1(unsigned long*, long)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-schoen_strass.o): in function `F_divby5_1':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/schoen_strass.c:277: undefined reference to `__gmpn_mod_34lsub1(unsigned long*, long)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-ks-multiply.o): in function `__ecm_TMulKS':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/ks-multiply.c:483: undefined reference to `__gmpn_mulmod_bnm1_next_size(long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/ks-multiply.c:503: undefined reference to `__gmpn_mulmod_bnm1(unsigned long*, long, unsigned long const*, long, unsigned long const*, long, unsigned long*)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/ks-multiply.c:501: undefined reference to `__gmpn_mulmod_bnm1(unsigned long*, long, unsigned long const*, long, unsigned long const*, long, unsigned long*)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-ks-multiply.o): in function `__ecm_ks_wrapmul_m':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/ks-multiply.c:558: undefined reference to `__gmpn_mulmod_bnm1_next_size(long)'
/usr/bin/ld: ./.libs/libecm.a(libecm_la-ks-multiply.o): in function `__ecm_ks_wrapmul':
/home/daniel/maths_compute/gmp-ecm/ecm-edited/ks-multiply.c:628: undefined reference to `__gmpn_mulmod_bnm1_next_size(long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/ks-multiply.c:632: undefined reference to `__gmpn_mulmod_bnm1_next_size(long)'
/usr/bin/ld: /home/daniel/maths_compute/gmp-ecm/ecm-edited/ks-multiply.c:653: undefined reference to `__gmpn_mulmod_bnm1(unsigned long*, long, unsigned long const*, long, unsigned long const*, long, unsigned long*)'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:1027: ecm] Error 1
make[2]: Leaving directory '/home/daniel/maths_compute/gmp-ecm/ecm-edited'
make[1]: *** [Makefile:1963: all-recursive] Error 1
make[1]: Leaving directory '/home/daniel/maths_compute/gmp-ecm/ecm-edited'
make: *** [Makefile:837: all] Error 2
[/CODE]
that I'm not really sure how to describe. A bunch of undefined references functions (some of which I presume come from the asm in x86_64 subfolder, and some of which confusingly look like GMP inbuilt stuff.)

If anyone has any suggestions or advice for getting this to work with either gcc or g++ or whatever, please let me know.

paulunderwood 2023-01-22 17:05

How far did you get with [url]https://gitlab.inria.fr/zimmerma/ecm/-/blob/master/INSTALL-ecm?[/url]

And: [url]https://gitlab.inria.fr/zimmerma/ecm/-/blob/master/README.gpu?[/url]


All times are UTC. The time now is 05:38.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.