Changes to API for HiveOS support.

This commit is contained in:
Haifa Bogdan Adnan 2019-08-28 00:53:36 +03:00
parent 08007ca59b
commit 2a62844fe8
9 changed files with 41 additions and 29 deletions

View file

@ -28,6 +28,7 @@ public:
virtual int compute(int threadIdx, uint8_t *input, size_t size, uint8_t *output) = 0;
virtual size_t parallelism(int workerIdx) = 0;
virtual size_t deviceCount() = 0;
virtual DeviceInfo &device(int workerIdx) = 0;
string type();
string subType(bool shortName = false);

View file

@ -224,4 +224,8 @@ size_t CpuHasher::deviceCount() {
return computingThreads();
}
DeviceInfo &CpuHasher::device(int workerIdx) {
return devices()[0];
}
REGISTER_HASHER(CpuHasher);

View file

@ -22,6 +22,7 @@ public:
virtual int compute(int threadIdx, uint8_t *input, size_t size, uint8_t *output);
virtual size_t parallelism(int workerIdx);
virtual size_t deviceCount();
virtual DeviceInfo &device(int workerIdx);
private:
string detectFeaturesAndMakeDescription();

View file

@ -119,7 +119,8 @@ CudaDeviceInfo *CudaHasher::getDeviceInfo(int device_index) {
}
bool CudaHasher::configure(xmrig::HasherConfig &config) {
int index = config.getGPUCardsCount();
int deviceOffset = config.getGPUCardsCount();
int index = deviceOffset;
double intensity = 0;
int total_threads = 0;
@ -165,7 +166,7 @@ bool CudaHasher::configure(xmrig::HasherConfig &config) {
ss << endl;
double device_intensity = config.getGPUIntensity((*d)->deviceIndex);
double device_intensity = config.getGPUIntensity(deviceOffset + m_enabledDevices.size());
m_description += ss.str();
@ -335,6 +336,15 @@ size_t CudaHasher::deviceCount() {
return m_enabledDevices.size();
}
DeviceInfo &CudaHasher::device(int workerIdx) {
workerIdx /= 2;
if(workerIdx < 0 || workerIdx > m_enabledDevices.size())
return devices().begin()->second;
return devices()[m_enabledDevices[workerIdx]->deviceIndex];
}
REGISTER_HASHER(CudaHasher);
#endif //WITH_CUDA

View file

@ -99,6 +99,7 @@ public:
virtual int compute(int threadIdx, uint8_t *input, size_t size, uint8_t *output);
virtual size_t parallelism(int workerIdx);
virtual size_t deviceCount();
virtual DeviceInfo &device(int workerIdx);
private:
CudaDeviceInfo *getDeviceInfo(int device_index);

View file

@ -217,7 +217,8 @@ OpenCLDeviceInfo *OpenCLHasher::getDeviceInfo(cl_platform_id platform, cl_device
}
bool OpenCLHasher::configure(xmrig::HasherConfig &config) {
int index = config.getGPUCardsCount();
int deviceOffset = config.getGPUCardsCount();
int index = deviceOffset;
double intensity = 0;
int total_threads = 0;
@ -264,7 +265,7 @@ bool OpenCLHasher::configure(xmrig::HasherConfig &config) {
ss << endl;
double device_intensity = config.getGPUIntensity((*d)->deviceIndex);
double device_intensity = config.getGPUIntensity(deviceOffset + m_enabledDevices.size());
m_description += ss.str();
@ -307,7 +308,7 @@ bool OpenCLHasher::configure(xmrig::HasherConfig &config) {
intensity += device_intensity;
}
config.addGPUCardsCount(index - config.getGPUCardsCount());
config.addGPUCardsCount(index - deviceOffset);
if(!cards_selected) {
m_intensity = 0;
@ -883,6 +884,15 @@ size_t OpenCLHasher::deviceCount() {
return m_enabledDevices.size();
}
DeviceInfo &OpenCLHasher::device(int workerIdx) {
workerIdx /= 2;
if(workerIdx < 0 || workerIdx > m_enabledDevices.size())
return devices().begin()->second;
return devices()[m_enabledDevices[workerIdx]->deviceIndex];
}
REGISTER_HASHER(OpenCLHasher);
#endif // WITH_OPENCL

View file

@ -91,6 +91,7 @@ public:
virtual int compute(int threadIdx, uint8_t *input, size_t size, uint8_t *output);
virtual size_t parallelism(int workerIdx);
virtual size_t deviceCount();
virtual DeviceInfo &device(int workerIdx);
private:
OpenCLDeviceInfo *getDeviceInfo(cl_platform_id platform, cl_device_id device);