From ea5c2dfb13eb606cac47c082aa70dce3ed637d38 Mon Sep 17 00:00:00 2001 From: fireice-uk Date: Mon, 23 Jan 2017 20:00:33 +0000 Subject: [PATCH] Release v1.0.0-1.1.0 --- README.md | 61 ++++++++++++++++++++++++++++++--------------------- amd_gpu/gpu.c | 22 +++++++++++++++++-- cli-miner.cpp | 4 ++-- jconf.cpp | 8 ------- jpsock.cpp | 2 +- 5 files changed, 59 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 4a270ca..02a5b48 100644 --- a/README.md +++ b/README.md @@ -13,24 +13,43 @@ Hash: SHA256 Windows binary release checksums -sha1sum xmr-stak-cpu.exe -32f551c891040eda2c25e18e6287665471a5a653 xmr-stak-cpu.exe +sha1sum xmr-stak-amd.exe opencl/* +1fa7364af3b21dcc5f5bd54f6e862613422085d3 xmr-stak-amd.exe +5acb656005a86cad90c6327985c3795d96a96c91 opencl/blake256.cl +9e4e276afd9000945c25f6e5a5259977a29239f4 opencl/cryptonight.cl +c9fb5e4bfb137ff60063978eecd10bffb7c4deb6 opencl/groestl256.cl +361dfce776ee4a89b100d139a879af5d0f0d65e4 opencl/jh.cl +429f559190d1163335847cc08df955234051504b opencl/wolf-aes.cl +e2862a6d7094aeab21844d3155803e5da99b4a46 opencl/wolf-skein.cl -sha3sum xmr-stak-cpu.exe -ed12841738c899a3eb61f51787aa670c25b64ce3c5a626717e6a8f6b xmr-stak-cpu.exe +sha1sum xmr-stak-amd.exe opencl/* | sha1sum +ac5eadbcc557d7192ea4ba887a50ba25b040b5fa - + +sha3sum xmr-stak-amd.exe opencl/* +a269811145448fbec2f763762da0c545ded76eccc88e2a55e415ab0b xmr-stak-amd.exe +a52b05548fd094e7bbb2367d7922bf19af3ed23ad5df53004fae0825 opencl/blake256.cl +a49c9da554d7b01d091eea56e8b97b943ca33cd2a64a1f3f3169e202 opencl/cryptonight.cl +13315b0a475212c92e10b7627b03a0813132437d4496b6596821b909 opencl/groestl256.cl +89548b917dbe216f5809624ebe350859c1d800048909322049f93d23 opencl/jh.cl +806eb1d4e3d7b6630a422bb42ee00faa76d31143b7c1cbde65e46938 opencl/wolf-aes.cl +052176a740a5a0bc088feea0aa7a72f0e9d96d6b6ffd00844676dd17 opencl/wolf-skein.cl + +sha3sum xmr-stak-amd.exe opencl/* | sha3sum +50ff39acfdc5973014a26a2027a9fd20a9211cfee44bb61c16c235c6 - date -Mon 16 Jan 15:13:25 GMT 2017 +Mon 23 Jan 19:32:15 GMT 2017 + -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 -iQEcBAEBCAAGBQJYfONvAAoJEPsk95p+1Bw02coH/0by+VMK76gnmpNjIxDcphkV -S1GG+f0sIAYUrGpoMCJTXbr7hU3Na+grTbt6xLM2Tb0xJjX4Mc47Cixajzy7+TTx -R2+CvBRl8LG9zob6JNiohvxD1+SK7RWDKWenFyDlr9BewgE/ArqZM+16BQBrLP9H -XIWy1wh/lcSYuS548tnUYdNOmEnR9TqA454M4r8PED85HSpNmvI+eG8fZ8OK471C -3yMupjYlAbiEBT+gE6bZwLeeCH9NO2gGeBAb31w8RBsMRjy+VvhFhTOoJwZbXj9e -sMUwNBu+fLVoilMVvp8SDpQ7Uw/WFT085N2eJiCCuEbHgFAwM3uwD6VHz3eXd0s= -=QJQj +iQEcBAEBCAAGBQJYhlpbAAoJEPsk95p+1Bw0QyUH/2tIagIw60i9Gy7mICfiTy6u +AuWz+D5Zg/DEUOj6ZDBoZt+DpDvTPuwjbrCyn3Uf7jrEF+ZNI5K132Dt6Rh10v9K +JSCxUB0q2mqUYkBY1MrIW0LM7ACg6RYQBuAq/2EVNt3FSKEFC1EbWa605IiXWXMu +WraTY0lxefq+gJJGIlworKooSGuQFEK1d7huYOQvjjmsvZLLyr7ElVirxAmoob8g +z5EFHwC1rUm12ajJbLfGfRV7vAUBct5iiVDMQMHx2QGq889BdZd0gcmzv6E0wB5L +cFUnVBC1l8+bnfyzHyk1QXEogKAYK8t0bHBUaYcRV3q1KKI+X41HokX8KTQLVp8= +=Rayc -----END PGP SIGNATURE----- ``` @@ -51,14 +70,9 @@ To do a static build for a system without gcc 5.1+ ``` Note - cmake caches variables, so if you want to do a dynamic build later you need to specify '-DCMAKE_BUILD_TYPE=RELEASE' -#### CPU mining performance +#### Mining performance -Performance is nearly identical to the closed source paid miners. Here are some numbers: - -* **I7-2600K** - 266 H/s -* **I7-6700** - 276 H/s (with a separate GPU miner) -* **Dual X5650** - 466 H/s (depends on NUMA) -* **Dual E5640** - 365 H/s (same as above) +Mining core is a direct port (except for sercurity fixes) of wolf9466's AMD mining code. Performance is likely to be identical. #### Example reports ``` @@ -109,9 +123,9 @@ Network error log: By default the miner will donate 1% of the hashpower (1 minute in 100 minutes) to my pool. If you want to change that, edit **donate-level.h** before you build the binaries. If you want to donate directly to support further development, here is my wallet -* 4581HhZkQHgZrZjKeCfCJxZff9E3xCgHGF25zABZz7oR71TnbbgiS7sK9jveE6Dx6uMs2LwszDuvQJgRZQotdpHt1fTdDhk - - +``` +4581HhZkQHgZrZjKeCfCJxZff9E3xCgHGF25zABZz7oR71TnbbgiS7sK9jveE6Dx6uMs2LwszDuvQJgRZQotdpHt1fTdDhk +``` #### PGP Key ``` @@ -153,6 +167,3 @@ c4hC0Yg9Dha1OoE5CJCqVL+ic4vAyB1urAwBlsd/wH8= Download and install this [runtime package](https://www.microsoft.com/en-us/download/details.aspx?id=48145) from Microsoft. *Warning: Do NOT use "missing dll" sites - dll's are exe files with another name, and it is a fairly safe bet that any dll on a shady site like that will be trojaned. Please download offical runtimes from Microsoft above.* - - - diff --git a/amd_gpu/gpu.c b/amd_gpu/gpu.c index ab80e2c..929817b 100644 --- a/amd_gpu/gpu.c +++ b/amd_gpu/gpu.c @@ -34,6 +34,11 @@ static inline void port_sleep(size_t sec) } #endif // _WIN32 +static inline long long unsigned int int_port(size_t i) +{ + return i; +} + #include "gpu.h" const char* err_to_str(cl_int ret) @@ -201,7 +206,7 @@ size_t InitOpenCLGpu(cl_context opencl_ctx, GpuContext* ctx, char* source_code) size_t MaximumWorkSize; cl_int ret; - if((clGetDeviceInfo(ctx->DeviceID, CL_DEVICE_MAX_WORK_GROUP_SIZE, sizeof(size_t), &MaximumWorkSize, NULL)) != CL_SUCCESS) + if((ret = clGetDeviceInfo(ctx->DeviceID, CL_DEVICE_MAX_WORK_GROUP_SIZE, sizeof(size_t), &MaximumWorkSize, NULL)) != CL_SUCCESS) { printer_print_msg("Error %s when querying a device's max worksize using clGetDeviceInfo.", err_to_str(ret)); return ERR_OCL_API; @@ -292,7 +297,7 @@ size_t InitOpenCLGpu(cl_context opencl_ctx, GpuContext* ctx, char* source_code) } char options[32]; - snprintf(options, sizeof(options), "-I. -DWORKSIZE=%lu", ctx->workSize); + snprintf(options, sizeof(options), "-I. -DWORKSIZE=%llu", int_port(ctx->workSize)); ret = clBuildProgram(ctx->Program, 1, &ctx->DeviceID, options, NULL, NULL); if(ret != CL_SUCCESS) { @@ -367,7 +372,12 @@ size_t InitOpenCL(GpuContext* ctx, size_t num_gpus, size_t platform_idx) return ERR_STUPID_PARAMS; } + /*MSVC skimping on devel costs by shoehorning C99 to be a subset of C++? Noooo... can't be.*/ +#ifdef __GNUC__ cl_platform_id PlatformIDList[entries]; +#else + cl_platform_id* PlatformIDList = _alloca(entries * sizeof(cl_platform_id)); +#endif if((ret = clGetPlatformIDs(entries, PlatformIDList, NULL)) != CL_SUCCESS) { printer_print_msg("Error %s when calling clGetPlatformIDs for platform ID information.", err_to_str(ret)); @@ -390,7 +400,11 @@ size_t InitOpenCL(GpuContext* ctx, size_t num_gpus, size_t platform_idx) } } +#ifdef __GNUC__ cl_device_id DeviceIDList[entries]; +#else + cl_device_id* DeviceIDList = _alloca(entries * sizeof(cl_device_id)); +#endif if((ret = clGetDeviceIDs(PlatformIDList[platform_idx], CL_DEVICE_TYPE_GPU, entries, DeviceIDList, NULL)) != CL_SUCCESS) { printer_print_msg("Error %s when calling clGetDeviceIDs for device ID information.", err_to_str(ret)); @@ -398,7 +412,11 @@ size_t InitOpenCL(GpuContext* ctx, size_t num_gpus, size_t platform_idx) } // Indexes sanity checked above +#ifdef __GNUC__ cl_device_id TempDeviceList[num_gpus]; +#else + cl_device_id* TempDeviceList = _alloca(entries * sizeof(cl_device_id)); +#endif for(int i = 0; i < num_gpus; ++i) { ctx[i].DeviceID = DeviceIDList[ctx[i].deviceIdx]; diff --git a/cli-miner.cpp b/cli-miner.cpp index cef1d86..250d6ed 100644 --- a/cli-miner.cpp +++ b/cli-miner.cpp @@ -80,8 +80,8 @@ int main(int argc, char *argv[]) } printer::inst()->print_str("-------------------------------------------------------------------\n"); - printer::inst()->print_str("XMR-Stak-CPU mining software, CPU Version.\n"); - printer::inst()->print_str("Based on CPU mining code by wolf9466 (heavily optimized by myself).\n"); + printer::inst()->print_str("XMR-Stak-AMD mining software, AMD Version.\n"); + printer::inst()->print_str("AMD mining code was written by wolf9466.\n"); printer::inst()->print_str("Brought to you by fireice_uk under GPLv3.\n\n"); char buffer[64]; snprintf(buffer, sizeof(buffer), "Configurable dev donation level is set to %.1f %%\n\n", fDevDonationLevel * 100.0); diff --git a/jconf.cpp b/jconf.cpp index af3c38f..d9a2589 100644 --- a/jconf.cpp +++ b/jconf.cpp @@ -340,14 +340,6 @@ bool jconf::parse_config(const char* sFilename) return false; } -#ifdef _WIN32 - if(GetSlowMemSetting() == no_mlck) - { - printer::inst()->print_msg(L0, "On Windows large pages need mlock. Please use another option.\n"); - return false; - } -#endif // _WIN32 - printer::inst()->set_verbose_level(prv->configValues[iVerboseLevel]->GetUint64()); return true; } diff --git a/jpsock.cpp b/jpsock.cpp index 667f95b..de01009 100644 --- a/jpsock.cpp +++ b/jpsock.cpp @@ -24,7 +24,7 @@ #include "jext.h" #include "socks.h" -#define AGENTID_STR "xmr-stak-cpu/1.0" +#define AGENTID_STR "xmr-stak-amd/1.0" using namespace rapidjson;