|
|
@ -1201,14 +1201,27 @@ void static RandomXMiner() |
|
|
|
rxdebug("%s: initialized cache with keyHeight=%d, randomxBlockKey=%s\n", keyHeight, randomxBlockKey.ToString().c_str()); |
|
|
|
} |
|
|
|
|
|
|
|
//TODO: this is hardcoded to use 2 threads instead of the number of mining threads
|
|
|
|
rxdebug("%s: initializing dataset with 2 threads\n"); |
|
|
|
std::thread t1(&randomx_init_dataset, randomxDataset, randomxCache, 0, datasetItemCount / 2); |
|
|
|
std::thread t2(&randomx_init_dataset, randomxDataset, randomxCache, datasetItemCount / 2, datasetItemCount - datasetItemCount / 2); |
|
|
|
t1.join(); |
|
|
|
t2.join(); |
|
|
|
|
|
|
|
// randomx_init_dataset(randomxDataset, randomxCache, 0, datasetItemCount);
|
|
|
|
int initThreadCount = std::thread::hardware_concurrency(); |
|
|
|
if(initThreadCount > 1) { |
|
|
|
rxdebug("%s: initializing dataset with %d threads\n", initThreadCount); |
|
|
|
std::vector<std::thread> threads; |
|
|
|
uint32_t startItem = 0; |
|
|
|
auto perThread = datasetItemCount / initThreadCount; |
|
|
|
auto remainder = datasetItemCount % initThreadCount; |
|
|
|
for (int i = 0; i < initThreadCount; ++i) { |
|
|
|
auto count = perThread + (i == initThreadCount - 1 ? remainder : 0); |
|
|
|
threads.push_back(std::thread(&randomx_init_dataset, randomxDataset, randomxCache, startItem, count)); |
|
|
|
startItem += count; |
|
|
|
} |
|
|
|
for (unsigned i = 0; i < threads.size(); ++i) { |
|
|
|
threads[i].join(); |
|
|
|
} |
|
|
|
threads.clear(); |
|
|
|
} else { |
|
|
|
rxdebug("%s: initializing dataset with 1 thread\n"); |
|
|
|
randomx_init_dataset(randomxDataset, randomxCache, 0, datasetItemCount); |
|
|
|
} |
|
|
|
|
|
|
|
rxdebug("%s: dataset initialized\n"); |
|
|
|
|
|
|
|
myVM = randomx_create_vm(flags, nullptr, randomxDataset); |
|
|
@ -1463,8 +1476,8 @@ void static RandomXMiner() |
|
|
|
|
|
|
|
randomx_release_dataset(randomxDataset); |
|
|
|
rxdebug("%s: released dataset in normal exit\n"); |
|
|
|
randomx_release_cache(randomxCache); |
|
|
|
rxdebug("%s: released cache in normal exit\n"); |
|
|
|
//randomx_release_cache(randomxCache);
|
|
|
|
//rxdebug("%s: released cache in normal exit\n");
|
|
|
|
miningTimer.stop(); |
|
|
|
c.disconnect(); |
|
|
|
} |
|
|
|