diff --git a/Algo256/blake256.cu b/Algo256/blake256.cu index 191db70..c3a3ea2 100644 --- a/Algo256/blake256.cu +++ b/Algo256/blake256.cu @@ -409,9 +409,9 @@ extern "C" int scanhash_blake256(int thr_id, struct work* work, uint32_t max_non } if (!init[thr_id]) { - if (active_gpus > 1) - cudaSetDevice(device_map[thr_id]); + cudaSetDevice(device_map[thr_id]); CUDA_LOG_ERROR(); + cudaMallocHost(&h_resNonce[thr_id], NBN * sizeof(uint32_t)); cudaMalloc(&d_resNonce[thr_id], NBN * sizeof(uint32_t)); CUDA_LOG_ERROR(); diff --git a/README.txt b/README.txt index 5c30709..4c1c0b7 100644 --- a/README.txt +++ b/README.txt @@ -229,7 +229,8 @@ features. >>> RELEASE HISTORY <<< Under Dev... v1.7 - Improve lyra2 (v1) cuda implementation + Add windows support for SM 2.1 and drop SM 3.5 (x86) + Improve lyra2 (v1/v2) cuda implementation Restore whirlpool algo (and whirlcoin variant) Prepare algo switch ability Add --benchmark alone to run a benchmark for all algos diff --git a/bench.cpp b/bench.cpp index 0a45a41..31944ae 100644 --- a/bench.cpp +++ b/bench.cpp @@ -96,6 +96,7 @@ bool bench_algo_switch_next(int thr_id) // skip some duplicated algos if (algo == ALGO_C11) algo++; // same as x11 if (algo == ALGO_DMD_GR) algo++; // same as groestl + if (algo == ALGO_MJOLLNIR) algo++; // same as heavy if (algo == ALGO_WHIRLCOIN) algo++; // same as whirlpool if (device_sm[dev_id] && device_sm[dev_id] < 300) { diff --git a/ccminer.vcxproj b/ccminer.vcxproj index f97035c..f6465b3 100644 --- a/ccminer.vcxproj +++ b/ccminer.vcxproj @@ -158,7 +158,7 @@ 80 true true - compute_50,sm_50;compute_52,sm_52;compute_30,sm_30;compute_35,sm_35 + compute_50,sm_50;compute_52,sm_52;compute_30,sm_30;compute_20,sm_21 --ptxas-options="-O2" %(AdditionalOptions) O2 diff --git a/lyra2/cuda_lyra2v2_sm3.cuh b/lyra2/cuda_lyra2v2_sm3.cuh index e928e75..c85b862 100644 --- a/lyra2/cuda_lyra2v2_sm3.cuh +++ b/lyra2/cuda_lyra2v2_sm3.cuh @@ -17,7 +17,6 @@ #define Ncol 4 #define vectype ulonglong4 -#define u64type uint64_t #define memshift 4 __device__ vectype *DMatrix; diff --git a/lyra2/lyra2REv2.cu b/lyra2/lyra2REv2.cu index 54b8303..4553b5a 100644 --- a/lyra2/lyra2REv2.cu +++ b/lyra2/lyra2REv2.cu @@ -82,7 +82,7 @@ extern "C" int scanhash_lyra2v2(int thr_id, struct work* work, uint32_t max_nonc const uint32_t first_nonce = pdata[19]; int dev_id = device_map[thr_id]; int intensity = (device_sm[dev_id] > 500 && !is_windows()) ? 20 : 18; - uint32_t throughput = cuda_default_throughput(dev_id, 1U << intensity); + uint32_t throughput = cuda_default_throughput(dev_id, 1UL << intensity); if (init[thr_id]) throughput = min(throughput, max_nonce - first_nonce); if (opt_benchmark) @@ -100,6 +100,7 @@ extern "C" int scanhash_lyra2v2(int thr_id, struct work* work, uint32_t max_nonc keccak256_cpu_init(thr_id,throughput); skein256_cpu_init(thr_id, throughput); bmw256_cpu_init(thr_id, throughput); + CUDA_LOG_ERROR(); // DMatrix (780Ti may prefer 16 instead of 12, cf djm34) CUDA_SAFE_CALL(cudaMalloc(&d_matrix[thr_id], (size_t)12 * sizeof(uint64_t) * 4 * 4 * throughput)); @@ -118,7 +119,7 @@ extern "C" int scanhash_lyra2v2(int thr_id, struct work* work, uint32_t max_nonc uint32_t endiandata[20]; for (int k=0; k < 20; k++) - be32enc(&endiandata[k], ((uint32_t*)pdata)[k]); + be32enc(&endiandata[k], pdata[k]); blake256_cpu_setBlock_80(pdata); bmw256_setTarget(ptarget);