Skip to content
This repository was archived by the owner on Apr 24, 2022. It is now read-only.

Commit 880ad61

Browse files
authoredJan 29, 2018
Merge pull request #646 from rushstrike/master
split CUDA/CL localWorkSize,globalWorkSize vs cudaBlockSize,cudaGridSize
2 parents c356930 + 55ac768 commit 880ad61

File tree

1 file changed

+47
-24
lines changed

1 file changed

+47
-24
lines changed
 

‎ethminer/MinerAux.h

+47-24
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ class MinerCLI
281281
if(m_openclThreadsPerHash != 1 && m_openclThreadsPerHash != 2 &&
282282
m_openclThreadsPerHash != 4 && m_openclThreadsPerHash != 8) {
283283
BOOST_THROW_EXCEPTION(BadArgument());
284-
}
284+
}
285285
}
286286
catch(...) {
287287
cerr << "Bad " << arg << " option: " << argv[i] << endl;
@@ -300,30 +300,55 @@ class MinerCLI
300300
BOOST_THROW_EXCEPTION(BadArgument());
301301
}
302302
}
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+
{
307307
m_globalWorkSizeMultiplier = stol(argv[++i]);
308+
308309
}
309310
catch (...)
310311
{
311312
cerr << "Bad " << arg << " option: " << argv[i] << endl;
312313
BOOST_THROW_EXCEPTION(BadArgument());
313314
}
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]);
317320
}
318321
catch (...)
319322
{
320323
cerr << "Bad " << arg << " option: " << argv[i] << endl;
321324
BOOST_THROW_EXCEPTION(BadArgument());
322325
}
326+
#endif
327+
#if ETH_ETHASHCL || ETH_ETHASHCUDA
323328
else if (arg == "--list-devices")
324329
m_shouldListDevices = true;
325330
#endif
326331
#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+
}
327352
else if (arg == "--cuda-devices")
328353
{
329354
while (m_cudaDeviceCount < 16 && i + 1 < argc)
@@ -508,7 +533,7 @@ class MinerCLI
508533
CLMiner::setDevices(m_openclDevices, m_openclDeviceCount);
509534
m_miningThreads = m_openclDeviceCount;
510535
}
511-
536+
512537
CLMiner::setCLKernel(m_openclSelectedKernel);
513538
CLMiner::setThreadsPerHash(m_openclThreadsPerHash);
514539

@@ -538,8 +563,8 @@ class MinerCLI
538563

539564
CUDAMiner::setNumInstances(m_miningThreads);
540565
if (!CUDAMiner::configureGPU(
541-
m_localWorkSize,
542-
m_globalWorkSizeMultiplier,
566+
m_cudaBlockSize,
567+
m_cudaGridSize,
543568
m_numStreams,
544569
m_cudaSchedule,
545570
0,
@@ -803,11 +828,11 @@ class MinerCLI
803828
h256 id = h256::random();
804829
Farm f;
805830
f.set_pool_addresses(m_farmURL, m_port, m_farmFailOverURL, m_fport);
806-
831+
807832
#if API_CORE
808833
Api api(this->m_api_port, f);
809834
#endif
810-
835+
811836
f.setSealers(sealers);
812837

813838
if (_m == MinerType::CL)
@@ -941,11 +966,11 @@ class MinerCLI
941966

942967
Farm f;
943968
f.set_pool_addresses(m_farmURL, m_port, m_farmFailOverURL, m_fport);
944-
969+
945970
#if API_CORE
946971
Api api(this->m_api_port, f);
947972
#endif
948-
973+
949974
// this is very ugly, but if Stratum Client V2 tunrs out to be a success, V1 will be completely removed anyway
950975
if (m_stratumClientVersion == 1) {
951976
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
972997
}
973998
return false;
974999
});
975-
f.onMinerRestart([&](){
1000+
f.onMinerRestart([&](){
9761001
client.reconnect();
9771002
});
9781003

@@ -992,7 +1017,7 @@ class MinerCLI
9921017
{
9931018
minelog << "Waiting for work package...";
9941019
}
995-
1020+
9961021
if (this->m_report_stratum_hashrate) {
9971022
auto rate = mp.rate();
9981023
client.submitHashrate(toJS(rate));
@@ -1021,7 +1046,7 @@ class MinerCLI
10211046
client.submit(sol);
10221047
return false;
10231048
});
1024-
f.onMinerRestart([&](){
1049+
f.onMinerRestart([&](){
10251050
client.reconnect();
10261051
});
10271052

@@ -1041,7 +1066,7 @@ class MinerCLI
10411066
{
10421067
minelog << "Waiting for work package...";
10431068
}
1044-
1069+
10451070
if (this->m_report_stratum_hashrate) {
10461071
auto rate = mp.rate();
10471072
client.submitHashrate(toJS(rate));
@@ -1067,18 +1092,16 @@ class MinerCLI
10671092
unsigned m_openclDeviceCount = 0;
10681093
unsigned m_openclDevices[16];
10691094
unsigned m_openclThreadsPerHash = 8;
1070-
#if !ETH_ETHASHCUDA
10711095
unsigned m_globalWorkSizeMultiplier = CLMiner::c_defaultGlobalWorkSizeMultiplier;
10721096
unsigned m_localWorkSize = CLMiner::c_defaultLocalWorkSize;
10731097
#endif
1074-
#endif
10751098
#if ETH_ETHASHCUDA
1076-
unsigned m_globalWorkSizeMultiplier = CUDAMiner::c_defaultGridSize;
1077-
unsigned m_localWorkSize = CUDAMiner::c_defaultBlockSize;
10781099
unsigned m_cudaDeviceCount = 0;
10791100
unsigned m_cudaDevices[16];
10801101
unsigned m_numStreams = CUDAMiner::c_defaultNumStreams;
10811102
unsigned m_cudaSchedule = 4; // sync
1103+
unsigned m_cudaGridSize = CUDAMiner::c_defaultGridSize;
1104+
unsigned m_cudaBlockSize = CUDAMiner::c_defaultBlockSize;
10821105
#endif
10831106
unsigned m_dagLoadMode = 0; // parallel
10841107
unsigned m_dagCreateDevice = 0;
@@ -1103,7 +1126,7 @@ class MinerCLI
11031126
bool m_show_hwmonitors = false;
11041127
#if API_CORE
11051128
int m_api_port = 0;
1106-
#endif
1129+
#endif
11071130

11081131
bool m_report_stratum_hashrate = false;
11091132
int m_stratumClientVersion = 1;

0 commit comments

Comments
 (0)
This repository has been archived.