diff --git a/eth/main.cpp b/eth/main.cpp index 2d79f4954..15041d651 100644 --- a/eth/main.cpp +++ b/eth/main.cpp @@ -612,6 +612,7 @@ int main(int argc, char** argv) else if (arg == "--opencl-device" && i + 1 < argc) try { openclDevice = stol(argv[++i]); + miningThreads = 1; } catch (...) { diff --git a/libethash-cl/ethash_cl_miner.cpp b/libethash-cl/ethash_cl_miner.cpp index 891d3f97d..111f92529 100644 --- a/libethash-cl/ethash_cl_miner.cpp +++ b/libethash-cl/ethash_cl_miner.cpp @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -43,6 +44,8 @@ #undef min #undef max +using namespace std; + static void add_definition(std::string& source, char const* id, unsigned value) { char buf[256]; @@ -63,7 +66,7 @@ std::string ethash_cl_miner::platform_info(unsigned _platformId, unsigned _devic cl::Platform::get(&platforms); if (platforms.empty()) { - debugf("No OpenCL platforms found.\n"); + cout << "No OpenCL platforms found." << endl; return std::string(); } @@ -73,7 +76,7 @@ std::string ethash_cl_miner::platform_info(unsigned _platformId, unsigned _devic platforms[platform_num].getDevices(CL_DEVICE_TYPE_ALL, &devices); if (devices.empty()) { - debugf("No OpenCL devices found.\n"); + cout << "No OpenCL devices found." << endl; return std::string(); } @@ -91,7 +94,7 @@ unsigned ethash_cl_miner::get_num_devices(unsigned _platformId) cl::Platform::get(&platforms); if (platforms.empty()) { - debugf("No OpenCL platforms found.\n"); + cout << "No OpenCL platforms found." << endl; return 0; } @@ -100,7 +103,7 @@ unsigned ethash_cl_miner::get_num_devices(unsigned _platformId) platforms[platform_num].getDevices(CL_DEVICE_TYPE_ALL, &devices); if (devices.empty()) { - debugf("No OpenCL devices found.\n"); + cout << "No OpenCL devices found." << endl; return 0; } return devices.size(); @@ -124,7 +127,7 @@ bool ethash_cl_miner::init(ethash_params const& params, std::function(_platformId, platforms.size() - 1); - fprintf(stderr, "Using platform: %s\n", platforms[_platformId].getInfo().c_str()); + cout << "Using platform: " << platforms[_platformId].getInfo().c_str() << endl; // get GPU device of the default platform std::vector devices; platforms[_platformId].getDevices(CL_DEVICE_TYPE_ALL, &devices); if (devices.empty()) { - debugf("No OpenCL devices found.\n"); + cout << "No OpenCL devices found." << endl; return false; } - // use default device + // use selected device cl::Device& device = devices[std::min(_deviceId, devices.size() - 1)]; - for (unsigned n = 0; n < devices.size(); ++n) - { - auto version = devices[n].getInfo(); - auto name = devices[n].getInfo(); - fprintf(stderr, "%s %d: %s (%s)\n", n == _deviceId ? "USING " : " ", n, name.c_str(), version.c_str()); - } std::string device_version = device.getInfo(); - fprintf(stderr, "Using device: %s (%s)\n", device.getInfo().c_str(),device_version.c_str()); + cout << "Using device: " << device.getInfo().c_str() << "(" << device_version.c_str() << ")" << endl; if (strncmp("OpenCL 1.0", device_version.c_str(), 10) == 0) { - debugf("OpenCL 1.0 is not supported.\n"); + cout << "OpenCL 1.0 is not supported." << endl; return false; } if (strncmp("OpenCL 1.1", device_version.c_str(), 10) == 0) @@ -190,7 +187,7 @@ bool ethash_cl_miner::init(ethash_params const& params, std::function(device).c_str()); + cout << program.getBuildInfo(device).c_str(); return false; } m_hash_kernel = cl::Kernel(program, "ethash_hash"); diff --git a/libethcore/Ethash.cpp b/libethcore/Ethash.cpp index c40ce2625..66dc953b7 100644 --- a/libethcore/Ethash.cpp +++ b/libethcore/Ethash.cpp @@ -311,7 +311,7 @@ void Ethash::GPUMiner::workLoop() auto p = EthashAux::params(m_minerSeed); auto cb = [&](void* d) { EthashAux::full(m_minerSeed, bytesRef((byte*)d, p.full_size)); }; - unsigned device = instances() > 0 ? index() : s_deviceId; + unsigned device = instances() > 1 ? index() : s_deviceId; m_miner->init(p, cb, 32, s_platformId, device); }