GPU-based Implementation of Cryptocurrency Mining Techniques

2021 COE Engineering Design Project (GK07)


Faculty Lab Coordinator

Gul Khan

Topic Category

Software Systems

Preamble

Heterogeneous computing involves CPU-GPU processing, and it is gaining attraction due to General-Purpose GPU (GPGPU) programming and shared memory architectures of CPU-GPU systems. GPUs (Graphics Processing Units) were originally intended for graphics processing. However, GPUs are being used for a wide range of computational-intensive applications such as Cryptocurrency mining and its related techniques. Such applications have led the GPU manufacturers to amend the internal GPU architectures from SIMD and MIMD to a mixture Single Instruction Multiple Thread (SIMT) architecture-based computing structure. The GPUs with the new and modified architecture are called General Purpose GPU (GPGPU). Software developers for heterogeneous systems have been seeking new ways to utilize untapped power of the GPU for various compute hungry specific applications such as cryptocurrency and data mining. The main concern for GPU based computing is their higher power consumption that must be considered. The aim is to accelerate cryptocurrency mining by GPU-based heterogeneous processing and implementation of secure hash functions suitable for cryptocurrency mining. These hash functions are also being employed in data mining and various communication applications.

Objective

GPU-based implementation of a computing-intensive Cryptocurrency mining and related hash functions for faster execution.

Partial Specifications

1. Survey various GPU-based systems suitable for CPU-GPU programming.
2. Study and learn OpenCL (C based Language) for GPU and parallel programming.
3. Investigate GPU architectures and their programming techniques.
4. Study various encryption techniques and choose a cryptic function for GPU implementation. In other words, identify parts of the cryptocurrency mining application for GPU implementation.
6. Partition the application task graph into CPU and GPU allocation with minimal communication between CPU and GPU.
7. Compare the execution time of CPU-GPU implementation with a high-end CPU only implementation.

Suggested Approach

1. Study encryption algorithms and other cryptocurrency mining functions.
2. Identify and study a few GPU platforms for the implementation of cryptocurrency mining functions.
3. Study OpenCL or CUDA language for GPU implementation of hash (SHA) and other cryptocurrency mining functions.
4. Identify parts (functions) of the cryptocurrency mining application suitable for GPU-based processing and implement these functions on a GPU by using either OpenCL or CUDA programming.
5. Software Implementation of the selected hash function for high-end CPU implementation.
6. Design, verify and implement SHA or other encryption algorithms for cryptocurrency mining.
7. Compare the execution times for GPU implementation with the CPU-only execution.

Group Responsibilities

1. Investigate and study various GPU architectures.
2. Study different GPU platforms and select a target CPU-GPU board/platform.
3. Study various encryption techniques and choose some cryptic function for GPU implementation.
4. Study and write OpenCL or CUDA designs for CPU-GPU systems.
5. Write the single CPU code for SHA or other encryption algorithms for cryptocurrency mining.
6. Write OpenCL or CUDA code for the selected encryption algorithms for cryptocurrency mining.
7. Convert the cryptocurrency mining application into a task graph and program the GPU candidate tasks as OpenCL kernels.
8. For verification, compare your CPU-GPU implementation with a single CPU implementation in terms of execution time and power consumption.

Student A Responsibilities

1. Investigate and study different GPU platforms and select a target CPU-GPU board/platform for cryptocurrency mining.
2. Select a suitable computing-intensive cryptocurrency mining for GPU implementation in consultation with other students in the group.
3. Study and practice OpenCL or CUDA software development environment for GPU programming.
4. Develop OpenCL kernel for hashing (SHA) cryptocurrency mining tasks working with Student B.
5. Develop complete OpenCL code of cryptocurrency mining application for CPU-GPU implementation by working with student B.
6. Assist Student B and C and manage the overall project design and implementation.

Student B Responsibilities

1. Investigate and study various GPU architectures and corresponding GPU platforms for cryptocurrency mining implementation.
2. Select a suitable computing-intensive cryptocurrency mining for GPU implementation in consultation with other students in the group.
3. Study and practice OpenCL or CUDA software development environment for GPU programming.
4. Improve and develop OpenCL kernel for hashing (SHA) cryptocurrency mining tasks working with Student A.
5. Develop complete OpenCL code of cryptocurrency mining application for CPU-GPU implementation by working with student A.
6. Assist Student A and C to manage the overall project design and implementation.

Student C Responsibilities

1. Investigate and study different GPU architectures and corresponding GPU platforms for cryptocurrency mining implementation.
2. Select a suitable computing-intensive cryptocurrency mining application for GPU implementation in consultation with other students in the group.
3. Study and practice OpenCL and CUDA software development environment for GPU programming.
4. Develop OpenCL or C code for the selected application for single CPU implementation in consultation with the other students in the group.
5. Understand and verify the OpenCL code for cryptocurrency mining application developed by student A, B and D.
6. For verification, compare your single CPU implementation with the CPU-GPU implementation of cryptocurrency mining application application in terms of execution time and power consumption.
7. Assist Student A, B and D to manage the overall project and implementation.

Student D Responsibilities

1. Investigate and study different GPU architectures and corresponding GPU platforms for cryptocurrency mining implementation.
2. Select a suitable computing-intensive cryptocurrency mining application for GPU implementation in consultation with other students in the group.
3. Study and practice OpenCL and CUDA software development environment for GPU programming.
4. Develop OpenCL or C code for the selected application for single CPU implementation in consultation with the other students in the group.
5. Understand and verify the OpenCL code for cryptocurrency mining application developed by student A, B and C.
6. For verification, compare your single CPU implementation with the CPU-GPU implementation of cryptocurrency mining application in terms of execution time and power consumption.
7. Assist Student A, B and C to manage the overall project and implementation.

Course Co-requisites

COE718 AND COE838

To ALL EDP Students

Due to COVID-19 pandemic, in the event University is not open for in-class/in-lab activities during the Winter term, your EDP topic specifications, requirements, implementations, and assessment methods will be adjusted by your FLCs at their discretion.

 


GK07: GPU-based Implementation of Cryptocurrency Mining Techniques | Gul Khan | Friday August 20th 2021 at 01:52 PM