Hetrogeneous Implementation of Secure Hash Functions for Cryptocurrency Mining

2022 COE Engineering Design Project (GK03)


Faculty Lab Coordinator

Gul Khan

Topic Category

Embedded Systems

Preamble

Heterogeneous computing involves CPU-GPU processing clusters and it is gaining attraction due to General-Purpose GPU programming and shared memory architectures of CPU-GPU systems. GPUs (Graphics Processing Units) were originally intended for graphics processing. However, GPUs are being increasingly employed for a wide range of computational-intensive cryptocurrency mining. Such applications have led the GPU manufacturers to amend the internal GPU architectures from SIMD to a mixture Single Instruction Multiple Thread (SIMT) 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 many computing hungry applications such as cryptocurrency mining. The main concern for GPU based computing is their higher power consumption that must be considered.

Objective

Heterogeneous design and implementation of computational-intensive hash functions for faster execution.

Partial Specifications

1. Explore various CPU/GPU development boards suitable for CPU-GPU programming.
2. Study and learn OpenCL (or Cuda Language) for GPU and parallel programming.
3. Investigate GPU architectures and their programming techniques.
4. Selection of candidate Secure Hash Functions or encryption applications for CPU-GPU implementation.
5. Identify parts of the application or its tasks in the task graph suitable for GPU implementation.
6. Partition the application task graph for CPU and GPU allocation with minimal communication between CPU and GPU.
7. Compare the execution time of CPU-GPU implementation with the CPU only implementation.

Suggested Approach

1. Study and learn various GPU architectures as well as their programming details.
2. Study and select an economical and low-cost CPU-GPU development board for your project.
3. Select computational-intensive Hash Functions or encryption application suitable for CPU-GPU implementation.
4. Study and learn OpenCL (or Cuda Language) for GPU and parallel programming. Write a simple hashing application in OpenCL to learn heterogeneous programming for CPU-GPU systems.
5. Divide the selected hashing function task graph into CPU and GPU implementation with minimal communication overhead between CPU and GPU.
6. Implement the application on target CPU-GPU system by using OpenCL environment.
7. Determine the application execution speed for a CPU only implementation. Compare the CPU-GPU implementation with the CPU only or GPU only implementations in terms of execution time and minimum power consumption.

Group Responsibilities

1. Investigate and study various GPU architectures. Survey different GPU platforms to select a target CPU-GPU systems.
2. Select a suitable high-performance hashing application for CPU-GPU implementation.
3. Write a simple hashing application in OpenCL to learn heterogeneous programming for CPU-GPU systems.
4. Develop the single CPU code of Hash Functions for Cryptocurrency Mining.
5. Convert the hashing application into a task graph and program the tasks as OpenCL kernels.
6. Implement the application for the selected CPU-GPU platform.
7. For testing and 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 various GPU architectures and corresponding GPU platforms for implementation.
2. Select suitable Hash Functions related to cryptocurrency mining for CPU-GPU implementation in consultation with the other students in the group.
3. Study and practice OpenCL (or Cuda) software development environment for GPU programming. Write a simple hashing application in OpenCL to learn heterogeneous programming for CPU-GPU systems.
4. Write OpenCL kernels of the Hash Functions for Cryptocurrency Mining application (represented by a task-graph) by working with Student B.
5. Develop and complete OpenCL code of the application for CPU-GPU implementation by working with student B.
6. Collaborate with Students B and C and manage the overall project design and implementation.

Student B Responsibilities

1. Investigate and study various GPU architectures and corresponding CPU-GPU platforms for implementation.
2. Select suitable Hash Functions for Cryptocurrency Mining for CPU-GPU implementation in consultation with the other students in the group.
3. Study and practice OpenCL (or Cuda) software development environment for GPU programming. Write a simple hashing application in OpenCL to learn heterogeneous programming for CPU-GPU systems.
4. Develop OpenCL kernels of Hash Functions for Cryptocurrency Mining application (represented by a task-graph) by working with Student A.
5. Develop and complete OpenCL code of the application for CPU-GPU implementation by working with student A.
6. Collaborate with Students A and C and manage the overall project design and implementation.

Student C Responsibilities

1. Investigate and study various GPU architectures and corresponding GPU platforms for implementation.
2. Select suitable Hash Functions of Cryptocurrency Mining for CPU-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 kernels of Hash Functions of Cryptocurrency Mining application tasks while working with Student A.
5. Develop full OpenCL code of the application for CPU-GPU implementation by working with student A.
6. Collaborate with Students A and B to manage the overall project design and implementation.

Student D Responsibilities

1. Investigate and study various GPU architectures and corresponding GPU platforms for implementation.
2. Select suitable Hash Functions of Cryptocurrency Mining for CPU-GPU implementation in consultation with the other students of the group.
3. Study and practice OpenCL (or Cuda) software development environment for GPU programming. Write a simple hashing application in OpenCL to learn heterogeneous programming for CPU-GPU systems.
4. Develop OpenCL kernels of Hash Functions for Cryptocurrency Mining application tasks while working with Student A.
5. Develop full OpenCL code of the application for CPU-GPU implementation by working with the other students of the group.
6. Collaborate with Students A and B to manage the overall project design and implementation.

Course Co-requisites

COE718, 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.

 


GK03: Hetrogeneous Implementation of Secure Hash Functions for Cryptocurrency Mining | Gul Khan | Sunday September 4th 2022 at 06:56 PM