PDC assignment
PDC assignment
#include <iostream>
int main() {
int N = 1000;
float A[N], B[N], C[N];
// Initialize A and B arrays
vectorAdd(A, B, C, N);
return 0;
}
#include <iostream>
int main() {
int N = 1000;
float *d_A, *d_B, *d_C;
float A[N], B[N], C[N];
return 0;
}
#include <iostream>
int main() {
const int N = 1000;
int A[N];
int sum = 0;
// Initialize array A
for (int i = 0; i < N; ++i) {
A[i] = i;
}
// Calculate sum of A
for (int i = 0; i < N; ++i) {
sum += A[i];
}
#include <iostream>
int main() {
const int N = 1000;
int *d_A, *d_sum;
int A[N];
int sum = 0;
// Initialize array A
for (int i = 0; i < N; ++i) {
A[i] = i;
}
// Launch kernel
sumKernel<<<(N + 255) / 256, 256>>>(d_A, d_sum, N);
return 0;
}
#include <iostream>
int main() {
const int N = 1000;
int A[N];
// Initialize array A
for (int i = 0; i < N; ++i) {
A[i] = i;
}
int scale = 2;
scaleArray(A, scale, N);
return 0;
}
#include <iostream>
int main() {
const int N = 1000;
int *d_A;
int A[N];
// Initialize array A
for (int i = 0; i < N; ++i) {
A[i] = i;
}
int scale = 2;
// Launch kernel
scaleArrayKernel<<<(N + 255) / 256, 256>>>(d_A, scale, N);
return 0;
}
#include <iostream>
int main() {
const int N = 3;
int A[N * N] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int B[N * N];
transposeMatrix(A, B, N);
return 0;
}
#include <iostream>
int main() {
const int N = 3;
int *d_A, *d_B;
int A[N * N] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int B[N * N];
// Launch kernel
dim3 block(1, 1);
dim3 grid(N, N);
transposeMatrixKernel<<<grid, block>>>(d_A, d_B, N);
return 0;
}
#include <iostream>
int main() {
const int N = 1000;
int A[N];
// Initialize array A
for (int i = 0; i < N; ++i) {
A[i] = i;
}
return 0;
}
#include <iostream>
int main() {
const int N = 1000;
int *d_A, *d_maxVal;
int A[N];
int maxVal = 0;
// Initialize array A
for (int i = 0; i < N; ++i) {
A[i] = i;
}
// Launch kernel
findMaxKernel<<<(N + 255) / 256, 256>>>(d_A, d_maxVal, N);
return 0;
}
#include <iostream>
int main() {
const int N = 3;
int *d_A, *d_B, *d_C;
int A[N * N] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int B[N * N] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int C[N * N] = {0};
// Launch kernel
dim3 block(1, 1);
dim3 grid(N, N);
matrixMultiplyKernel<<<grid, block>>>(d_A, d_B, d_C, N);
return 0;
}
#include <iostream>
int main() {
const int N = 4;
int *d_A, *d_B, *d_C;
int A[N * N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
int B[N * N] = {16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int C[N * N] = {0};
// Launch kernel
dim3 block(2, 2);
dim3 grid(N / 2, N / 2);
matrixMultiplyKernel<<<grid, block>>>(d_A, d_B, d_C, N);
return 0;
}