Alex, your original code would exit early partly based on the number of successful tasks (i.e., nodes where an extension was found), rather than simply the number of completed tasks (whether or not they had an extension). Do you remember why you wrote it this way? I simply required that three quarters of tasks be completed before the early exit, with no checking for successful tasks.
In addition to the early exit feature, I changed the default for the -q option to 15, as I found that it tended to run faster than the previous default of 20, at least for quick searches. I also changed the default number of threads to be one less than the number of logical processors detected by omp_get_num_procs().
I also fixed a few minor bugs that didn't affect the validity of any past searches. Most notably, I fixed a memory leak bug that would, on very rare occasions, cause qfind to exit early with the somewhat cryptic error message "no available extension indices". I also fixed the bug that caused strange output for the longest partial result when a search finished at an extremely shallow depth, as discussed here.
Here is a zip archive containing a Windows executable of the latest version of qfind for x86-64 CPUs: This was compiled under MinGW-w64 with the MSVCRT runtime library using the following command:
Code: Select all
gcc -static -std=c11 -fopenmp -march=x86-64 -O3 -o qfind qfind.c
I'm also curious to know if anyone has any experience compiling portable binaries for macOS. I'd like to be able to provide such binaries, but I don't have a Mac, nor do I know anyone who would let me borrow theirs. I know there have been issues with getting OpenMP to work, requiring GCC to be installed with the Homebrew package manager.
Before I add any more new features to qfind, I intend to refactor the code to make it easier to maintain. By the time I make a proper release, I'll probably call this qfind v3.0, rather than qfind v2.4.