@@ -281,7 +281,7 @@ class MinerCLI
281
281
if (m_openclThreadsPerHash != 1 && m_openclThreadsPerHash != 2 &&
282
282
m_openclThreadsPerHash != 4 && m_openclThreadsPerHash != 8 ) {
283
283
BOOST_THROW_EXCEPTION (BadArgument ());
284
- }
284
+ }
285
285
}
286
286
catch (...) {
287
287
cerr << " Bad " << arg << " option: " << argv[i] << endl;
@@ -300,30 +300,55 @@ class MinerCLI
300
300
BOOST_THROW_EXCEPTION (BadArgument ());
301
301
}
302
302
}
303
- # endif
304
- # if ETH_ETHASHCL || ETH_ETHASHCUDA
305
- else if ((arg == " --cl-global-work " || arg == " --cuda-grid-size " ) && i + 1 < argc)
306
- try {
303
+ else if ( arg == " --cl-global-work " && i + 1 < argc)
304
+ {
305
+ try
306
+ {
307
307
m_globalWorkSizeMultiplier = stol (argv[++i]);
308
+
308
309
}
309
310
catch (...)
310
311
{
311
312
cerr << " Bad " << arg << " option: " << argv[i] << endl;
312
313
BOOST_THROW_EXCEPTION (BadArgument ());
313
314
}
314
- else if ((arg == " --cl-local-work" || arg == " --cuda-block-size" ) && i + 1 < argc)
315
- try {
316
- m_localWorkSize = stol (argv[++i]);
315
+ }
316
+ else if ( arg == " --cl-local-work" && i + 1 < argc)
317
+ try
318
+ {
319
+ m_localWorkSize = stol (argv[++i]);
317
320
}
318
321
catch (...)
319
322
{
320
323
cerr << " Bad " << arg << " option: " << argv[i] << endl;
321
324
BOOST_THROW_EXCEPTION (BadArgument ());
322
325
}
326
+ #endif
327
+ #if ETH_ETHASHCL || ETH_ETHASHCUDA
323
328
else if (arg == " --list-devices" )
324
329
m_shouldListDevices = true ;
325
330
#endif
326
331
#if ETH_ETHASHCUDA
332
+ else if ( arg == " --cuda-grid-size" && i + 1 < argc)
333
+ try
334
+ {
335
+ m_cudaGridSize = stol (argv[++i]);
336
+ }
337
+ catch (...)
338
+ {
339
+ cerr << " Bad " << arg << " option: " << argv[i] << endl;
340
+ BOOST_THROW_EXCEPTION (BadArgument ());
341
+ }
342
+ else if ( arg == " --cuda-block-size" && i + 1 < argc)
343
+ try
344
+ {
345
+ m_cudaBlockSize= stol (argv[++i]);
346
+ }
347
+ catch (...)
348
+ {
349
+ cerr << " Bad " << arg << " option: " << argv[i] << endl;
350
+ BOOST_THROW_EXCEPTION (BadArgument ());
351
+ }
327
352
else if (arg == " --cuda-devices" )
328
353
{
329
354
while (m_cudaDeviceCount < 16 && i + 1 < argc)
@@ -508,7 +533,7 @@ class MinerCLI
508
533
CLMiner::setDevices (m_openclDevices, m_openclDeviceCount);
509
534
m_miningThreads = m_openclDeviceCount;
510
535
}
511
-
536
+
512
537
CLMiner::setCLKernel (m_openclSelectedKernel);
513
538
CLMiner::setThreadsPerHash (m_openclThreadsPerHash);
514
539
@@ -538,8 +563,8 @@ class MinerCLI
538
563
539
564
CUDAMiner::setNumInstances (m_miningThreads);
540
565
if (!CUDAMiner::configureGPU (
541
- m_localWorkSize ,
542
- m_globalWorkSizeMultiplier ,
566
+ m_cudaBlockSize ,
567
+ m_cudaGridSize ,
543
568
m_numStreams,
544
569
m_cudaSchedule,
545
570
0 ,
@@ -803,11 +828,11 @@ class MinerCLI
803
828
h256 id = h256::random ();
804
829
Farm f;
805
830
f.set_pool_addresses (m_farmURL, m_port, m_farmFailOverURL, m_fport);
806
-
831
+
807
832
#if API_CORE
808
833
Api api (this ->m_api_port , f);
809
834
#endif
810
-
835
+
811
836
f.setSealers (sealers);
812
837
813
838
if (_m == MinerType::CL)
@@ -941,11 +966,11 @@ class MinerCLI
941
966
942
967
Farm f;
943
968
f.set_pool_addresses (m_farmURL, m_port, m_farmFailOverURL, m_fport);
944
-
969
+
945
970
#if API_CORE
946
971
Api api (this ->m_api_port , f);
947
972
#endif
948
-
973
+
949
974
// this is very ugly, but if Stratum Client V2 tunrs out to be a success, V1 will be completely removed anyway
950
975
if (m_stratumClientVersion == 1 ) {
951
976
EthStratumClient client (&f, m_minerType, m_farmURL, m_port, m_user, m_pass, m_maxFarmRetries, m_worktimeout, m_stratumProtocol, m_email);
@@ -972,7 +997,7 @@ class MinerCLI
972
997
}
973
998
return false ;
974
999
});
975
- f.onMinerRestart ([&](){
1000
+ f.onMinerRestart ([&](){
976
1001
client.reconnect ();
977
1002
});
978
1003
@@ -992,7 +1017,7 @@ class MinerCLI
992
1017
{
993
1018
minelog << " Waiting for work package..." ;
994
1019
}
995
-
1020
+
996
1021
if (this ->m_report_stratum_hashrate ) {
997
1022
auto rate = mp.rate ();
998
1023
client.submitHashrate (toJS (rate));
@@ -1021,7 +1046,7 @@ class MinerCLI
1021
1046
client.submit (sol);
1022
1047
return false ;
1023
1048
});
1024
- f.onMinerRestart ([&](){
1049
+ f.onMinerRestart ([&](){
1025
1050
client.reconnect ();
1026
1051
});
1027
1052
@@ -1041,7 +1066,7 @@ class MinerCLI
1041
1066
{
1042
1067
minelog << " Waiting for work package..." ;
1043
1068
}
1044
-
1069
+
1045
1070
if (this ->m_report_stratum_hashrate ) {
1046
1071
auto rate = mp.rate ();
1047
1072
client.submitHashrate (toJS (rate));
@@ -1067,18 +1092,16 @@ class MinerCLI
1067
1092
unsigned m_openclDeviceCount = 0 ;
1068
1093
unsigned m_openclDevices[16 ];
1069
1094
unsigned m_openclThreadsPerHash = 8 ;
1070
- #if !ETH_ETHASHCUDA
1071
1095
unsigned m_globalWorkSizeMultiplier = CLMiner::c_defaultGlobalWorkSizeMultiplier;
1072
1096
unsigned m_localWorkSize = CLMiner::c_defaultLocalWorkSize;
1073
1097
#endif
1074
- #endif
1075
1098
#if ETH_ETHASHCUDA
1076
- unsigned m_globalWorkSizeMultiplier = CUDAMiner::c_defaultGridSize;
1077
- unsigned m_localWorkSize = CUDAMiner::c_defaultBlockSize;
1078
1099
unsigned m_cudaDeviceCount = 0 ;
1079
1100
unsigned m_cudaDevices[16 ];
1080
1101
unsigned m_numStreams = CUDAMiner::c_defaultNumStreams;
1081
1102
unsigned m_cudaSchedule = 4 ; // sync
1103
+ unsigned m_cudaGridSize = CUDAMiner::c_defaultGridSize;
1104
+ unsigned m_cudaBlockSize = CUDAMiner::c_defaultBlockSize;
1082
1105
#endif
1083
1106
unsigned m_dagLoadMode = 0 ; // parallel
1084
1107
unsigned m_dagCreateDevice = 0 ;
@@ -1103,7 +1126,7 @@ class MinerCLI
1103
1126
bool m_show_hwmonitors = false ;
1104
1127
#if API_CORE
1105
1128
int m_api_port = 0 ;
1106
- #endif
1129
+ #endif
1107
1130
1108
1131
bool m_report_stratum_hashrate = false ;
1109
1132
int m_stratumClientVersion = 1 ;
0 commit comments