Skip to content
Snippets Groups Projects
Commit edf9b3c7 authored by Saskia Imani's avatar Saskia Imani
Browse files

Blocks 100 threads 1

parent 9b9ad1b4
Branches
No related merge requests found
......@@ -6,13 +6,19 @@
#define TRUE 1
#define FALSE 0
#define INF LONG_MAX
// #define N_THREADS 10
#define N_BLOCKS 100
#define N_THREADS 1
#define OUTPUT_FILE_PATH "parallel_result.txt"
__host__ __device__
void print_matrix(long matrix[], int n_row, int n_col);
__host__ __device__
void print_array(long arr[], int len);
__host__ __device__
long *initialize_matrix(int random_number, int n);
__host__ __device__
long *initialize_result(int n);
__host__ __device__
void write_output(long matrix[], int n_row, int n_col, double time);
__global__
......@@ -86,8 +92,6 @@ int main (int argc, char **argv) {
/* Read number of vertices */
printf("Number of vertices (n): "); scanf("%d", &n);
printf("Number of blocks : "); scanf("%d", &num_blocks);
printf("Number of threads : "); scanf("%d", &num_threads);
matrix = initialize_matrix(13517142, n);
printf("\nGenerated %d * %d matrix.\n", n, n);
......@@ -96,9 +100,9 @@ int main (int argc, char **argv) {
start = clock();
int sub_n = n / (num_blocks * num_threads);
int sub_n = n / (N_BLOCKS * N_THREADS);
dijkstra<<<num_blocks,num_threads>>>(n, sub_n, matrix, result);
dijkstra<<<N_BLOCKS,N_THREADS>>>(n, sub_n, matrix, result);
cudaDeviceSynchronize();
......@@ -111,6 +115,7 @@ int main (int argc, char **argv) {
cudaFree(matrix);
}
__host__ __device__
void print_matrix(long matrix[], int n_row, int n_col) {
for (int i = 0; i < n_row; i++) {
for (int j = 0; j < n_col; j++) {
......@@ -120,6 +125,7 @@ void print_matrix(long matrix[], int n_row, int n_col) {
}
}
__host__ __device__
void print_array(long arr[], int len) {
for (int i = 0; i < len; i++) {
printf("%ld ", arr[i]);
......@@ -127,6 +133,7 @@ void print_array(long arr[], int len) {
printf("\n");
}
__host__ __device__
void write_output(long matrix[], int n_row, int n_col, double time) {
FILE * file;
file = fopen (OUTPUT_FILE_PATH,"w");
......@@ -140,6 +147,7 @@ void write_output(long matrix[], int n_row, int n_col, double time) {
fclose (file);
}
__host__ __device__
long *initialize_matrix(int random_number, int n) {
/* Initialize variables */
long *matrix;
......@@ -151,7 +159,7 @@ long *initialize_matrix(int random_number, int n) {
if (i == j) {
matrix[i * n + j] = 0;
} else {
long dist = (rand() % 9) + 1;
long dist = rand();
matrix[i * n + j] = dist;
matrix[j * n + i] = dist;
}
......@@ -160,6 +168,7 @@ long *initialize_matrix(int random_number, int n) {
return matrix;
}
__host__ __device__
long *initialize_result(int n) {
long *result;
cudaMallocManaged(&result, n*n*sizeof(long));
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment