Find the gpu platform with the most devices and use that if no platform option is passed.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
diff --git a/ocl.c b/ocl.c
index 6ddf599..a06fc5e 100644
--- a/ocl.c
+++ b/ocl.c
@@ -33,7 +33,7 @@
#include "findnonce.h"
#include "ocl.h"
-int opt_platform_id;
+int opt_platform_id = -1;
char *file_contents(const char *filename, int *length)
{
@@ -80,7 +80,7 @@ int clDevicesNum(void) {
cl_uint numPlatforms;
cl_platform_id *platforms;
cl_platform_id platform = NULL;
- unsigned int most_devices = 0, i;
+ unsigned int most_devices = 0, i, mdplatform;
status = clGetPlatformIDs(0, NULL, &numPlatforms);
/* If this fails, assume no GPUs. */
@@ -123,8 +123,10 @@ int clDevicesNum(void) {
return -1;
}
applog(LOG_INFO, "Platform %d devices: %d", i, numDevices);
- if (numDevices > most_devices)
+ if (numDevices > most_devices) {
most_devices = numDevices;
+ mdplatform = i;
+ }
if (numDevices) {
unsigned int j;
char pbuff[256];
@@ -139,6 +141,9 @@ int clDevicesNum(void) {
}
}
+ if (opt_platform_id < 0)
+ opt_platform_id = mdplatform;;
+
return most_devices;
}