Project # 1 – Matrix Addition and Matrix Multiplication
Order ID |
53563633773 |
Type |
Essay |
Writer Level |
Masters |
Style |
APA |
Sources/References |
4 |
Perfect Number of Pages to Order |
5-10 Pages |
Description/Paper Instructions
Efficient Matrix Addition Using CUDA
Project # 1 – Matrix Addition and Matrix Multiplication
Task 1: Basic Matrix Addition
For this task, you will develop a complete CUDA program for integer matrix addition. You will add two two-dimensional matrices A, B on the device GPU in parallel. After the device matrix addition kernel function is invoked, and the addition result will be transferred back to the CPU. Your program will also compute the sum matrix of matrices A and B using the CPU. Your program should compare the device-computed result with the CPU-computed result. If it matches, then it will print out “Test PASSED” to the screen before exiting.
The pseudo code for matrix addition on the CPU is as follows:
void add_matrix_cpu(int *a, int *b, int *c, int N)
{
int i, j, index;
for (i=0;i<N;i++) {
for (j=0;j<N;j++) {
index =i*N+j;
c[index]=a[index]+b[index];
}
}
}
void main() {
…..
add_matrix(a,b,c,N);
}
The pseudo code for matrix addition on the GPU device is as follows:
CUDA C program
__global__ void add_matrix_gpu(int *a, int *b, int *c, intN)
{
int col =blockIdx.x*blockDim.x+threadIdx.x;
int row=blockIdx.y*blockDim.y+threadIdx.y;
int index =row*N+col;
if( row<N && col <N)
c[index]=a[index]+b[index];
}
void main() {
dim3 dimBlock(blocksize, blocksize,1);
dim3 dimGrid( ceiling (double (N) /dimBlock.x), ceiling (double (N) /dimBlock.y), 1 );
add_matrix_gpu<<<dimGrid, dimBlock>>>(a,b,c,N);
}
Use the following pseudo code for matrix initialization.
int *a, *b, *c;
A=malloc(sizeof(int)*N*N; //N is the size
//then malloc for b and c
Int init =1325;
For (i=0;i<N;i++){
For (j=0;j<N;j++){
Init=3125*init%65536;
A[i][j]=(init-32768)/6553;
B[i][j]=Init%1000;
}
}
Use the following matrix size and thread block size (the number of threads in each block) to test your cuda program.
Matrix Size |
Size of Thread block |
8*8 |
4*4 (For debugging purpose) |
128*128 |
16*16 |
500*500 |
16*16 |
1000*1000 |
16*16 |
Task 2: Matrix Multiplication
For this task, you will develop a complete CUDA program for matrix multiplication. You will multiply two two-dimensional matrices A,B on the device GPU in paralell. After the device matrix multiplication kernel function is invoked, and the multiplication result will be transferred back to the CPU. Your program will also compute the product matrix of matrices A and B using the CPU. Your program should compare the device-computed result with the CPU-computed result. If it matches, then it will print out “Test PASSED” to the screen before exiting.
The pseudo code for matrix multiplication on the CPU is as follows:
void MatrixMulOnHost(int* M, int* N, int* P, int Width)
{
for (int i = 0; i < Width; ++i)
for (int j = 0; j < Width; ++j) {
int sum = 0;
for (int k = 0; k < Width; ++k) {
int a = M[i * Width + k];
int b = N[k * Width + j];
sum += a * b;
}
P[i * Width + j] = sum;
}
}
void main() {
…..
add_matrix(a,b,c,N);
}
The pseudo code for matrix addition on the GPU device is as follows:
CUDA C program
__global__ void MatrixMulKernel(int* M, int* N, int * P, int Width)
{
int Row = blockIdx.y*blockDim.y+threadIdx.y;
int Col = blockIdx.x*blockDim.x+threadIdx.x;
if ((Row < Width) && (Col < Width)) {
int Pvalue = 0;
for (int k = 0; k < Width; ++k)
Pvalue += M[Row*Width+k] * N[k*Width+Col];
d_P[Row*Width+Col] = Pvalue;
}
}
void main() {
dim3 dimBlock(blocksize,blocksize,1);
dim3 dimGrid( ceiling (double (N) /dimBlock.x), ceiling (double (N) /dimBlock.y), 1 );
add_matrix_gpu<<<dimGrid,dimBlock>>>(a,b,c,N);
}
Use the following pseudo code for matrix initialization.
int *a, *b, *c;
A=malloc(sizeof(int)*N*N; //N is the size
//then malloc for b and c
Int init =1325;
For (i=0;i<N;i++){
For (j=0;j<N;j++){
Init=3125*init%65536;
A[i,j]=(init-32768)/6553;
B[i,j]=Init%1000;
}
}
Use the following matrix size and thread block size (the number of threads in each block).
Matrix Size |
Size of Thread block |
8*8 |
4*4 (For debugging purpose) |
128*128 |
16*16 |
500*500 |
16*16 |
1024*1024 |
16*16 |
Requirements:
- In order to use the cuda compiler environment installed under the cs unix server, fry.cs.wright.edu, you need to connect to this unix server remotely using a secure shell client, such as putty. You can remotely connect to this unix server, fry.cs.wright.edu, on campus from a Wright State computer or use your own laptop connecting to the WSU wifi network named “WSU-Secure”. Note that you cannot remotely connect to this computer using ssh using computers outside Wright State University without installing VPN or use the campus “WSU_EZ_CONNECT” wifi network. If you want to connect to this server remotely off campus, you need to install VPN on your computer first. If you want to edit your cuda source programs under windows, download notepad++. Then edit your source programs using notepad++. After you finish editing the cuda source programs, using the secure file transfer client (WinSCP, you can download it online, and install it on your personal computer) to transfer your cuda source programs to fry.cs.wright.edu.
- You must submit an ELECTRONIC COPY of your source program through Pilot before the due date. If for some reason Pilot is unavailable, submit your source code by email to meilin.liu@wright.edu.
- Submit all your source codes, a README file, a report, and any other required files. It is required that you explain how to compile and run your programs clearly in the README file. In the report, please report whether your programs have all the functionalities required in the project description. In your report, please state clearly any functionalities not implemented in your program. If your program works correctly, please include screenshots in your report. Your submitted file name should use your last name as part of the file name, for example, Liu_Project1.cpp, Liu_Project1_Report, Liu_Project1_ReadMe, etc. All the submitted project files should have: Course Number / Course Title, your name, group member’s name, prof.’s name, date, and the project name. If you did not include these required contents in your submitted files, then 5 points will be deducted.
- The grader or the instructor will test your programs under CUDA environment, on the linux server, fry.cs.wright.edu. Before you submit your program, please connect to this server using your campus ID to test your program (I have demoed how to compile and execute a cuda program on this server. If you have questions, let me know).
- The programming assignment is individual. You must finish the project by yourself. If you allow others to copy your programs or answers, you will get the same punishment as those who copy yours.
How to use CUDA on fry.cs.wright.edu
First using putty or other secure shell clients to connect to fry.cs.wright.edu using your campus id (for example, w123abc), then run the following command:
srun -p a100 –gres=gpu:1 –pty bash
This command will request access to a gpu node and launch a bash shell on it.
Then you can compile a cuda program vectadd.cu using the following command under the directory where your source cuda program is located.
nvcc vectadd.cu -o vectadd
Then you can execute vectadd using the following command under the directory where the generated executable file (of your cuda source program), vectadd, is located.
./vectadd
Project # 1 – Matrix Addition and Matrix Multiplication
RUBRIC
QUALITY OF RESPONSE |
NO RESPONSE |
POOR / UNSATISFACTORY |
SATISFACTORY |
GOOD |
EXCELLENT |
Content (worth a maximum of 50% of the total points) |
Zero points: Student failed to submit the final paper. |
20 points out of 50: The essay illustrates poor understanding of the relevant material by failing to address or incorrectly addressing the relevant content; failing to identify or inaccurately explaining/defining key concepts/ideas; ignoring or incorrectly explaining key points/claims and the reasoning behind them; and/or incorrectly or inappropriately using terminology; and elements of the response are lacking. |
30 points out of 50: The essay illustrates a rudimentary understanding of the relevant material by mentioning but not full explaining the relevant content; identifying some of the key concepts/ideas though failing to fully or accurately explain many of them; using terminology, though sometimes inaccurately or inappropriately; and/or incorporating some key claims/points but failing to explain the reasoning behind them or doing so inaccurately. Elements of the required response may also be lacking. |
40 points out of 50: The essay illustrates solid understanding of the relevant material by correctly addressing most of the relevant content; identifying and explaining most of the key concepts/ideas; using correct terminology; explaining the reasoning behind most of the key points/claims; and/or where necessary or useful, substantiating some points with accurate examples. The answer is complete. |
50 points: The essay illustrates exemplary understanding of the relevant material by thoroughly and correctly addressing the relevant content; identifying and explaining all of the key concepts/ideas; using correct terminology explaining the reasoning behind key points/claims and substantiating, as necessary/useful, points with several accurate and illuminating examples. No aspects of the required answer are missing. |
Use of Sources (worth a maximum of 20% of the total points). |
Zero points: Student failed to include citations and/or references. Or the student failed to submit a final paper. |
5 out 20 points: Sources are seldom cited to support statements and/or format of citations are not recognizable as APA 6th Edition format. There are major errors in the formation of the references and citations. And/or there is a major reliance on highly questionable. The Student fails to provide an adequate synthesis of research collected for the paper. |
10 out 20 points: References to scholarly sources are occasionally given; many statements seem unsubstantiated. Frequent errors in APA 6th Edition format, leaving the reader confused about the source of the information. There are significant errors of the formation in the references and citations. And/or there is a significant use of highly questionable sources. |
15 out 20 points: Credible Scholarly sources are used effectively support claims and are, for the most part, clear and fairly represented. APA 6th Edition is used with only a few minor errors. There are minor errors in reference and/or citations. And/or there is some use of questionable sources. |
20 points: Credible scholarly sources are used to give compelling evidence to support claims and are clearly and fairly represented. APA 6th Edition format is used accurately and consistently. The student uses above the maximum required references in the development of the assignment. |
Grammar (worth maximum of 20% of total points) |
Zero points: Student failed to submit the final paper. |
5 points out of 20: The paper does not communicate ideas/points clearly due to inappropriate use of terminology and vague language; thoughts and sentences are disjointed or incomprehensible; organization lacking; and/or numerous grammatical, spelling/punctuation errors |
10 points out 20: The paper is often unclear and difficult to follow due to some inappropriate terminology and/or vague language; ideas may be fragmented, wandering and/or repetitive; poor organization; and/or some grammatical, spelling, punctuation errors |
15 points out of 20: The paper is mostly clear as a result of appropriate use of terminology and minimal vagueness; no tangents and no repetition; fairly good organization; almost perfect grammar, spelling, punctuation, and word usage. |
20 points: The paper is clear, concise, and a pleasure to read as a result of appropriate and precise use of terminology; total coherence of thoughts and presentation and logical organization; and the essay is error free. |
Structure of the Paper (worth 10% of total points) |
Zero points: Student failed to submit the final paper. |
3 points out of 10: Student needs to develop better formatting skills. The paper omits significant structural elements required for and APA 6th edition paper. Formatting of the paper has major flaws. The paper does not conform to APA 6th edition requirements whatsoever. |
5 points out of 10: Appearance of final paper demonstrates the student’s limited ability to format the paper. There are significant errors in formatting and/or the total omission of major components of an APA 6th edition paper. They can include the omission of the cover page, abstract, and page numbers. Additionally the page has major formatting issues with spacing or paragraph formation. Font size might not conform to size requirements. The student also significantly writes too large or too short of and paper |
7 points out of 10: Research paper presents an above-average use of formatting skills. The paper has slight errors within the paper. This can include small errors or omissions with the cover page, abstract, page number, and headers. There could be also slight formatting issues with the document spacing or the font Additionally the paper might slightly exceed or undershoot the specific number of required written pages for the assignment. |
10 points: Student provides a high-caliber, formatted paper. This includes an APA 6th edition cover page, abstract, page number, headers and is double spaced in 12’ Times Roman Font. Additionally, the paper conforms to the specific number of required written pages and neither goes over or under the specified length of the paper. |
|
|
Also, you can place the order at www.collegepaper.us/orders/ordernow / www.phdwriters.us/orders/ordernow
|
Do You Have Any Other Essay/Assignment/Class Project/Homework Related to this? Click Here Now [CLICK ME]and Have It Done by Our PhD Qualified Writers!! |
|
|
PLACE THE ORDER WITH US TODAY AND GET A PERFECT SCORE!!!