Skip to content

Commit 92ddef5

Browse files
Display + Modification JsonBuilder
1 parent 88df724 commit 92ddef5

File tree

4 files changed

+22
-8
lines changed

4 files changed

+22
-8
lines changed

include/io/CliParser.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ struct CliOptions {
9494
uint64_t max_e_bits = 268'435'456ULL;
9595
uint64_t curves_tested_for_found = 0;
9696
int invarianterror = 0;
97-
97+
uint32_t ecm_progress_interval_ms = 2000;
9898
};
9999

100100
class CliParser {

src/io/CliParser.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ void printUsage(const char* progName) {
9494
std::cout << " -torsion16 : (Optional) use torsion-16" << std::endl;
9595
std::cout << " -notorsion : (Optional) use no torsion instead of default torsion-16" << std::endl;
9696
std::cout << " -ecm_check_interval <value> : ECM Error Check interval in seconds (300s by default)" << std::endl;
97+
std::cout << " -ecm_progress_ms <value> : ECM progress update interval in milliseconds (default: 2000 ms)" << std::endl;
98+
9799
//std::cout << " -brent [<d>] : (Optional) use Brent-Suyama variant with default or specified degree d (e.g., -brent 6)" << std::endl;
98100
//std::cout << " -bsgs : (Optional) enable batching of multipliers in ECM stage 2 to reduce ladder calls" << std::endl;
99101
std::cout << " -marin : (Optional) deactivate use of marin backend" << std::endl;
@@ -328,6 +330,10 @@ CliOptions CliParser::parse(int argc, char** argv ) {
328330
opts.ecm_check_interval = std::strtoull(argv[i + 1], nullptr, 10); // base 10
329331
++i;
330332
}
333+
else if (std::strcmp(argv[i], "-ecm_progress_ms") == 0 && i + 1 < argc) {
334+
opts.ecm_progress_interval_ms = std::strtoull(argv[i + 1], nullptr, 10); // base 10
335+
++i;
336+
}
331337

332338
else if (std::strcmp(argv[i], "-llsafeb") == 0 && i + 1 < argc) {
333339
opts.llsafe_block = std::strtoull(argv[i + 1], nullptr, 10); // base 10

src/modes/RunEcm.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ int App::runECMMarin()
104104
uint64_t curves = options.nmax ? options.nmax : (options.K ? options.K : 250);
105105
const bool verbose = true;
106106
const bool forceSigma = (options.curve_seed != 0ULL);
107+
const uint32_t ui_interval_ms = options.ecm_progress_interval_ms ? options.ecm_progress_interval_ms : 2000;
107108
if (forceSigma) curves = 1ULL;
108109

109110
auto splitmix64_step = [](uint64_t& x)->uint64_t{ x += 0x9E3779B97f4A7C15ULL; uint64_t z=x; z^=z>>30; z*=0xBF58476D1CE4E5B9ULL; z^=z>>27; z*=0x94D049BB133111EBULL; z^=z>>31; return z; };
@@ -834,15 +835,20 @@ int App::runECMMarin()
834835
else { xDBLADD_strict(2,3, 0,1); }
835836

836837
auto now = high_resolution_clock::now();
837-
if (duration_cast<milliseconds>(now - last_ui).count() >= 400 || i+1 == total_bits) {
838+
if (duration_cast<milliseconds>(now - last_ui).count() >= ui_interval_ms || i+1 == total_bits) {
838839
double done = double(i + 1), total = double(total_bits);
839840
double elapsed = duration<double>(now - t0).count() + saved_et;
840841
double ips = done / std::max(1e-9, elapsed);
841842
double eta = (total > done && ips > 0.0) ? (total - done) / ips : 0.0;
842843
std::ostringstream line;
843-
line<<"\r[ECM] Curve "<<(c+1)<<"/"<<curves<<" | Stage1 "<<(i+1)<<"/"<<total_bits<<" ("<<fixed<<setprecision(2)<<(done*100.0/total)<<"%) | ETA "<<fmt_hms(eta);
844-
std::cout<<line.str()<<std::flush; last_ui = now;
844+
line << "\r[ECM] Curve " << (c+1) << "/" << curves
845+
<< " | Stage1 " << (i+1) << "/" << total_bits
846+
<< " (" << std::fixed << std::setprecision(1) // <== moins de digits
847+
<< (done * 100.0 / total) << "%) | ETA " << fmt_hms(eta);
848+
std::cout << line.str() << std::flush;
849+
last_ui = now;
845850
}
851+
846852
if (duration_cast<seconds>(now - last_save).count() >= backup_period) { double elapsed = duration<double>(now - t0).count() + saved_et; save_ckpt((uint32_t)(i + 1), elapsed); last_save = now; }
847853
if (interrupted) { double elapsed = duration<double>(now - t0).count() + saved_et; save_ckpt((uint32_t)(i + 1), elapsed); std::cout<<"\n[ECM] Interrupted at curve "<<(c+1)<<", bit "<<(i+1)<<"/"<<total_bits<<"\n"; if (guiServer_) { std::ostringstream oss; oss<<"[ECM] Interrupted at curve "<<(c+1)<<", bit "<<(i+1)<<"/"<<total_bits; guiServer_->appendLog(oss.str()); } curves_tested_for_found=c+1; options.curves_tested_for_found = c+1 ; write_result(); delete eng; return 0; }
848854
}
@@ -912,20 +918,21 @@ int App::runECMMarin()
912918
else xDBLADD_strict2(2,3, 0,1);
913919

914920
auto now2 = high_resolution_clock::now();
915-
if (duration_cast<milliseconds>(now2 - last2_ui).count() >= 400 || i+1 == stage2_bits) {
921+
if (duration_cast<milliseconds>(now2 - last2_ui).count() >= ui_interval_ms || i+1 == stage2_bits) {
916922
double done = double(i+1), total = double(stage2_bits);
917923
double elapsed = duration<double>(now2 - t2_0).count() + saved_et2;
918924
double ips = done / std::max(1e-9, elapsed);
919925
double eta = (total > done && ips > 0.0) ? (total - done) / ips : 0.0;
920926
std::ostringstream line;
921927
line << "\r[ECM] Curve " << (c+1) << "/" << curves
922928
<< " | Stage2 " << (i+1) << "/" << stage2_bits
923-
<< " (" << std::fixed << std::setprecision(2)
929+
<< " (" << std::fixed << std::setprecision(1)
924930
<< (total ? (done*100.0/total) : 100.0)
925931
<< "%) | ETA " << fmt_hms(eta);
926932
std::cout << line.str() << std::flush;
927933
last2_ui = now2;
928934
}
935+
929936
if (duration_cast<seconds>(now2 - last2_save).count() >= backup_period) {
930937
double elapsed = duration<double>(now2 - t2_0).count() + saved_et2;
931938
save_ckpt2((uint32_t)(i + 1), elapsed, stage2_bits);

src/modes/RunEcmTwistedEdwards.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ int App::runECMMarinTwistedEdwards()
201201
const bool verbose = true;
202202
const bool forceCurve = (options.curve_seed != 0ULL);
203203
if (forceCurve) curves =1ULL;
204+
const uint32_t progress_interval_ms = (options.ecm_progress_interval_ms > 0) ? options.ecm_progress_interval_ms : 2000;
204205

205206
auto u64_bits = [](uint64_t x)->size_t{ if(!x) return 1; size_t n=0; while(x){ ++n; x>>=1; } return n; };
206207

@@ -1518,7 +1519,7 @@ int App::runECMMarinTwistedEdwards()
15181519
}*/
15191520
last_check = now;
15201521
}
1521-
if (duration_cast<milliseconds>(now - last_ui).count() >= 400 || i+1 == total_steps) {
1522+
if (duration_cast<milliseconds>(now - last_ui).count() >= progress_interval_ms || i+1 == total_steps) {
15221523
double done = double(i + 1), total = double(total_steps? total_steps:1);
15231524
double elapsed = duration<double>(now - t0).count() + saved_et;
15241525
double ips = done / std::max(1e-9, elapsed);
@@ -1675,7 +1676,7 @@ int App::runECMMarinTwistedEdwards()
16751676
int b = mpz_tstbit(M.get_mpz_t(), bit) ? 1 : 0;
16761677
if (b==0) xDBLADD_strict(0,1, 2,3); else xDBLADD_strict(2,3, 0,1);
16771678
auto now2 = high_resolution_clock::now();
1678-
if (duration_cast<milliseconds>(now2 - last2_ui).count() >= 400 || i+1==stage2_bits){
1679+
if (duration_cast<milliseconds>(now2 - last2_ui).count() >= progress_interval_ms || i+1==stage2_bits) {
16791680
double done = double(i+1), total = double(stage2_bits);
16801681
double elapsed = duration<double>(now2 - t2_0).count() + saved_et2;
16811682
double ips = done / std::max(1e-9, elapsed);

0 commit comments

Comments
 (0)