![]() |
FactorTroll II x64
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: [COLOR=DarkRed][B]https: // www.dropbox.com/s/<<blocked>>/FactorTool2x64_v1.15.rar?dl=0[/B][/COLOR] I think the tool is more or less self explaining. Any feedback would be appreciated. Thank you. |
And here is a screenshot of it.
[URL="https://dl.dropboxusercontent.com/u/697754/ft2/FactorTool2_Screenshot.png"]Screenshot1[/URL] [URL="https://dl.dropboxusercontent.com/u/697754/ft2/FactorTool2_Screenshot2.png"]Screenshot2[/URL] |
Source code would be good.
Most people do not trust random binary files on the internet. |
[QUOTE=bgbeuning;427097]Source code would be good.
Most people do not trust random binary files on the internet.[/QUOTE] I agree on that and myself would follow the same rule. 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: [URL="https://www.virustotal.com/nb/file/0591504b4be61339ee4098206940713442ba18a47ca9495fa795a212ff39f678/analysis/1456169809/"]VirusTotal malware check[/URL] Hop it will be a bit more trustworthy. |
[QUOTE=mrft2;427089]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) [B]modified (??) [/B]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. [/QUOTE] msieve is naturally supporting multi threading and ECC. What have you modified? 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). |
[QUOTE=Batalov;427101]msieve is naturally supporting multi threading and ECC. What have you modified?
How is this different from yafu? Btw, if you don't demonstrate the source, then you are in violation of msieve's license.[/quote] No it doesn't, Msieve's "license" does not have any restrictions or terms. [QUOTE=Batalov;427101] 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).[/QUOTE] That is very true. 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. |
[QUOTE=Batalov;427101]msieve is naturally supporting multi threading and ECC. What have you modified?
How is this different from yafu? [/QUOTE] Msieve doesn't natively support multi-threading for either siqs or ecm (i.e., -t 8 runs the same as -t 1). 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). |
[QUOTE=Batalov;427101]msieve is naturally supporting multi threading and ECC. What have you modified?
How is this different from yafu? [/QUOTE] Last time I checked yafu is a command line tool. This is a windows one click tool. I find it pretty easy to see the different. [QUOTE=Batalov;427101] 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).[/QUOTE] Here is what the msiev source says in it's comment: "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. |
[QUOTE=mrft2;427105]Last time I checked yafu is a command line tool. This is a windows one click tool.
I find it pretty easy to see the different. [/QUOTE] The functionality is identical, except that yafu is more advanced than Msieve in some ways (multithreaded SIQS instead of single threaded MPQS, and also built in and automated factoring control, something Msieve does not have). It would have been far simpler for you to write a trivial GUI-wrapper around Yafu then to try to reinvent the wheel. |
[QUOTE=Dubslow;427106]The functionality is identical, except that yafu is more advanced than Msieve in some ways (multithreaded SIQS instead of single threaded MPQS, and also built in and automated factoring control, something Msieve does not have).
It would have been far simpler for you to write a trivial GUI-wrapper around Yafu then to try to reinvent the wheel.[/QUOTE] Unless his goal was to reinvent the wheel :smile: (which can be fun, even if useless) A nit point: msieve also implements siqs... [SIZE="1"]but as of now it is 1.5 to 2x slower than yafu.[/SIZE] |
[QUOTE=bsquared;427104]Msieve doesn't natively support multi-threading for either siqs or ecm (i.e., -t 8 runs the same as -t 1).
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).[/QUOTE] My modification is done in the function: 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; } [/CODE] |
| All times are UTC. The time now is 01:13. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.