diff --git a/src/main.cu b/src/main.cu index b2d08e7..63f1509 100644 --- a/src/main.cu +++ b/src/main.cu @@ -182,7 +182,6 @@ void host_thread(int device, int device_index, int score_method, int mode, Addre CurvePoint* block_offsets = 0; CurvePoint* offsets = 0; CurvePoint* thread_offsets_host = 0; - bool* output_buffer3 = 0; uint64_t* device_memory_host = 0; uint64_t* max_score_host; @@ -209,7 +208,6 @@ void host_thread(int device, int device_index, int score_method, int mode, Addre if (mode == 0 || mode == 1) { gpu_assert(cudaMalloc(&block_offsets, GRID_SIZE * sizeof(CurvePoint))) gpu_assert(cudaMalloc(&offsets, (uint64_t)GRID_SIZE * BLOCK_SIZE * sizeof(CurvePoint))) - gpu_assert(cudaMallocManaged(&output_buffer3, OUTPUT_BUFFER_SIZE * sizeof(bool))) thread_offsets_host = new CurvePoint[BLOCK_SIZE]; gpu_assert(cudaHostAlloc(&thread_offsets_host, BLOCK_SIZE * sizeof(CurvePoint), cudaHostAllocWriteCombined)) } @@ -625,68 +623,71 @@ int main(int argc, char *argv[]) { message_queue_mutex.unlock(); std::this_thread::sleep_for(std::chrono::milliseconds(500)); } else { - Message m = message_queue.back(); - message_queue.pop(); - message_queue_mutex.unlock(); - - int device_index = m.device_index; - - if (m.status == 0) { - speeds[device_index] = m.speed; - - printf("\r"); - if (m.results_count != 0) { - Address* addresses = new Address[m.results_count]; - for (int i = 0; i < m.results_count; i++) { - if (mode == 0) { - CurvePoint p = cpu_point_multiply(G, m.results[i]); - addresses[i] = cpu_calculate_address(p.x, p.y); - } else if (mode == 1) { - CurvePoint p = cpu_point_multiply(G, m.results[i]); - addresses[i] = cpu_calculate_contract_address(cpu_calculate_address(p.x, p.y)); - } else if (mode == 2) { - addresses[i] = cpu_calculate_contract_address2(origin_address, m.results[i], bytecode_hash); + while (!message_queue.empty()) { + Message m = message_queue.front(); + message_queue.pop(); + + int device_index = m.device_index; + + if (m.status == 0) { + speeds[device_index] = m.speed; + + printf("\r"); + if (m.results_count != 0) { + Address* addresses = new Address[m.results_count]; + for (int i = 0; i < m.results_count; i++) { + if (mode == 0) { + CurvePoint p = cpu_point_multiply(G, m.results[i]); + addresses[i] = cpu_calculate_address(p.x, p.y); + } else if (mode == 1) { + CurvePoint p = cpu_point_multiply(G, m.results[i]); + addresses[i] = cpu_calculate_contract_address(cpu_calculate_address(p.x, p.y)); + } else if (mode == 2) { + addresses[i] = cpu_calculate_contract_address2(origin_address, m.results[i], bytecode_hash); + } } - } - for (int i = 0; i < m.results_count; i++) { - _uint256 k = m.results[i]; - int score = m.scores[i]; - Address a = addresses[i]; - uint64_t time = (m.time - global_start_time) / 1000; - - if (mode == 0 || mode == 1) { - printf("Elapsed: %06u Score: %02u Private Key: 0x%08x%08x%08x%08x%08x%08x%08x%08x Address: 0x%08x%08x%08x%08x%08x\n", (uint32_t)time, score, k.a, k.b, k.c, k.d, k.e, k.f, k.g, k.h, a.a, a.b, a.c, a.d, a.e); - } else if (mode == 2) { - printf("Elapsed: %06u Score: %02u Salt: 0x%08x%08x%08x%08x%08x%08x%08x%08x Address: 0x%08x%08x%08x%08x%08x\n", (uint32_t)time, score, k.a, k.b, k.c, k.d, k.e, k.f, k.g, k.h, a.a, a.b, a.c, a.d, a.e); + for (int i = 0; i < m.results_count; i++) { + _uint256 k = m.results[i]; + int score = m.scores[i]; + Address a = addresses[i]; + uint64_t time = (m.time - global_start_time) / 1000; + + if (mode == 0 || mode == 1) { + printf("Elapsed: %06u Score: %02u Private Key: 0x%08x%08x%08x%08x%08x%08x%08x%08x Address: 0x%08x%08x%08x%08x%08x\n", (uint32_t)time, score, k.a, k.b, k.c, k.d, k.e, k.f, k.g, k.h, a.a, a.b, a.c, a.d, a.e); + } else if (mode == 2) { + printf("Elapsed: %06u Score: %02u Salt: 0x%08x%08x%08x%08x%08x%08x%08x%08x Address: 0x%08x%08x%08x%08x%08x\n", (uint32_t)time, score, k.a, k.b, k.c, k.d, k.e, k.f, k.g, k.h, a.a, a.b, a.c, a.d, a.e); + } } - } - delete[] addresses; - delete[] m.results; - delete[] m.scores; + delete[] addresses; + delete[] m.results; + delete[] m.scores; + } + print_speeds(num_devices, device_ids, speeds); + fflush(stdout); + } else if (m.status == 1) { + printf("\rCuda error %d on device %d. Device will halt work.\n", m.error, device_ids[device_index]); + print_speeds(num_devices, device_ids, speeds); + fflush(stdout); + } else if (m.status == 11) { + printf("\rError from BCryptGenRandom. Device %d will halt work.", device_ids[device_index]); + print_speeds(num_devices, device_ids, speeds); + fflush(stdout); + } else if (m.status == 12) { + printf("\rError while reading from /dev/urandom. Device %d will halt work.", device_ids[device_index]); + print_speeds(num_devices, device_ids, speeds); + fflush(stdout); + } else if (m.status == 13) { + printf("\rError while opening /dev/urandom. Device %d will halt work.", device_ids[device_index]); + print_speeds(num_devices, device_ids, speeds); + fflush(stdout); + } else if (m.status == 100) { + printf("\rError while allocating memory. Perhaps you are out of memory? Device %d will halt work.", device_ids[device_index]); } - print_speeds(num_devices, device_ids, speeds); - fflush(stdout); - } else if (m.status == 1) { - printf("\rCuda error %d on device %d. Device will halt work.\n", m.error, device_ids[device_index]); - print_speeds(num_devices, device_ids, speeds); - fflush(stdout); - } else if (m.status == 11) { - printf("\rError from BCryptGenRandom. Device %d will halt work.", device_ids[device_index]); - print_speeds(num_devices, device_ids, speeds); - fflush(stdout); - } else if (m.status == 12) { - printf("\rError while reading from /dev/urandom. Device %d will halt work.", device_ids[device_index]); - print_speeds(num_devices, device_ids, speeds); - fflush(stdout); - } else if (m.status == 13) { - printf("\rError while opening /dev/urandom. Device %d will halt work.", device_ids[device_index]); - print_speeds(num_devices, device_ids, speeds); - fflush(stdout); - } else if (m.status == 100) { - printf("\rError while allocating memory. Perhaps you are out of memory? Device %d will halt work.", device_ids[device_index]); + // break; } + message_queue_mutex.unlock(); } } } \ No newline at end of file