![]() |
![]() |
#1 |
Feb 2016
2×7 Posts |
![]()
Hi
I made a small one click gui factoring tool for windows I was hoping some one would like to try out. The tool is using msieve's mpqs (siqs) modified to support multi threading and lenstra ecc methode also modified to use multi thread. It's compiled to a windows x64 executable using visual studio 2012. Here is a link to the download page: https: // www.dropbox.com/s/<<blocked>>/FactorTool2x64_v1.15.rar?dl=0 I think the tool is more or less self explaining. Any feedback would be appreciated. Thank you. Last fiddled with by Batalov on 2016-02-22 at 20:04 Reason: links to blind binaries are against this forum's policy; blocked temporarily |
![]() |
![]() |
![]() |
#2 |
Feb 2016
2×7 Posts |
![]() Last fiddled with by mrft2 on 2016-02-22 at 19:29 |
![]() |
![]() |
![]() |
#3 |
Dec 2014
3×5×17 Posts |
![]()
Source code would be good.
Most people do not trust random binary files on the internet. |
![]() |
![]() |
![]() |
#4 | |
Feb 2016
2×7 Posts |
![]() Quote:
But I was not planing on giving out the source code yet. It would need some cleanup and some nice comment first. But I have uploaded the exe to virus total and here is the link to it: VirusTotal malware check Hop it will be a bit more trustworthy. |
|
![]() |
![]() |
![]() |
#5 | |
"Serge"
Mar 2008
Phi(4,2^7658614+1)/2
3·3,109 Posts |
![]() Quote:
How is this different from yafu? Btw, if you don't demonstrate the source, then you are in violation of msieve's license. It also doesn't pass the self-preservation test for most people, and for safety of those who don't have self-preservation instinct we will for now block your download links until you address the questions (and post the source). |
|
![]() |
![]() |
![]() |
#6 | ||
Basketry That Evening!
"Bunslow the Bold"
Jun 2011
40<A<43 -89<O<-88
3×29×83 Posts |
![]() Quote:
Quote:
Don't fear OP, every new member who posts links gets the same treatment, this is not personal or an attack on your work. Once we have some trust you'll be fine. |
||
![]() |
![]() |
![]() |
#7 | |
"Ben"
Feb 2007
D2B16 Posts |
![]() Quote:
But it's not clear whether the OP modified msieve's source or if his programs runs msieve in a multithreaded wrapper somehow (I have a self-preservation instinct, I guess, and haven't downloaded the program to test it). |
|
![]() |
![]() |
![]() |
#8 | ||
Feb 2016
2·7 Posts |
![]() Quote:
I find it pretty easy to see the different. Quote:
"This source distribution is placed in the public domain by its author, Jason Papadopoulos. You may use it for any purpose, free of charge, without having to notify anyone. I disclaim any responsibility for any errors. Optionally, please be nice and tell me if you find this source to be useful. Again optionally, if you add to the functionality present here please consider making those additions public too, so that others may benefit from your work." My interpretasjon of this was that I could use it in a tool without sharing the source code. |
||
![]() |
![]() |
![]() |
#9 | |
Basketry That Evening!
"Bunslow the Bold"
Jun 2011
40<A<43 -89<O<-88
3·29·83 Posts |
![]() Quote:
It would have been far simpler for you to write a trivial GUI-wrapper around Yafu then to try to reinvent the wheel. |
|
![]() |
![]() |
![]() |
#10 | |
"Ben"
Feb 2007
337110 Posts |
![]() Quote:
![]() A nit point: msieve also implements siqs... but as of now it is 1.5 to 2x slower than yafu. |
|
![]() |
![]() |
![]() |
#11 | |
Feb 2016
E16 Posts |
![]() Quote:
uint32 factor_mpqs(msieve_obj *obj, mp_t *n, factor_list_t *factor_list) It will use CreateThread and make multiple threads and then start sieving on a small range. After three small ranges it can calculate an estimation polynomial to estimate the number of full relation it will need based on the total number of relations calculated by msieve. Here is the code that makes it multi threaded if that helps: Code:
static BOOL create_threads(msieve_obj *obj, mp_t *n, uint32 multiplier, sieve_param_t *params, THREADARGS *targs, HANDLE *hThread, uint32 tot_rels_found, uint32 full_rels_found, uint32 number_of_threads, const fb_t *factor_base, const uint32 *modsqrt_array) { uint32 i; for(i = 0; i < number_of_threads; i++) { msieve_obj *tobj = (msieve_obj *)malloc(sizeof(msieve_obj)); if(NULL == tobj) { return FALSE; } memcpy(tobj, obj, sizeof(msieve_obj)); tobj->flags = (MSIEVE_FLAG_SKIP_QS_CYCLES | MSIEVE_FLAG_SIEVING_IN_PROGRESS | MSIEVE_FLAG_LOG_TO_STDOUT); tobj->flags |= (obj->flags & MSIEVE_FLAG_USER_ABORT); tobj->seed1 = get_rand(&obj->seed1, &obj->seed2); tobj->seed2 = get_rand(&obj->seed1, &obj->seed2); memset(&tobj->savefile, 0, sizeof(savefile_t)); sprintf_s(targs[i].szSaveFile, sizeof(targs[i].szSaveFile), "%s%d", obj->savefile.name, i+1); DeleteFile(targs[i].szSaveFile); //Make sure we don't read som old gurba savefile_init(&tobj->savefile, targs[i].szSaveFile); savefile_open(&tobj->savefile, SAVEFILE_APPEND); targs[i].factor_base = (fb_t *)xmalloc(params->fb_size * sizeof(fb_t)); targs[i].modsqrt_array = (uint32 *)xmalloc(params->fb_size * sizeof(uint32)); if(NULL == targs[i].factor_base || NULL == targs[i].modsqrt_array) { free(tobj); return FALSE; } memcpy(targs[i].factor_base, factor_base, (params->fb_size * sizeof(fb_t))); memcpy(targs[i].modsqrt_array, modsqrt_array, (params->fb_size * sizeof(uint32))); InitializeCriticalSection(&targs[i].crit_lock_thread); targs[i].obj = tobj; targs[i].params = params; targs[i].multiplier = multiplier; targs[i].number_of_threads = number_of_threads; targs[i].tot_rels_found = tot_rels_found; targs[i].full_rels_found = full_rels_found; add_point(&tobj->pstat, tot_rels_found, full_rels_found); mp_copy(n, &targs[i].n); } memset(hThread, 0, sizeof(HANDLE) * MAX_THREADS); for(i = 0; i < number_of_threads; i++) { DWORD tid; hThread[i] = CreateThread(NULL, 0, MsieveThread, &targs[i], 0, &tid); printstatus("Thread Created [%d]", i+1); Sleep(200); SetThreadPriority(hThread[i], THREAD_PRIORITY_IDLE); } Sleep(100); return TRUE; } |
|
![]() |
![]() |