Implementation of the K-means algorithm
$30-85 USD
Paid on delivery
The problem you have to deal with in this project is that of parallel data clustering. In particular, you have to study and compare the performance of different implementations of the K-means algorithm in various schemes of parallel programming/architectural models.
## Deliverables
The problem you have to deal with in this project is that of parallel data clustering. In particular, you have to study and compare the performance of different implementations of the K-means algorithm in various schemes of parallel programming/architectural models.
You have to turn in the following two implementations:
Implementation of the K-means algorithm using the CUDA environment for the exploitation of multi-core graph processors (GPUs) and
Combination of the MPI and OpenMP models for the exploitation of a multi-core cluster of computers
Your implementation may rely on the sequential implementation of the K-means algorithm as well as on the algorithm’s implementations based entirely on MPI or OpenMP, which you will find here:
<[url removed, login to view]~wkliao/Kmeans/[url removed, login to view]>
Moreover, in the following link you may find short descriptions of the algorithm
<[url removed, login to view]>
In the following URL you can find an implementation of the K-means algorithm, which utilizes the CUDA environment. However, you should use the abovementioned implementation only for the experimental evaluation of your own implementation (this is the reason we give you two input files). Note that any version of the CUDA algorithm that will be based on the following implementation will not be accepted
<[url removed, login to view]~skadron/wiki/rodinia/[url removed, login to view]>
You can also have a look at a relevant study here:
<[url removed, login to view]>
Your implementation will concern the management of single float data and for the experimental evaluation of the algorithms you will use some of the files that you will find available in the attached files. After you are done with your implementation, you have to evaluate experimentally the various editions. Note that depending on your choices and if your consider necessary you can report results for more that one edition of your algorithms. In any case, your experimental evaluation should at least contain:
Sequential edition of the K-means (either the one available or you worn one)
Edition with the use of MPI (either the one available or you worn one)
Edition with the use of OpenMP (either the one available or you worn one)
Edition with the combination of MPI/OpenMP (either the one available or you worn one)
Edition with the use of CUDA (your own)
Edition with the use of CUDA (the one available)
The running of your experiments should concern a suitable number of processors so that it clearly demonstrates the scalability of the performance across the different editions.
DELIVERABLES
You have to deliver :
All your source code files that must be well documented
All the necessary files in which you document your source code (e.g. Makefiles)
A technical report in which you describe the choices you made during the implementation of the algorithm and which in your opinion affect the algorithm’s performance. Moreover, in the body of the report you have to document your results, your diagrams and you have to discuss the conclusions that will be drawn from the experimental evaluation.
ALL CODE MUST BE WELL DOCUMENTED AND INSTRUCTIONS ON HOW TO COMPILE THE CODE (MAKEFILES MUST BE PROVIDED) AND GIVE INPUT DATA MUST BE GIVEN.
Project ID: #3113303