mersenneforum.org

mersenneforum.org (https://www.mersenneforum.org/index.php)
-   YAFU (https://www.mersenneforum.org/forumdisplay.php?f=96)
-   -   YAFU 2.0 (https://www.mersenneforum.org/showthread.php?t=26681)

Brian Gladman 2021-09-02 19:36

[QUOTE=bsquared;587090]I think CUDA_ERROR_FILE_NOT_FOUND refers to the stage1_core_sm**.ptx file; it is supposed to be next to the executable. The sort_engine.dll file should be in a directory called cub beneath the executable.[/QUOTE]

Here are my files from a working msieve (as a zip file):

[url]https://drive.google.com/file/d/1055dDkjQtyz08VfO6-jQbyagPSxIaxy2/view?usp=sharing[/url]

Plutie 2021-09-03 01:57

Having issues building w/ AVX512 support.



This command, which seems like it should work by itself from a glance at the Makefile, is exiting with many errors. [CODE]make ICELAKE=1 -j72[/CODE]

[CODE]./libysiqs.a(SIQS.o): In function `process_poly':
/root/yafu/factor/qs/SIQS.c:1282: undefined reference to `nextRoots_32k_avx2_small'
./libysiqs.a(SIQS.o): In function `siqs_static_init':
/root/yafu/factor/qs/SIQS.c:2153: undefined reference to `tdiv_medprimes_32k_avx2'
/root/yafu/factor/qs/SIQS.c:2164: undefined reference to `resieve_medprimes_32k_avx512bw'
/root/yafu/factor/qs/SIQS.c:2165: undefined reference to `med_sieveblock_32k_avx512bw'
/root/yafu/factor/qs/SIQS.c:2209: undefined reference to `resieve_medprimes_32k_avx2'
/root/yafu/factor/qs/SIQS.c:2210: undefined reference to `tdiv_medprimes_32k_avx2'
/root/yafu/factor/qs/SIQS.c:2212: undefined reference to `med_sieveblock_32k_avx2'
/root/yafu/factor/qs/SIQS.c:2241: undefined reference to `nextRoots_32k_avx2_intrin'
/root/yafu/factor/qs/SIQS.c:2256: undefined reference to `nextRoots_32k_sse41'
/root/yafu/factor/qs/SIQS.c:2257: undefined reference to `med_sieveblock_32k_sse41'
/root/yafu/factor/qs/SIQS.c:2164: undefined reference to `resieve_medprimes_32k_avx512bw'
/root/yafu/factor/qs/SIQS.c:2165: undefined reference to `med_sieveblock_32k_avx512bw'
/root/yafu/factor/qs/SIQS.c:2176: undefined reference to `resieve_medprimes_32k_avx2'
/root/yafu/factor/qs/SIQS.c:2178: undefined reference to `med_sieveblock_32k_avx2'
/root/yafu/factor/qs/SIQS.c:2249: undefined reference to `nextRoots_32k_avx2'
/root/yafu/factor/qs/SIQS.c:2176: undefined reference to `resieve_medprimes_32k_avx2'
/root/yafu/factor/qs/SIQS.c:2178: undefined reference to `med_sieveblock_32k_avx2'
collect2: error: ld returned 1 exit status
Makefile:415: recipe for target 'yafu' failed
make: *** [yafu] Error 1
[/CODE]
Running make with these arguments has fixed most of the undefined references, but some still remain.[CODE]make ICELAKE=1 SKYLAKEX=1 USE_AVX2=1 USE_BMI2=1 NFS=1 -j72[/CODE][CODE]./libysiqs.a(SIQS.o): In function `siqs_static_init':
/root/yafu/factor/qs/SIQS.c:2164: undefined reference to `resieve_medprimes_32k_avx512bw'
/root/yafu/factor/qs/SIQS.c:2165: undefined reference to `med_sieveblock_32k_avx512bw'
/root/yafu/factor/qs/SIQS.c:2164: undefined reference to `resieve_medprimes_32k_avx512bw'
/root/yafu/factor/qs/SIQS.c:2165: undefined reference to `med_sieveblock_32k_avx512bw'
collect2: error: ld returned 1 exit status
Makefile:415: recipe for target 'yafu' failed
make: *** [yafu] Error 1
[/CODE]


Any help would be greatly appreciated, thank you!

bsquared 2021-09-03 03:48

[QUOTE=Plutie;587121]Having issues building w/ AVX512 support.


Running make with these arguments has fixed most of the undefined references, but some still remain.[CODE]make ICELAKE=1 SKYLAKEX=1 USE_AVX2=1 USE_BMI2=1 NFS=1 -j72[/CODE][CODE]./libysiqs.a(SIQS.o): In function `siqs_static_init':
/root/yafu/factor/qs/SIQS.c:2164: undefined reference to `resieve_medprimes_32k_avx512bw'
/root/yafu/factor/qs/SIQS.c:2165: undefined reference to `med_sieveblock_32k_avx512bw'
/root/yafu/factor/qs/SIQS.c:2164: undefined reference to `resieve_medprimes_32k_avx512bw'
/root/yafu/factor/qs/SIQS.c:2165: undefined reference to `med_sieveblock_32k_avx512bw'
collect2: error: ld returned 1 exit status
Makefile:415: recipe for target 'yafu' failed
make: *** [yafu] Error 1
[/CODE]


Any help would be greatly appreciated, thank you![/QUOTE]

Can you verify that when building files and linking you actually see these flags being passed:

gcc -g -DUSE_SSE2 -DUSE_BMI2 -DUSE_AVX2 -DUSE_AVX512F -DUSE_AVX512BW -DSKYLAKEX -DIFMA -march=icelake-client ...

Particularly, the -DUSE_AVX512BW flag.

Actually, I think you just have to do a clean with the flags specified:

make clean ICELAKE=1 SKYLAKEX=1 USE_AVX2=1 USE_BMI2=1 NFS=1

then remake. If the relevant file (med_sieve_32k_avx2.c) was compiled before without -DUSE_AVX512BW then make won't re-build it just because a new flag is specified, the old object file first has to be removed (or source file touched).

Plutie 2021-09-04 15:44

[QUOTE=bsquared;587126]Can you verify that when building files and linking you actually see these flags being passed:

gcc -g -DUSE_SSE2 -DUSE_BMI2 -DUSE_AVX2 -DUSE_AVX512F -DUSE_AVX512BW -DSKYLAKEX -DIFMA -march=icelake-client ...

Particularly, the -DUSE_AVX512BW flag.

Actually, I think you just have to do a clean with the flags specified:

make clean ICELAKE=1 SKYLAKEX=1 USE_AVX2=1 USE_BMI2=1 NFS=1

then remake. If the relevant file (med_sieve_32k_avx2.c) was compiled before without -DUSE_AVX512BW then make won't re-build it just because a new flag is specified, the old object file first has to be removed (or source file touched).[/QUOTE]


Sorry for the delay. Tried that, still isn't working. (also realized that the CPU in this system isn't actually ice lake, but skylake-x). Tried rebuilding after the clean with [CODE]make SKYLAKEX=1 NFS=1[/CODE]This didn't work either, and here are the flags being passed to gcc.

[CODE]gcc-8 -g -DUSE_SSE2 -DUSE_BMI2 -DUSE_AVX2 -DUSE_AVX512F -DUSE_AVX512BW -DSKYLAKEX[/CODE]

bsquared 2021-09-04 15:48

[QUOTE=Plutie;587250]Sorry for the delay. Tried that, still isn't working. (also realized that the CPU in this system isn't actually ice lake, but skylake-x). Tried rebuilding after the clean with [CODE]make SKYLAKEX=1 NFS=1[/CODE]This didn't work either, and here are the flags being passed to gcc.

[CODE]gcc-8 -g -DUSE_SSE2 -DUSE_BMI2 -DUSE_AVX2 -DUSE_AVX512F -DUSE_AVX512BW -DSKYLAKEX[/CODE][/QUOTE]

It may seem redundant, but after a clean try this:

make SKYLAKEX=1 USE_AVX2=1 USE_BMI2=1 NFS=1

That is the build line I use all the time; if it doesn't work you can post or PM me the errors. I am working to make builds easier, thanks for your patience.

Plutie 2021-09-04 15:57

That worked, thank you!

chris2be8 2021-09-05 15:49

[QUOTE=bsquared;587090]I think CUDA_ERROR_FILE_NOT_FOUND refers to the stage1_core_sm**.ptx file; it is supposed to be next to the executable. The sort_engine.dll file should be in a directory called cub beneath the executable.[/QUOTE]

See [url]https://mersenneforum.org/showpost.php?p=587018&postcount=50[/url] for details of what I found out about the latest msieve version.

stream 2021-09-11 12:40

Pure AVX2 build is broken:

make yafu COMPILER=gcc USE_AVX2=1 USE_BMI2=1

(NFS is intentionally disabled)

Linking fails with bunch of references to AVX-512 code.

[code]
./libyecm.a(avx_ecm_main.o): In function `vec_ecm_main':
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:585: undefined reference to `vecmulmod52_fixed832_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:586: undefined reference to `vecsqrmod52_fixed832_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:587: undefined reference to `vec_simul_addsub52_fixed1040'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:578: undefined reference to `vecmulmod52_fixed624_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:579: undefined reference to `vecsqrmod52_fixed624_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:580: undefined reference to `vec_simul_addsub52_fixed1040'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:571: undefined reference to `vecmulmod52_fixed416_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:572: undefined reference to `vecsqrmod52_fixed416_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:573: undefined reference to `vec_simul_addsub52_fixed1040'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:592: undefined reference to `vecmulmod52_fixed1040_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:593: undefined reference to `vecsqrmod52_fixed1040_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:594: undefined reference to `vec_simul_addsub52_fixed1040'
[/code]

johnadam74 2021-09-12 10:49

Revision 536 will compile but something must have changed in Revision 537 to break the code?

James Heinrich 2021-09-12 13:37

I'm back home now and able to test v2.06 on my Win10/i8-8100 machine.
It works, but I've noticed a couple things (which entirely could be me doing something wrong).

1) ECM runs as a single thread of yafu-x64.exe
I don't care if ECM runs within yafu or spawns external ecm.exe as long as it uses the appropriate number of threads.
Relevant yafu.ini entries:
[c]threads=4[/c]
[c]ecm_path=c:\users\user\desktop\yafu2\ecm\ecm.exe[/c]
If I specify an [i]invalid[/i] path for ecm.exe then it appropriately tells me "ecm: ECM executable does not exist at c:\invalid\path\ecm.exe" and "using internal single threaded ECM...", but even when the path to ecm.exe is valid it appears to be using the internal, single-threaded ECM (with no warning).

2) Number of witnesses for PRP is always "1" no even if I set something like [c]nprp=20[/c] in yafu.ini

3) Increased verbosity doesn't seem to work (at least in yafu.ini). The description says "Note that more v's increase the verbosity" but if I specify [c]v v[/c] it tells me "invalid option v v" and spews the list of valid options and exits

bsquared 2021-09-12 14:07

[QUOTE=stream;587689]Pure AVX2 build is broken:

make yafu COMPILER=gcc USE_AVX2=1 USE_BMI2=1

(NFS is intentionally disabled)

Linking fails with bunch of references to AVX-512 code.

[code]
./libyecm.a(avx_ecm_main.o): In function `vec_ecm_main':
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:585: undefined reference to `vecmulmod52_fixed832_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:586: undefined reference to `vecsqrmod52_fixed832_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:587: undefined reference to `vec_simul_addsub52_fixed1040'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:578: undefined reference to `vecmulmod52_fixed624_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:579: undefined reference to `vecsqrmod52_fixed624_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:580: undefined reference to `vec_simul_addsub52_fixed1040'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:571: undefined reference to `vecmulmod52_fixed416_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:572: undefined reference to `vecsqrmod52_fixed416_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:573: undefined reference to `vec_simul_addsub52_fixed1040'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:592: undefined reference to `vecmulmod52_fixed1040_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:593: undefined reference to `vecsqrmod52_fixed1040_bfips'
/home/stream/work/yafu/yafu/factor/avx-ecm/avx_ecm_main.c:594: undefined reference to `vec_simul_addsub52_fixed1040'
[/code][/QUOTE]

Thanks, it's fixed now.

Those new function make avx-ecm about 10% faster below 1040 bits, but I had forgotten to add stubs for non-avx-512 builds.


All times are UTC. The time now is 08:04.

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