![]() |
[QUOTE=paulunderwood;533618]I noticed a huge difference in running times on Linux between compiling with [c]make[/c] and [c]make gpuowl[/c].[/QUOTE]Please elaborate. Gpu models, relative timing values, which is faster, etc.
|
[QUOTE=kriesel;533637]Please elaborate. Gpu models, relative timing values, which is faster, etc.[/QUOTE]
GPU: Asus Radeon VII make: 1243 us/it make gpuowl: 760 us/it I don't know if the same applies to [c]make gpuowl-win.exe[/c] |
Windows build of v6.11-104-g91ef9a8
4 Attachment(s)
I'm about to spin up another recent version, to replace an old version that's about to finish an exponent, so why not the very latest? Build process is still generating lots of warnings. Help file attached.
I tried to run monitor.py as shown in the attachment monitor.txt, but ran into what looks like a hard obstacle to me, without knowing much about linux or msys2/mingw64. Now if such a thing only required OpenCL, that would be great. Linux kernel modules, especially in a sort of emulator, are well out of my depth. |
[QUOTE=paulunderwood;533639]GPU: Asus Radeon VII
make: 1243 us/it make gpuowl: 760 us/it I don't know if the same applies to [c]make gpuowl-win.exe[/c][/QUOTE] No it does not. See [URL]https://www.mersenneforum.org/showpost.php?p=533006&postcount=1625[/URL] where I got my XFX Radeon VII to run under 800us/it on 5M fft, clocked fast and very hot, on a Windows 10 Pro system. Make alone presumably attempts to build a linux executable, and that does not go well in msys2/mingw64. There is no executable generated for comparison. Probably for good reason.[CODE]ken@condorella MINGW64 ~/gpuowl-compile/v6.11-104-g91ef9a8/gpuowl $ make echo \"`git describe --long --dirty --always`\" > version.new diff -q -N version.new version.inc >/dev/null || mv version.new version.inc echo Version: `cat version.inc` Version: "v6.11-104-g91ef9a8" g++ -o gpuowl Pm1Plan.o GmpUtil.o Worktodo.o common.o main.o Gpu.o clwrap.o Task.o checkpoint.o timeutil.o Args.o state.o Signal.o FFTConfig.o AllocTrac.o gpuowl-wrap.o -lstdc++fs -lOpenCL -lgmp -pthread -L/opt/rocm/opencl/lib/x86_64 -L/opt/amdgpu-pro/lib/x86_64-linux-gnu -L/c/Windows/System32 -L. d000050.o:(.idata$5+0x0): multiple definition of `__imp___C_specific_handler' d000044.o:(.idata$5+0x0): first defined here C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o: In function `pre_c_init': C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:146: undefined reference to `__p__fmode' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o: In function `__tmainCRTStartup': C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:290: undefined reference to `_set_invalid_parameter_handler' C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:299: undefined reference to `__p__acmdln' common.o:common.cpp:(.text+0x371): undefined reference to `__imp___acrt_iob_func' common.o:common.cpp:(.text+0x92d): undefined reference to `__imp___acrt_iob_func' Gpu.o:Gpu.cpp:(.text+0x2b5): undefined reference to `__imp___acrt_iob_func' Gpu.o:Gpu.cpp:(.text+0x822e): undefined reference to `__imp___acrt_iob_func' Args.o:Args.cpp:(.text+0x29): undefined reference to `__imp___acrt_iob_func' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-merr.o): In function `_matherr': C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/merr.c:72: undefined reference to `__acrt_iob_func' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-pseudo-reloc.o): In function `__report_error': C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/pseudo-reloc.c:149: undefined reference to `__acrt_iob_func' C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/pseudo-reloc.c:150: undefined reference to `__acrt_iob_func' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingwex.a(lib64_libmingwex_a-wassert.o): In function `_wassert': C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/misc/wassert.c:35: undefined reference to `__acrt_iob_func' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingwex.a(lib64_libmingwex_a-mingw_vfprintf.o): In function `__mingw_vfprintf': C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/stdio/mingw_vfprintf.c:53: undefined reference to `_lock_file' C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/stdio/mingw_vfprintf.c:55: undefined reference to `_unlock_file' collect2.exe: error: ld returned 1 exit status make: *** [Makefile:19: gpuowl] Error 1 [/CODE]The difference Paul reports looks similar to the difference between using optimized combinations of George's T2_shuffle, workingin, and workingout, -use directives, and using none of them. |
have you tried [c]make clean[/c] followed by [c]make gpuowl-win.exe[/c]?
|
[QUOTE=paulunderwood;533648]have you tried [c]make clean[/c] followed by [c]make gpuowl-win.exe[/c]?[/QUOTE]No. I don't see the point of that. I start with an empty folder, git clone, then make gpuowl-win.exe for each build. What would clean gain there?
|
[QUOTE=kriesel;533649]I don't see the point of that. I start with an empty folder, git clone, then make gpuowl-win.exe for each build. What would clean gain there?[/QUOTE]
If that is what you do: making a clean directory then there is no need for make clean. I see only "make" in your previous output. [CODE]ken@condorella MINGW64 ~/gpuowl-compile/v6.11-104-g91ef9a8/gpuowl $ make [/CODE] EDIT: my apology for not reading your post correctly. In the attachment you indeed do make gpuowl-win.exe. |
[QUOTE=paulunderwood;533650]If that is what you do: making a clean directory then there is no need for make clean.[/QUOTE]The usual sequence, in a folder called gpuowl-compile:
mkdir latest cd latest git clone ... make gpuowl-win.exe (move the executable up a level from ./gpuowl/, run -h, create config.txt, close the compile window, rename latest folder to the version-and-commit, and test/use there, after copying to my server drive for zip/post) The make (nul) test should perhaps have had make clean preceding it. Redoing it that way produces its same outcome, build fail. make clean followed by make gpuowl-win.exe produces a byte-for-byte match to the output of the usual sequence. Make clean appears to me to only remove .o files in this case. |
[QUOTE=kriesel;533654]The usual sequence, in a folder called gpuowl-compile:
mkdir latest cd latest git clone ... make gpuowl-win.exe (move the executable up a level from ./gpuowl/, run -h, create config.txt, close the compile window, rename latest folder to the version-and-commit, and test/use there, after copying to my server drive for zip/post) The make (nul) test should perhaps have had make clean preceding it. Redoing it that way produces its same outcome, build fail. make clean followed by make gpuowl-win.exe produces a byte-for-byte match to the output of the usual sequence. Make clean appears to me to only remove .o files in this case.[/QUOTE] In Linux gpuowl.cl has to follow gpuowl around the file system. To be more explicit: if I move gpuowl into the production directory I must also move the file gpuowl.cl with it. |
[QUOTE=paulunderwood;533655]In Linux gpuowl.cl has to follow gpuowl around the file system. To be more explicit: if I move gpuowl into the production directory I must also move the file gpuowl.cl with it.[/QUOTE]
I'm pretty sure the kernels get put into the binary when compiling, the binary works literally alone. (wasn't always that way) |
[QUOTE=kracker;533662]I'm pretty sure the kernels get put into the binary when compiling, the binary works literally alone. (wasn't always that way)[/QUOTE]
Quoting from [url]https://github.com/preda/gpuowl[/url] [CODE]Usage Make sure that the gpuowl.cl file is in the same folder as the executable Get "PRP smallest available first time tests" assignments from GIMPS Manual Testing ( http://mersenne.org/ ). Copy the assignment lines from GIMPS to a file named 'worktodo.txt' Run gpuowl. It prints progress report on stdout and in gpuowl.log, and writes result lines to results.txt Submit the result lines from results.txt to http://mersenne.org/ manual testing. Build To build simply invoke "make" (or look inside the Makefile for a manual build). the library libgmp-dev a C++ compiler (e.g. gcc, clang) an OpenCL implementation (which provides the libOpenCL library). Recommended: an AMD GPU with ROCm 1.7. [/CODE] Is that all outdated? I have to do [c]make gpuowl[/c]! |
| All times are UTC. The time now is 23:13. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.