From f4338702df36d9d1b5a661fff82abf2e70fa1975 Mon Sep 17 00:00:00 2001 From: Ft-N <ftnfata@gmail.com> Date: Sat, 22 Feb 2020 23:49:00 +0700 Subject: [PATCH] Debug, and a lot of trash/junk, please clean up and submit --- ae | 9 + dijkstra.c | 2 +- mpi.c | 144 ++++ reset.c | 29 +- ser.c | 98 +++ sr.c | 64 ++ test/a | Bin 0 -> 13376 bytes test/a.c | 66 ++ test/aingcupu/.Xdefaults | 30 + test/aingcupu/.bash_history | 669 ++++++++++++++++++ test/aingcupu/.bash_logout | 7 + test/aingcupu/.bashrc | 117 +++ test/aingcupu/.cache/motd.legal-displayed | 0 test/aingcupu/.config/Trolltech.conf | 5 + .../4/user/registrymodifications.xcu | 4 + test/aingcupu/.profile | 27 + test/aingcupu/.ssh/asd | 27 + test/aingcupu/.ssh/asd.pub | 1 + test/aingcupu/.ssh/authorized_keys | 1 + test/aingcupu/.ssh/id_ed25519 | 7 + test/aingcupu/.ssh/id_ed25519.pub | 1 + test/aingcupu/.ssh/id_rsa | 27 + test/aingcupu/.ssh/id_rsa.pub | 1 + test/aingcupu/.ssh/known_hosts | 15 + test/aingcupu/.xscreensaver | 2 + test/aingcupu/a.out | Bin 0 -> 12840 bytes test/aingcupu/all | 3 + test/aingcupu/asd | Bin 0 -> 13224 bytes test/aingcupu/c.c | 144 ++++ test/aingcupu/comp | 1 + test/aingcupu/cop | 2 + test/aingcupu/hellompi.c | 17 + test/aingcupu/mpi_hostfile | 7 + test/aingcupu/run | 1 + test/aingcupu/share | 5 + test/br.c | 65 ++ test/c | Bin 0 -> 12744 bytes test/c.c | 108 +++ test/comm.c | 31 + test/reduce.c | 47 ++ test/sg.c | 65 ++ 41 files changed, 1829 insertions(+), 20 deletions(-) create mode 100644 ae create mode 100644 mpi.c create mode 100644 ser.c create mode 100644 sr.c create mode 100644 test/a create mode 100644 test/a.c create mode 100644 test/aingcupu/.Xdefaults create mode 100644 test/aingcupu/.bash_history create mode 100644 test/aingcupu/.bash_logout create mode 100644 test/aingcupu/.bashrc create mode 100644 test/aingcupu/.cache/motd.legal-displayed create mode 100644 test/aingcupu/.config/Trolltech.conf create mode 100644 test/aingcupu/.config/libreoffice/4/user/registrymodifications.xcu create mode 100644 test/aingcupu/.profile create mode 100644 test/aingcupu/.ssh/asd create mode 100644 test/aingcupu/.ssh/asd.pub create mode 100644 test/aingcupu/.ssh/authorized_keys create mode 100644 test/aingcupu/.ssh/id_ed25519 create mode 100644 test/aingcupu/.ssh/id_ed25519.pub create mode 100644 test/aingcupu/.ssh/id_rsa create mode 100644 test/aingcupu/.ssh/id_rsa.pub create mode 100644 test/aingcupu/.ssh/known_hosts create mode 100644 test/aingcupu/.xscreensaver create mode 100644 test/aingcupu/a.out create mode 100644 test/aingcupu/all create mode 100644 test/aingcupu/asd create mode 100644 test/aingcupu/c.c create mode 100644 test/aingcupu/comp create mode 100644 test/aingcupu/cop create mode 100644 test/aingcupu/hellompi.c create mode 100644 test/aingcupu/mpi_hostfile create mode 100644 test/aingcupu/run create mode 100644 test/aingcupu/share create mode 100644 test/br.c create mode 100644 test/c create mode 100644 test/c.c create mode 100644 test/comm.c create mode 100644 test/reduce.c create mode 100644 test/sg.c diff --git a/ae b/ae new file mode 100644 index 0000000..7c2b92a --- /dev/null +++ b/ae @@ -0,0 +1,9 @@ +0 4 0 0 0 0 0 8 0 +4 0 8 0 0 0 0 11 0 +0 8 0 7 0 4 0 0 2 +0 0 7 0 9 14 0 0 0 +0 0 0 9 0 10 0 0 0 +0 0 4 14 10 0 2 0 0 +0 0 0 0 0 2 0 1 6 +8 11 0 0 0 0 1 0 7 +0 0 2 0 0 0 6 7 0 \ No newline at end of file diff --git a/dijkstra.c b/dijkstra.c index 308ec15..e5e12d4 100644 --- a/dijkstra.c +++ b/dijkstra.c @@ -140,7 +140,7 @@ int main(int argc, char *argv[]) { } else { for (int vertex = (rank - 1) * numOfTaskPerProcess; vertex < (rank - 1) * numOfTaskPerProcess + numOfTaskPerProcess; vertex++) { long* dataSend = dijkstra(graph, vertex); - MPI_Send(dataSend, N, MPI_LONG, destinationRank, tag, MPI_COMM_WORLD); + MPI_Send(dataSend, N, MPI_LONG, 0, tag, MPI_COMM_WORLD); } } diff --git a/mpi.c b/mpi.c new file mode 100644 index 0000000..861df39 --- /dev/null +++ b/mpi.c @@ -0,0 +1,144 @@ +#include "mpi.h" +#include <stdio.h> +#include <stdbool.h> +#include <stdlib.h> +#include <limits.h> + +int N = 1000; + +int getmin_index(long **graph, bool pickedVertices[N], int sourceVertex) { + int minDistance = CHAR_MAX; + int min_index = -1; + + for (int j = 0; j < N; j++) { + if (!pickedVertices[j] && graph[sourceVertex][j] <= minDistance) { + minDistance = graph[sourceVertex][j]; + min_index = j; + } + } + return min_index; +} + +void print(long **graph){ + printf("Matrix: \n"); + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + printf("%ld ", graph[i][j]); + } + printf("\n"); + } +} + +void dijkstra(long** graph, int sourceVertex) { + + // Distance from single source to all of the nodes + bool pickedVertices[N]; + + for (int vertex = 0; vertex < N; vertex++) { + pickedVertices[vertex] = false; + } + + for (int i = 0; i < N - 1; i++) { + // Get minimum distance + int min_index = getmin_index(graph, pickedVertices, sourceVertex); + + // Mark the vertice as picked + pickedVertices[min_index] = true; + + // Update distance value + for (int vertex = 0; vertex < N; vertex++) { + if ((!pickedVertices[vertex]) && + (graph[min_index][vertex]) && + (graph[sourceVertex][min_index] != INT_MAX) && + (graph[sourceVertex][min_index] + graph[min_index][vertex] < graph[sourceVertex][vertex])) { + + graph[sourceVertex][vertex] = graph[sourceVertex][min_index] + graph[min_index][vertex]; + } + } + } + return; +} + +int main(int argc, char *argv[]) { + + // Get matrix size from argument vector in , convert to int + N = strtol(argv[1], NULL, 10); + + long** graph; + graph = (long**) malloc(sizeof(long*) * N); + for (int i = 0; i < N; ++i) + { + graph[i] = (long*) malloc(sizeof(long) * N); + } + int numtasks, rank, dest, source, rc, count, tag=1; + double start_time, end_time, total_time; + + srand(13517115); + // Fill the matrix with rand() function + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + // Mod by 100 so the result won't be too big. + graph[i][j] = rand() % 100; + } + } + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (!(i == j || graph[i][j])){ + graph[i][j] = INT_MAX; + } + } + } + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (i == j){ + graph[i][j] = 0; + } + } + } + + MPI_Status Stat; + MPI_Init(&argc,&argv); + MPI_Comm_size(MPI_COMM_WORLD, &numtasks); + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Barrier(MPI_COMM_WORLD); + start_time = MPI_Wtime(); + + int jobs = N/(numtasks-1); + long* dataRecv; + int destinationRank = 0; + count = 0; + if (!rank){ + dataRecv = (long*) malloc(sizeof(long) * N*jobs); + while(count<numtasks-1){ + MPI_Recv(dataRecv, N*jobs, MPI_LONG, MPI_ANY_SOURCE, tag, MPI_COMM_WORLD, &Stat); + printf("Received from process %d ", Stat.MPI_SOURCE); + for (int i = 0; i < N*jobs; ++i) + { + graph[Stat.MPI_SOURCE*jobs-jobs][i] = dataRecv[i]; + } + count++; + } + free(dataRecv); + } + else{ + for (int i = rank*jobs-jobs; i < rank*jobs; ++i) + { + dijkstra(graph, i); + // printf("Print job %d from rank %d\n", i, rank); + } + MPI_Send(graph[rank*jobs-jobs], N*jobs, MPI_LONG, destinationRank, tag, MPI_COMM_WORLD); + } + + MPI_Barrier(MPI_COMM_WORLD); + end_time = MPI_Wtime(); + total_time = end_time - start_time; + MPI_Finalize(); + if (rank == 0) { + printf("%f\n", total_time); + } + for (int i = 0; i < N; ++i) + { + free(graph[i]); + } + free(graph); +} \ No newline at end of file diff --git a/reset.c b/reset.c index caa26b1..971b136 100644 --- a/reset.c +++ b/reset.c @@ -6,8 +6,8 @@ int N = 10; -long getVertexWithMinDistance(long dist[], bool pickedVertices[]) { - long minDistance = LONG_MAX; +int getVertexWithMinDistance(int dist[], bool pickedVertices[]) { + int minDistance = INT_MAX; int vertexWithMinDistance = -1; for (int vertex = 0; vertex < N; vertex++) { @@ -20,27 +20,18 @@ long getVertexWithMinDistance(long dist[], bool pickedVertices[]) { } -long* dijkstra(int graph[N][N], int sourceVertex) { +void dijkstra(int graph[N][N], int sourceVertex) { // Distance from single source to all of the nodes - long *dist = (long*) malloc(sizeof(long) * N); bool pickedVertices[N]; for (int vertex = 0; vertex < N; vertex++) { - if (vertex == sourceVertex) { - dist[vertex] = 0; - } else { - // Initialize all distance to be infinity. - dist[vertex] = LONG_MAX; - } pickedVertices[vertex] = false; } - dist[sourceVertex] = 0; - for (int i = 0; i < N - 1; i++) { // Get minimum distance - int vertexWithMinDistance = getVertexWithMinDistance(dist, pickedVertices); + int vertexWithMinDistance = getVertexWithMinDistance(graph[i], pickedVertices); // Mark the vertice as picked pickedVertices[vertexWithMinDistance] = true; @@ -49,17 +40,17 @@ long* dijkstra(int graph[N][N], int sourceVertex) { for (int vertex = 0; vertex < N; vertex++) { if ((!pickedVertices[vertex]) && (graph[vertexWithMinDistance][vertex]) && - (dist[vertexWithMinDistance] != LONG_MAX) && - (dist[vertexWithMinDistance] + graph[vertexWithMinDistance][vertex] < dist[vertex])) { - // Change dist[] - dist[vertex] = dist[vertexWithMinDistance] + graph[vertexWithMinDistance][vertex]; + (graph[i][vertexWithMinDistance] + graph[vertexWithMinDistance][vertex] < graph[i][vertex])) { + + graph[i][vertex] = graph[i][vertexWithMinDistance] + graph[vertexWithMinDistance][vertex]; } } } - return dist; + return; } int main(int argc, char *argv[]) { + int graph[N][N]; int rank, numtasks; double start_time, end_time, total_time; MPI_Status Stat; @@ -68,7 +59,6 @@ int main(int argc, char *argv[]) { MPI_Comm_rank(MPI_COMM_WORLD, &rank); start_time = MPI_Wtime(); - int graph[N][N]; srand(13517115); // Fill the matrix with rand() function for (int i = 0; i < N; i++) { @@ -93,6 +83,7 @@ int main(int argc, char *argv[]) { MPI_Finalize(); if (rank == 0) { + MPI_Recv(&dataRecv, N, MPI_INT, MPI_ANY_SOURCE, tag, MPI_COMM_WORLD, &Stat); printf("%f\n", total_time); } diff --git a/ser.c b/ser.c new file mode 100644 index 0000000..028dd9c --- /dev/null +++ b/ser.c @@ -0,0 +1,98 @@ +#include "mpi.h" +#include <stdio.h> +#include <stdbool.h> +#include <stdlib.h> +#include <limits.h> + +int N = 100; + +int getmin_index(short graph[N][N], bool pickedVertices[N], int sourceVertex) { + int minDistance = CHAR_MAX; + int min_index = -1; + + for (int j = 0; j < N; j++) { + if (!pickedVertices[j] && graph[sourceVertex][j] <= minDistance) { + minDistance = graph[sourceVertex][j]; + min_index = j; + } + } + return min_index; +} + +void print(short graph[N][N]){ + printf("Matrix: \n"); + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + printf("%d ", graph[i][j]); + } + printf("\n"); + } +} + +void dijkstra(short graph[N][N], int sourceVertex) { + + // Distance from single source to all of the nodes + bool pickedVertices[N]; + + for (int vertex = 0; vertex < N; vertex++) { + pickedVertices[vertex] = false; + } + + for (int i = 0; i < N - 1; i++) { + // Get minimum distance + int min_index = getmin_index(graph, pickedVertices, sourceVertex); + + // Mark the vertice as picked + pickedVertices[min_index] = true; + + // Update distance value + for (int vertex = 0; vertex < N; vertex++) { + if ((!pickedVertices[vertex]) && + (graph[min_index][vertex]) && + (graph[sourceVertex][min_index] != INT_MAX) && + (graph[sourceVertex][min_index] + graph[min_index][vertex] < graph[sourceVertex][vertex])) { + + graph[sourceVertex][vertex] = graph[sourceVertex][min_index] + graph[min_index][vertex]; + } + } + } + return; +} + +int main(int argc, char *argv[]) { + + // Get matrix size from argument vector in , convert to int + N = strtol(argv[1], NULL, 10); + + short graph[N][N]; + + srand(13517115); + // Fill the matrix with rand() function + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + // Mod by 100 so the result won't be too big. + graph[i][j] = rand() % 100; + } + } + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (!(i == j || graph[i][j])){ + graph[i][j] = CHAR_MAX; + } + } + } + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (i == j){ + graph[i][j] = 0; + } + } + } + + for (int i = 0; i < N; ++i) + { + dijkstra(graph, i); + printf("%d\n", i); + } + print(graph); +} \ No newline at end of file diff --git a/sr.c b/sr.c new file mode 100644 index 0000000..d66d98a --- /dev/null +++ b/sr.c @@ -0,0 +1,64 @@ + +// Copyright www.computing.llnl.gov +#include "mpi.h" +#include <stdio.h> + + +void clean(int arr[10][10]){ + for (int i = 0; i < 10; ++i) + { + for (int j = 0; j < 10; ++j) + { + arr[i][j] = 99; + } + } +} +int main(int argc, char *argv[]) { +int numtasks, rank, dest, source, rc, count, tag=1; +int inmsg[10][10], outmsg[10][10]; + +for (int i = 0; i < 10; i++) +{ + for (int j = 0; j < 10; j++) + { + outmsg[i][j] = 10*i+j; + } +} + +MPI_Status Stat; +MPI_Init(&argc,&argv); +MPI_Comm_size(MPI_COMM_WORLD, &numtasks); +MPI_Comm_rank(MPI_COMM_WORLD, &rank); +if (rank == 0) { + dest = 1; + source = 1; + rc = MPI_Send(&outmsg[5], 50, MPI_INT, dest, tag, MPI_COMM_WORLD); + rc = MPI_Recv(&inmsg[5], 50, MPI_INT, source, tag, MPI_COMM_WORLD, &Stat); + for (int i = 5; i < 10; i++) + { + for (int j = 0; j < 10; j++) + { + printf("%d\n", inmsg[i][j]); + } + } +} +else if (rank == 1) { + dest = 0; + source = 0; + rc = MPI_Recv(&inmsg[5], 50, MPI_INT, source, tag, MPI_COMM_WORLD, &Stat); + printf("%s\n", "pass"); + for (int i = 5; i < 10; i++) + { + for (int j = 0; j < 10; j++) + { + printf("%d\n", inmsg[i][j]); + } + } + clean(inmsg); + rc = MPI_Send(&inmsg[5], 50, MPI_INT, dest, tag, MPI_COMM_WORLD); +} +rc = MPI_Get_count(&Stat, MPI_INT, &count); +printf("Task %d: Received %d char(s) from task %d with tag %d \n", +rank, count, Stat.MPI_SOURCE, Stat.MPI_TAG); +MPI_Finalize(); +} diff --git a/test/a b/test/a new file mode 100644 index 0000000000000000000000000000000000000000..f8967160b9e47a6d6c53cf8c51647889cf0a7138 GIT binary patch literal 13376 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 literal 0 HcmV?d00001 diff --git a/test/a.c b/test/a.c new file mode 100644 index 0000000..c30647d --- /dev/null +++ b/test/a.c @@ -0,0 +1,66 @@ +// Copyright 2012 www.mpitutorial.com +// Program yang menghitung rata-rata dari array secara paralel menggunakan Scatter dan Gather. +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <mpi.h> +#include <assert.h> +float *create_rand_nums(int num_elements) { + float *rand_nums = (float *)malloc(sizeof(float) * num_elements); + assert(rand_nums != NULL); + int i; + for (i = 0; i < num_elements; i++) { +rand_nums[i] = (rand() / (float)RAND_MAX); + } + return rand_nums; +} +float compute_avg(float *array, int num_elements) { + float sum = 0.f; + int i; + for (i = 0; i < num_elements; i++) { +sum += array[i]; + } + return sum / num_elements; +} +int main(int argc, char** argv) { + if (argc != 2) { +fprintf(stderr, "Usage: avg num_elements_per_proc\n"); +exit(1); + } + int num_elements_per_proc = atoi(argv[1]); + srand(time(NULL)); + MPI_Init(NULL, NULL); + int world_rank; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + int world_size; + MPI_Comm_size(MPI_COMM_WORLD, &world_size); + float *rand_nums = NULL; + if (world_rank == 0) { +rand_nums = create_rand_nums(num_elements_per_proc * world_size); + } + float *sub_rand_nums = (float *)malloc(sizeof(float) * +num_elements_per_proc); + assert(sub_rand_nums != NULL); + MPI_Scatter(rand_nums, num_elements_per_proc, MPI_FLOAT, sub_rand_nums, +num_elements_per_proc, MPI_FLOAT, 0, MPI_COMM_WORLD); + float sub_avg = compute_avg(sub_rand_nums, num_elements_per_proc); + float *sub_avgs = NULL; + if (world_rank == 0) { +sub_avgs = (float *)malloc(sizeof(float) * world_size); +assert(sub_avgs != NULL); + } + MPI_Gather(&sub_avg, 1, MPI_FLOAT, sub_avgs, 1, MPI_FLOAT, 0, +MPI_COMM_WORLD); + if (world_rank == 0) { +float avg = compute_avg(sub_avgs, world_size); +printf("Avg of all elements is %f\n", avg); + } + if (world_rank == 0) { +free(rand_nums); +free(sub_avgs); + } + free(sub_rand_nums); + MPI_Barrier(MPI_COMM_WORLD); + MPI_Finalize(); +} + diff --git a/test/aingcupu/.Xdefaults b/test/aingcupu/.Xdefaults new file mode 100644 index 0000000..abdc96a --- /dev/null +++ b/test/aingcupu/.Xdefaults @@ -0,0 +1,30 @@ +! xscreensaver --------------------------------------------------------------- + +!font settings +xscreensaver.Dialog.headingFont: -*-dina-bold-r-*-*-10-*-*-*-*-*-*-* +xscreensaver.Dialog.bodyFont: -*-dina-medium-r-*-*-10-*-*-*-*-*-*-* +xscreensaver.Dialog.labelFont: -*-dina-medium-r-*-*-10-*-*-*-*-*-*-* +xscreensaver.Dialog.unameFont: -*-dina-medium-r-*-*-10-*-*-*-*-*-*-* +xscreensaver.Dialog.buttonFont: -*-dina-bold-r-*-*-10-*-*-*-*-*-*-* +xscreensaver.Dialog.dateFont: -*-dina-medium-r-*-*-10-*-*-*-*-*-*-* +xscreensaver.passwd.passwdFont: -*-dina-bold-r-*-*-10-*-*-*-*-*-*-* +!general dialog box (affects main hostname, username, password text) +xscreensaver.Dialog.foreground: #EDEDED +xscreensaver.Dialog.background: #202020 +xscreensaver.Dialog.topShadowColor: #202024 +xscreensaver.Dialog.bottomShadowColor: #202024 +xscreensaver.Dialog.Button.foreground: #EDEDFF +xscreensaver.Dialog.Button.background: #444 +!username/password input box and date text colour +xscreensaver.Dialog.text.foreground: #EDEDFF +xscreensaver.Dialog.text.background: #444 +xscreensaver.Dialog.internalBorderWidth:24 +xscreensaver.Dialog.borderWidth: 0 +xscreensaver.Dialog.shadowThickness: 2 +!timeout bar (background is actually determined by Dialog.text.background) +xscreensaver.passwd.thermometer.foreground: #A9B7C4 +xscreensaver.passwd.thermometer.background: #202020 +xscreensaver.passwd.thermometer.width: 8 +!datestamp format--see the strftime(3) manual page for details +xscreensaver.dateFormat: %I:%M%P %a %b %d, %Y + diff --git a/test/aingcupu/.bash_history b/test/aingcupu/.bash_history new file mode 100644 index 0000000..5f2d540 --- /dev/null +++ b/test/aingcupu/.bash_history @@ -0,0 +1,669 @@ +ls +lscpu +htop +exit +top +exit +top +nano +nano mpi_hostfile +ls +nano hellompi.c +mpicc hellompi.c -o a +nano share +ls +nano share +chmod +x share +mv a asd +ls +./share +ls +scp asd 13517109@167.205.35.151 +rm -rf 13517109@167.205.35.151 +ls +rm -rf 13517109@167.205.35.152 +rm -rf 13517109@167.205.35.153 +rm -rf 13517109@167.205.35.154 +rm -rf 13517109@167.205.35.155 +nano share +./share +ls +mpirun -np 6 --hostfile mpi_hostfile asd +top +ls +nano run +chmod +x run +./run +nano run +./run +ls +top +./run +ls +top +ls +nano copas.c +mpicc copas.c -o asd +./share +./run +nano copas.c +rm copas.c +nano c.c +nano comp +chmod +x comp +./comp +./share +./run +nano all +chmod +x all +./all +ls +exit +ls +rm share.save +ls +exit +./all +exit +./all +ls +cd /.ssh +cd ~/.ssh +ls +cd +~ls +ls +ssh-keygen -t ed25519 -C "13517109@std.stei.itb.ac.id" +exit +ls +git +ls +mpicc +ls +nano comp +./all +ls +nano comp +mpicc c.c +./all +mpicc c.c -o asd 10 +ls +nano comp +nano run +./all +mpirun -np 1 asd 10 +nano run +./all +nano run +./run 1 +./run 10 +nano all +./all 10 +nano cop +chmod +x cop +./cop +./all 10 +./cop +./all +nano run +nano all +ls +./cop +./all 1 10 +./comp +ls +./comp +./run 1 +./run 1 10 +top +htop +ks +ls +./cop +./all 5 +./all 5 10 +ls +mpirun -np 6 asd 1 10 10 +mpirun -np 6 asd 10 10 +mpirun -np 6 asd 10000000 1000000 +mpirun -np 6 asd 1000 1000 +top +./cop +./run 6 100 +./all 6 100 +./run 6 100 +mpirun -np 5 asd 100 +mpirun -np 5 asd 10000 +mpirun -np 5 asd 100000 +nano run +./run 4 10 +./run 4 10000 +./run 2 10000 +ls +./cop +./all 6 100 +./all 6 1000 +./cop +./all +./all 1 +./all 5 +./all 3 +./cop +./all 1 +./all 1 10 +nano all +./cop +ls +./comp +./cop +./all +./all 1 +./cop +./all +./all 1 +./cop +./all 1 +./cop +nano all +./all +./cop +./all +./cop +./all +./cop +./all +./cop +./all +./cop +./all +./cop +./all +./cop +./all +./cop +./all +./cop +./all +./cop +./all +./cop +./all +./cop +./all +./cop +./all +./run 6 +./share +./run 6 +./run 1 +nano all +./cop +./all +./run +./run 6 +ls +./cop +./all +./run 2 +./run 3 +./run 2 +./cop +./all 2 x +./run 2 +./run 2 x +./run 2 'x' +./run 2 "X" +./cop +./comp +./cop +./comp +./cop +./comp +./share +./run 2 +./cop +./COP +./cop +./all 2 +nano all +./all +./all 2 +./run 2 +./cop +./all 2 +./cop +./all 2 +./cop +./all 2 +./COP +./cop +./all 2 +./cop +./all 2 +./cop +./comp +./cop +./comp +./all 2 +// Copyright www.computing.llnl.gov +#include "mpi.h" +#include <stdio.h> +int main(int argc, char *argv[]) { +int numtasks, rank, dest, source, rc, count, tag=1; +int inmsg[10], outmsg[10][10]; +for (int i = 0; i < 10; ++i) +{ for (int j = 0; j < 10; ++i) +{ it(&argc,&argv); +MPI_Comm_size(MPI_COMM_WORLD, &numtasks); +MPI_Comm_rank(MPI_COMM_WORLD, &rank); +if (rank == 0) { +dest = 1; +source = 1; +rc = MPI_Send(&outmsg, 100, MPI_INT, dest, tag, MPI_COMM_WORLD); +rc = MPI_Recv(&inmsg, 100, MPI_INT, source, tag, MPI_COMM_WORLD, &Stat); +for (int i = 0; i < 10; ++i) +{ t j = 0; j < 10; ++i) +{ tf("%d\n", inmsg[i][j]); +outmsg[i][j] = 10*i+j; +} +else if (rank == 1) { +dest = 0; +./co[ +./cop +./all 2 +./cop +./all 2 +./cop +./all 2 +./cop +./all +./all 2 +./cop +./all 2 +./cop +./all 2 +./cop +./comp +./all 2 +./cop +./all 1 +./cop +./comp +./share +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./COP +./cop +./COP +./cop +./comp +././cop +./comp +./run 1 +./cop +./comp +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./cmp +./comp +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./COP +./cop +./comp +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +././cop +./comp +./cop +./comp +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run1 +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./run 1 +./cop +./comp +./cop +./comp +./cop +./comp +./cop +./com +./comp +./run 6 +./cop +./comp +./run 6 +./all 6 +./cop +./all 6 +./cop +./comp +./all 6 +nano run +nano all +./cop +./all 6 100 +./all 6 10 +./all 6 100 +./all 6 50 +./all 6 10 +./run 6 10 +./run 6 20 +./run 6 10 +./run 2 10 +./run 2 9 +./run 4 9 +./run 6 100 +./run 5 100 +./cop +#include "mpi.h" +#include <stdio.h> +#include <stdbool.h> +#include <stdlib.h> +#include <limits.h> +int N = 100; +int getmin_index(int graph[N][N], bool pickedVertices[N], int sourceVertex) { +./cop +./all 6 100 +./cop +./comp +./share +./run 6 100 +./run 6 9 +./cop +./comp +./share +./cop +./comp +./share +./run 6 1000 +./cop +./comp +./share +./run 6 100 +./cop +./comp +./share +./run 6 100 +./run 6 1000 +./run 6 500 +./run 6 1000 +./cop +./all 6 100 +./all 6 500 +./run 6 1000 +./cop +./all 6 100 +./cop +./comp +./cop +./comp +./share +./run 6 100 +./run 6 10 +./cop +./comp +./share +./run 6 10 +./cop +./all 6 100 +./cop +./all 6 100 +./run 6 100 +./run 6 500 +./cop +./all 6 100 +./run 6 100 +./run 6 500 +./run 6 1000 +nano run +#include "mpi.h" +#include <stdio.h> +#include <stdbool.h> +#include <stdlib.h> +#include <limits.h> +int N = 100; +int getmin_index(long graph[N][N], bool pickedVertices[N], int sourceVertex) { +mpirun -np 6 --hostfile mpi_hostfile asd 1000 +mpirun -np 6 --hostfile mpi_hostfile asd 1000 --bind-to core:overload-allowed +mpirun -np 6 --hostfile mpi_hostfile asd 1000 --verbose +./cop +./all 6 100 +./run 6 500 +./cop +./all 6 10 +./cop +./all 6 9 +./share +./run 4 9 +./cop +./comp +./share +./run 4 9 +./cop +./comp +./cop +./comp +./share +./run 4 9 +./run 2 9 +./cop +./comp +./share +./run 2 9 +./cop +./comp +./share +./run 2 9 +./cop +./comp +./share +./run 2 9 +./run 4 9 +nano c.c +./all 6 100 +./run 2 9 +./cop +./comp +./share +./run 6 100 +./cop +./comp +./share +./run 2 9 +./cop +./comp +./share +./run 2 9 +./run 4 9 +./cop +./comp +./share +./run 2 9 +./run 4 9 +./cop +./comp +./share +./run 6 0 +./run 6 100 +./run 6 1000 +./cop +./comp +./cop +./comp +./cop +./comp +./cop +./comp +./share +./run 2 9 +./run 4 9 +./run 6 1000 +./run 6 5000 +./cop +./comp +./cop +./comp +./share +./run 6 100 +./run 6 1000 +./cop +./comp +./share +./run 6 100 +./run 6 1000 +./cop +./comp +./share +./run 6 100 +./run 6 1000 +./cop +./share +./run 6 100 +./run 6 1000 +./run 6 5000 +./run 6 1000 +./run 6 3000 +./run 2 1000 +./cop +./comp +./run 1 9 +./cop +top +./cop +./comp +./run 1 9 +exit +ulimit -a +exit +ulimit -s 40000 +ulimit -a +ulimit -s 400000 +ulimit -s 80000 +ulimit -a +ulimit -s 60000 +ulimit -s 50000 +ulimit -s 40000 +./cop +./comp +./run 1 10 +./run 1 100 +./run 1 1000 +./run 1 3000 +./run 1 5000 +./cop +./comp +./run 1 5000 +./cop +./comp +./cop +./comp +./cop +./comp +./cop +./comp +./cop +./comp +./run 1 +top +htop +./cop +./comp +./run 1 +./run 1 1000 +./run 2 1000 +./run 6 1000 +./cop +./comp +./share +./run 6 1000 +./cop +./comp +./share +./run 6 5000 +./cop +./comp +./share +./run 6 5000 +nano mpi_hostfile +./cop +./comp +./cop +./comp +./share +./run 5 5000 +nano mpi_hostfile +./cop +./comp +./share +./run 6 5000 +ls +cd .. +ls +cd josal +cd 13517115 +ls -ola +ls +cd 13517109 +ls .. +exit diff --git a/test/aingcupu/.bash_logout b/test/aingcupu/.bash_logout new file mode 100644 index 0000000..de4f5f7 --- /dev/null +++ b/test/aingcupu/.bash_logout @@ -0,0 +1,7 @@ +# ~/.bash_logout: executed by bash(1) when login shell exits. + +# when leaving the console clear the screen to increase privacy + +if [ "$SHLVL" = 1 ]; then + [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q +fi diff --git a/test/aingcupu/.bashrc b/test/aingcupu/.bashrc new file mode 100644 index 0000000..b488fcc --- /dev/null +++ b/test/aingcupu/.bashrc @@ -0,0 +1,117 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +alias ll='ls -alF' +alias la='ls -A' +alias l='ls -CF' + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/test/aingcupu/.cache/motd.legal-displayed b/test/aingcupu/.cache/motd.legal-displayed new file mode 100644 index 0000000..e69de29 diff --git a/test/aingcupu/.config/Trolltech.conf b/test/aingcupu/.config/Trolltech.conf new file mode 100644 index 0000000..ebabedd --- /dev/null +++ b/test/aingcupu/.config/Trolltech.conf @@ -0,0 +1,5 @@ +[Qt] +font="Noto Sans,9,-1,5,50,0,0,0,0,0" +style=GTK+ +doubleClickInterval=400 +cursorFlashTime=1200 diff --git a/test/aingcupu/.config/libreoffice/4/user/registrymodifications.xcu b/test/aingcupu/.config/libreoffice/4/user/registrymodifications.xcu new file mode 100644 index 0000000..d87d2ea --- /dev/null +++ b/test/aingcupu/.config/libreoffice/4/user/registrymodifications.xcu @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> +<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="SymbolStyle" oor:op="fuse"><value>elementary</value></prop></item> +</oor:items> diff --git a/test/aingcupu/.profile b/test/aingcupu/.profile new file mode 100644 index 0000000..d89ea5a --- /dev/null +++ b/test/aingcupu/.profile @@ -0,0 +1,27 @@ +# ~/.profile: executed by the command interpreter for login shells. +# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login +# exists. +# see /usr/share/doc/bash/examples/startup-files for examples. +# the files are located in the bash-doc package. + +# the default umask is set in /etc/profile; for setting the umask +# for ssh logins, install and configure the libpam-umask package. +#umask 022 + +# if running bash +if [ -n "$BASH_VERSION" ]; then + # include .bashrc if it exists + if [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" + fi +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/.local/bin" ] ; then + PATH="$HOME/.local/bin:$PATH" +fi diff --git a/test/aingcupu/.ssh/asd b/test/aingcupu/.ssh/asd new file mode 100644 index 0000000..c366166 --- /dev/null +++ b/test/aingcupu/.ssh/asd @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAxh7hf1JJARM42PNkLexgi+5PxgMvgbQxwr0Yk0OvojzJ+0Bq +aTRiuUn515lUFWjp0Y9vv91gGU67Rq/G41GgyA4jI3VYJAM/3WnJWZivWcckA3b9 +yOcFY+hhPvffvhk4+B0L495ZQZreGV09FTG3fp6aoGzsWy0WtFO6wKRFLklppCUy +arGe52LpnjxTBUjkikL34wvj2GtwyEXfw3tS3L7kFDXCWGp1z9HaL+BFb/lBSFny +w7asWubxaBsv6AmPw6jPdCvtT75b5ts0hHmVUQfb8T1neCaVgawKCxWAT4ZUnhaV +64PWq2Ob+CCBpS3n0tw371v6O/1Sa5w7uYsp9QIDAQABAoIBAB08W1xVgS5mbsId +EJByTED59s2qlK0YMSuiiejZWSagv9GSzOEfeN4M25CEMNND+xUQjJYMjezOIHaq +47eRyR8cbvUBkPMng5ohzTOqg13FNDxKp+KorLP0i70mCN9di3mZl7KVkihLOTEX +ADeLcZ9+uiSoTiyaN7p+jJV26DqPGhlSnBqUtFsoJTv7I1IZ9F3TJwFIrU2/O7cu +9U1CaYyUA7BBr9H2kdnM7HVQDXAxgXttgQiztIFV/eVAb8PNM2JPkCfiUfYclvJe +1EfeMTbCfy0f5jUXMhkLJyTLQylSwPio6bqujB5+V4MZRqN4o8g7DTRvG8IAEe4b +JktF6oECgYEA89qvWAYaflSbluI8Xw+fVN7TNV78XBYxgiIA+IDjVt2pTtUb3PmH +xMtHulfbksIbyon83sxG2FQ82rvKMOeD46TwyuyHYw6YO36T+4zE3arw8XGpcPmT +8FXnJ9YxvRtyj+eJjvBLjuD90GslxrPXBqkZIQtSDN+hb6w4zRS7/5UCgYEAz/0P +Ue4w7L88hqP0UwKgNGCdt8HTX3VyTZAl62kJeFtflqsyxs5YGEVYpLiwlH7vBctI +IJZ0UqKeJOGsRG3Lf2WphpiSTkKQU4YQW4vuLvsYX6Re2n0NpoPAbnouA7lVfOL4 +3ADZz6NeCfvfIMhvOd7alYPBf2yd2mDOSNvPaOECgYBAAKi+8LMpbyl7G5v+00nd +a7KBspGH1edeoXAhySpiFUGnyDVM9U1WMIh99ytRRJMowLjW/USm6M0kF9/EoC80 +o4jzqcsLC7yW+Oz8PAE7sO8WX9+6IDddAB7wjL53ROn3rSykkJs0QAc+GbFLis4o +GF/ZFXCOom9rsQcjhIqnVQKBgQCMNohebloTMDTIe70ZPPrtdHi+yW8Kum1tNpEp +q2zT8510QEOB3NdsvUst+Mgpw4y1dj5Qob0XfENqj6yHkREP+GQZtb9j/OG5PPbI +EIRoraPXzkKXvpg2Ojm/AKUGo6mrAIROJFCx9utNhbv9KMI63C61ftYyZfHgp0RJ +v82KYQKBgQC+J+0/7WernN6JhXa0nrDrQ+jDdpLWWf9ALqbxp4QgFaEb2Mcv4uJS +FLrfBDpKxfkZl618u5i0mpeOtVIsXXiv4lJku0VMnNisZlJAD409ENuNbpSn3KkK +NUK9wAScTvCU62c8pANYXSCC885dHsveptwZvDV+xC2ldSx0riTP3Q== +-----END RSA PRIVATE KEY----- diff --git a/test/aingcupu/.ssh/asd.pub b/test/aingcupu/.ssh/asd.pub new file mode 100644 index 0000000..cbcbf72 --- /dev/null +++ b/test/aingcupu/.ssh/asd.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGHuF/UkkBEzjY82Qt7GCL7k/GAy+BtDHCvRiTQ6+iPMn7QGppNGK5SfnXmVQVaOnRj2+/3WAZTrtGr8bjUaDIDiMjdVgkAz/daclZmK9ZxyQDdv3I5wVj6GE+99++GTj4HQvj3llBmt4ZXT0VMbd+npqgbOxbLRa0U7rApEUuSWmkJTJqsZ7nYumePFMFSOSKQvfjC+PYa3DIRd/De1LcvuQUNcJYanXP0dov4EVv+UFIWfLDtqxa5vFoGy/oCY/DqM90K+1Pvlvm2zSEeZVRB9vxPWd4JpWBrAoLFYBPhlSeFpXrg9arY5v4IIGlLefS3DfvW/o7/VJrnDu5iyn1 ftn@FtN diff --git a/test/aingcupu/.ssh/authorized_keys b/test/aingcupu/.ssh/authorized_keys new file mode 100644 index 0000000..dc27eeb --- /dev/null +++ b/test/aingcupu/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFlg/T/xmHb9nEVZClpzeLvCxLNrtzCdLd9rzIT3ItWH55PVbLi2Mjzin2z7QqcHZ02iI0wV9f8hJHV1YzzEm9SxpmeN9RchawvIcIo2xw2Of/PKyFEVrfMjF8+TCEoT0yht6BGsLXOCssufvCxlH9sA39nOneWEJHMLXNSZGGvwu09oox6OzfAZNELLP9cNLRCjnMFR0/Tw7O5rvO6biR8Gv1J8DfI73emGHRLjeu3T1Y25feyduNwj8HtlP9UQaUzLZ3Zd2SMS8tFbryS9/RUg1xFAlr2/q1/eR25iIa3xnAZndwSJHOp45NhHmk0dKeIMcRBox+R+xHMQIZygEH ftn@FtN diff --git a/test/aingcupu/.ssh/id_ed25519 b/test/aingcupu/.ssh/id_ed25519 new file mode 100644 index 0000000..39e082e --- /dev/null +++ b/test/aingcupu/.ssh/id_ed25519 @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACDI8XClk5QmpuJ6ejmM8kUSXxFij/poozutaryBlxB6PwAAAKCNsH+qjbB/ +qgAAAAtzc2gtZWQyNTUxOQAAACDI8XClk5QmpuJ6ejmM8kUSXxFij/poozutaryBlxB6Pw +AAAECMjyGwyOafIEDqs0mcGy0myoQSWW/Yl72swphjs9HbgcjxcKWTlCam4np6OYzyRRJf +EWKP+mijO61qvIGXEHo/AAAAGzEzNTE3MTA5QHN0ZC5zdGVpLml0Yi5hYy5pZAEC +-----END OPENSSH PRIVATE KEY----- diff --git a/test/aingcupu/.ssh/id_ed25519.pub b/test/aingcupu/.ssh/id_ed25519.pub new file mode 100644 index 0000000..420a23f --- /dev/null +++ b/test/aingcupu/.ssh/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMjxcKWTlCam4np6OYzyRRJfEWKP+mijO61qvIGXEHo/ 13517109@std.stei.itb.ac.id diff --git a/test/aingcupu/.ssh/id_rsa b/test/aingcupu/.ssh/id_rsa new file mode 100644 index 0000000..e4a34e4 --- /dev/null +++ b/test/aingcupu/.ssh/id_rsa @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAxZYP0/8Zh2/ZxFWQpac3i7wsSza7cwnS3fa8yE9yLVh+eT1W +y4tjI84p9s+0KnB2dNoiNMFfX/ISR1dWM8xJvUsaZnjfUXIWsLyHCKNscNjn/zys +hRFa3zIxfPkwhKE9MobegRrC1zgrLLn7wsZR/bAN/Zzp3lhCRzC1zUmRhr8LtPaK +Mejs3wGTRCyz/XDS0Qo5zBUdP08Ozua7zum4kfBr9SfA3yO93phh0S43rt09WNuX +3snbjcI/B7ZT/VEGlMy2d2XdkjEvLRW68kvf0VINcRQJa9v6tf3kduYiGt8ZwGZ3 +cEiRzqeOTYR5pNHSniDHEQaMfkfsRzECGcoBBwIDAQABAoIBAEO0hR32xw+y0yNE +0rkA0LbQNzlauubTke8/UjctiglhzozK6Qf8bm9hgN2zFKCKQv0NljUPohflgj/x +/HbpZMc5igVdG+DzwDS1lWvvXARbPzwl1VQPu1zJ/U0+slJwUeETeAEzY1qOQ7Ui +0dNPU98jSdgCwdzPz35HgbSjpftOtm3ALSjfSz1zf6cmzyIqwattFbnYUU6bNlT2 +cVuKlRrP9bDUil+f9nWWgjva9WBO3nmLmnpe3xPSpGIDZgwpCNQCcGESTn3Aij+x +5F35vAyzQ+4jfdkvOvULHfEGSXaEOhnXEhhW8CwOaPog9YZBHDKpuoQPpSLQaUcj +xGiIZEECgYEA/lnJP1+36DwPpjxnMGKjhKckVuybogxPbl6BV5kzzieapfqvY9wW +9Fl1mJKZjizw/8doBpNRvL+cVHJPoQgIWXgyj2iNU3Qgn8cwUt2sM00UVduEjiXA +9z2/RLdsXYhsbvgvN3pYzb3TCIZTJmvWm8zmdfgCOTNKNKBJbSkEemcCgYEAxt4M +ZOcX1c9cVvKb0pew7wVUu91L9gfG4WFfvrj3QxOhFaQU5loaxgOdSbDKbmXR8bXz +ssl52/7z7UoKiGuE7EyLsYi44GN/w0wtVkx6/WQ6PpWrbvRhk0K79l8ipZcdJuZX +yPHPP51BN48+jXL5nO/qkDscdLvoryRA8rinYGECgYB/WxfAir38I662TwJgINO9 +hS9V8u1Oq5lOKzXaVdSxwfTWbPpLJxW7TdvrBGSs4uXdPMxilntT5iFxyzcB65K6 +scunMPOquLfpKQSSSXqCyXKINv1da5v+cEWIM8un3bplqhGCVtmGUykK2K9jypVP +t74hjYgXeg4K4cNCTEp4uwKBgGlz1Z6r7De0fYKdo4NIbMpSSVxVPLJ57TwWJm88 +JeGrxv9ywqJjpU7bG8y3sqBX3bwOf+uOas/9odtyJ6OvYAztiiXaGi7ilB07h877 +PzyeqUQGmaF8dUFhYcqDKBwmxY6bFnG3x+4ztSGBE+ptzW8qyXcx4SUFf51f3BDZ +WegBAoGAfIgZVgeLWn7wmBzeyM8bbXfXWB3HIOrsRs637HVWtNd9tid8qxJFAQcP +uVEZHMLBFe9tbtcZrFoiTaTgE+t6EG4PLnjAdDDp/G2znvBvwn5QoZDn0g13WQ9y +eKdEDN34BkQBsl69y2qQEU4A5VI9phGLA2iVT6Qju3IKRO1w7SY= +-----END RSA PRIVATE KEY----- diff --git a/test/aingcupu/.ssh/id_rsa.pub b/test/aingcupu/.ssh/id_rsa.pub new file mode 100644 index 0000000..dc27eeb --- /dev/null +++ b/test/aingcupu/.ssh/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFlg/T/xmHb9nEVZClpzeLvCxLNrtzCdLd9rzIT3ItWH55PVbLi2Mjzin2z7QqcHZ02iI0wV9f8hJHV1YzzEm9SxpmeN9RchawvIcIo2xw2Of/PKyFEVrfMjF8+TCEoT0yht6BGsLXOCssufvCxlH9sA39nOneWEJHMLXNSZGGvwu09oox6OzfAZNELLP9cNLRCjnMFR0/Tw7O5rvO6biR8Gv1J8DfI73emGHRLjeu3T1Y25feyduNwj8HtlP9UQaUzLZ3Zd2SMS8tFbryS9/RUg1xFAlr2/q1/eR25iIa3xnAZndwSJHOp45NhHmk0dKeIMcRBox+R+xHMQIZygEH ftn@FtN diff --git a/test/aingcupu/.ssh/known_hosts b/test/aingcupu/.ssh/known_hosts new file mode 100644 index 0000000..967ffb8 --- /dev/null +++ b/test/aingcupu/.ssh/known_hosts @@ -0,0 +1,15 @@ +|1|TpSFBPgs5x8HcpGvwEWplm4nt5A=|aBV/XRAMiNh6ZoVgqL+7qsHwWL0= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPewY1WIwySjYsd3YPCLcag3IQ+r5laEPfNg/yJLFs/9FVNQCHaUUijviSnMhxhcuVhD0+lXt5jdpO6XITEpf/U= +|1|mklDAxMbJE9Q+mdRe5bUZNNnQvY=|0Rv2mFkvyc26cNAgrZTcqUyAwaw= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDxEzA5tjbq6lHKcKFBIpilEmdRxu4cS95am2D5ik+CNVIqhzs4tkDEM44/JyyjJepKvDbvJ/TrwoyLqv6gJ8mP/Y/l9bo/Zq7i0bCy76PxM8/yBzMWXuJP868n0j4VES8WrT9UMmXJFtADcCo0TSoS9hDEgpwzTb8ZNVY+u0Ei/G2xw7iaPTG9PZsh4AJwoi4VJ3n+BueqaX48WDOr11iYRpYUXUjVOuTm5/T4SXSBCpTTWnLBidBB5iyQjvf3lh100q7KLhX0Y+/vJrlvhggLL7SkMorwHHHF/zYAOvGlSJzDxxDlfmzEqLzYV+PWexg2jNxhjdP5z7fxA6zkR5y7 +|1|je77Otrd0f9C6QObfw8/La7A3CI=|2Z35/HwE22Wc5Sgv8nohYWRMhEs= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPewY1WIwySjYsd3YPCLcag3IQ+r5laEPfNg/yJLFs/9FVNQCHaUUijviSnMhxhcuVhD0+lXt5jdpO6XITEpf/U= +|1|SuAhze265EbAkEYbzChT2t9ggA4=|rIOoF2AoL1md9XqaxYZzbK1BRcs= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINkzBXFAEYIcuqTzgtg+kbVofmmrTljZcoifK7NsKm6/ +|1|UXvAI3bNp+kfdZQ9chrD854v8jc=|eMKGLBQoiU72HMI90egZQtOBekM= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBE/Uba2v4/0NAdxB2xD1zLMsuW45vMFhkuWBmUWLTPsUAw7Td/1cQhLrIckUgZ07B5/8uhnzlzpLHmVVstzNVes= +|1|jH331VGzEaqAh+cC6Upa4Kvqno0=|VCyszhed6+4w8kkta7mu9MINJVk= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBByGdN/S3y/Fb6381DfAhmw+V0dnWvz95JIkjEdhmHSXrmIJg8wwqHFydKcU5m65YNXvAx5HZAwqzEtpmwOEnuk= +|1|5t2MQJugSAPxgR/Uq7xfqUmVeAQ=|zNIR8fQvFLz13Ae3TcYJ5NYQmY4= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGi1aAOgLy3ptdVntWoNNOyuexW+HiKCa1XwDYi3eYCkciS85xZczt8nNt5pOnnPwW1RbXdOZjaXoixpaXF2MDM= +|1|V931SZLrY13zJV0wLw/Xh7M9EKM=|C6hh3DgXveqT7BH0rKgJ/ZMfPRY= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGi1aAOgLy3ptdVntWoNNOyuexW+HiKCa1XwDYi3eYCkciS85xZczt8nNt5pOnnPwW1RbXdOZjaXoixpaXF2MDM= +|1|VJALaVH7G6I4o17NtdBOkotus+k=|V5JDf/CyoFXLXWNLAxF+aW1TzcA= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGi1aAOgLy3ptdVntWoNNOyuexW+HiKCa1XwDYi3eYCkciS85xZczt8nNt5pOnnPwW1RbXdOZjaXoixpaXF2MDM= +|1|bxnzxf0a2SYRY94hw6uSGvYlw8I=|+twGvPWEZoKDqBYq/mPMD59VFps= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDxEzA5tjbq6lHKcKFBIpilEmdRxu4cS95am2D5ik+CNVIqhzs4tkDEM44/JyyjJepKvDbvJ/TrwoyLqv6gJ8mP/Y/l9bo/Zq7i0bCy76PxM8/yBzMWXuJP868n0j4VES8WrT9UMmXJFtADcCo0TSoS9hDEgpwzTb8ZNVY+u0Ei/G2xw7iaPTG9PZsh4AJwoi4VJ3n+BueqaX48WDOr11iYRpYUXUjVOuTm5/T4SXSBCpTTWnLBidBB5iyQjvf3lh100q7KLhX0Y+/vJrlvhggLL7SkMorwHHHF/zYAOvGlSJzDxxDlfmzEqLzYV+PWexg2jNxhjdP5z7fxA6zkR5y7 +|1|IKEZzNCM3q/ZXb7LJkVltRyWK1k=|zmk9YbvlZmujW9AmkOXYx3nYZKM= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPewY1WIwySjYsd3YPCLcag3IQ+r5laEPfNg/yJLFs/9FVNQCHaUUijviSnMhxhcuVhD0+lXt5jdpO6XITEpf/U= +|1|0RV9LCHU7bF27jeoO1WOkCcWPNM=|lIBnPDkta6jULeCj18T88hUTLI0= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINkzBXFAEYIcuqTzgtg+kbVofmmrTljZcoifK7NsKm6/ +|1|G6QyWnlrA1GoFzBjrlUgrrtOqgk=|rm2tlcKH+kvBduRQ36K5C3DDLjg= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWYxGOsjDSX8Ilx0rtQLU74IX8W5oPDkxOnANlbCxW7N2whYxId+L07OEsX978VcSsml9gtqmZWfnPDaa34Gl9WlkldsVnhVmKR1hp6FEUV3Qa4EbRzOGy0JckPge4DiYUY2jQDZrLHtDEjVr1PJZyhy3wOz215yz2Hi2MSxv/Lq3+3AJH77CAcckUSuVh3bwANOhazuelT0p0OR3PWYFpTMwuozoBZzXzQx4hNBtt0ee9Fu57M+LM9TrOgP/O3m1AabvZAV5Ga9MKPuM4N47kaw1O2IbqR3XIQkTHx/gDKCdZ5TBtGhj2VwT3tEcdERQeJW6+Irx4wHRNduVhQ8yT +|1|Z4EQVCPy79bKLfxYL3JiI9N27bw=|TwWYdC4FWIoqeu+/JrG1wB6O08k= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBE/Uba2v4/0NAdxB2xD1zLMsuW45vMFhkuWBmUWLTPsUAw7Td/1cQhLrIckUgZ07B5/8uhnzlzpLHmVVstzNVes= +|1|SC9HxFx6cKW/9YLIDGKT2/HHG3U=|xPhnJQEkcMUDQfoWSHLE3d2cuXU= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILudAQYmgk4XJruuiQ50QTFaMlipymzYUszXCWKM4snQ diff --git a/test/aingcupu/.xscreensaver b/test/aingcupu/.xscreensaver new file mode 100644 index 0000000..e4c7ad3 --- /dev/null +++ b/test/aingcupu/.xscreensaver @@ -0,0 +1,2 @@ +mode: blank + diff --git a/test/aingcupu/a.out b/test/aingcupu/a.out new file mode 100644 index 0000000000000000000000000000000000000000..a84164bd8b199af692c5d8060ebe228dc19aa2ad GIT binary patch literal 12840 zcmeHNeQ;FQb-%kSfozMFz_KmdP&T%SksH>M16bI>(F&gYl&&xaiP(+tW7%EM7HOrf zc3Z*7HAW)C^CF^T?5QRp9ZiEL)Pu*EKO911dj&4So=z)c?2vxMieuarII%n-KxvKo zJNMnQdb`?9I&J^yjIKs|?)jaMd*8Vq@7?##)0)4*>2L@xF7c2cuCv5K>XaaTkE(#w ziCS?Teiw-OVix!!iCOYGi$H3XE6O!f<yN>LCc9dvrI$<RTQFL%3ips`vBL6^!Fd+S zR0xj*$d3Bjx<Im^9$8^}Q1#=mqHISj*>x+sZe_<*u)d;veROT~->mRlx*9SnOi7o@ z+H>&`)juhh>@@1PV8N8_9)%tC^S@h^d$CTnS12xns{c%R9PVw4Y+k<f-nP(^wn#M5 zy`;N#`I6;Jy<HvN`{Z?#f6{$;O^fUjjW>si`dop3!btvW?MQUjwMUx=|GxH4b3@fr z(bs~5BrC%|kK3M<$03U9t|M$N{%^$pv0r|tXO;HeCujfkvH3sl|IB^i-A~<s^Ohd~ zRZ}BNP6nPV#A0@X<kSCN0X$UzHwxf1ojmx@Eh_+cazXH~;Qx+1_=~{u_4C;RcxwUt z=>qu90{A)L<)TtldOWC2mD8w}i(5o_4*oNVS5Cv%1D_{u5JR)4d{FIiiI<5td7`oy z^RB%!A}3n4FpRD39Z{nz9*D&aLl}+CO-3jj3vZ2d#lx}Yrd4en(QtEMb6ePw<(EXF zk+?9nfQY8GjYcD}RB4Dr18tEVVSzS-)Z%i{6$?Z|qB9ZiLfdFIxXlQ*ZZoz7B5i~Q zTLUrC8H+^YTSQkp7Vl_-TCh7n&MjAlLC#c<+XIoPFv6igJOI7TU0oIq2#q}KZ>(Qs z+~-}Isom#YhA7Y~a>_p|BviLnms2=we@>Br0*9|65}89Q?!3Yhw?(caKNl@0nf;LW zuTDs*bgKQ1@oI&asPSc-`Lhc>(vJ2bUhf2q*>L;*ownijDKKHfxefAj#fGb{5G)21 zPCgtGv3>?^I7NxekPYWOlw=2OxP3o8Y{Rc-C!j}d_zgBZWy4Et_$eEX0m+n68*bmk z^xjWO^kngpN{`TYr{d1ZQN8!gk`o!b$z{iG@rcPqKf!O=!aCH5ZzcKo*d)rLBg9ik z#z!UpBJngd<0;AiHSrXh@xzk;F7XtS@gd27hj<#Y@d3#{OFV^Ue5d4h5l>+s@09!w z;%UgnH)ZU%41kxV=2wm8J5TE7hkEZv6Kk9O{lyPJSMQ&50xtCam7k;K$(tJB<6_yu z)e?$;Y0>+O1EBhfE4q0uek($953vZzoQ;!XTfAip`=tMkCnyS2JX}_hV*j!`q?@X1 zu-AvLxpZ?vA5MQ&cbwGUxfZX4!(ZHNIV>fIh5YSY`7@}A#Jzg&${$g!h5A#fCs!T= zm!5-5PV4wNS^Nrk2X$vBb?i4M;1btE>Kn(mK!a+!`BYjr6Jz>O3Kh!Jx~W|m(I%)q zqRGX1;qjz)Q4fylNo`DbjF!DBdM6xxsrW+#59<9De@FfyO+%_D5hCqM&ld^_;T|GW zo9NXpI+De6(a9Cs#h(31Z9*U1c!E0R+u&>QHLu6a>qP(dn2ElSo-A6lm|8Klvo)#Y zf`7URp$eYRd(#d;hpB2F|FP_cIo4>tnJhjkH85GvL!;#=_1}D+CWt<=yBkF621gss z_k6F*`k+2M=F<Du&OS<8mh|ixeS_-9r2O(_eOszruX<BA$MoLRYz&@DnwVNDS=^Y_ z+$l8IXrA`{t+b^2sL$%%;4#ZPdgT~>-RAvLmUp_)(Gl$+*<a9-+QA34zC;CLoJzJF z)Ptw>k)ly4!@S90uhXERU<{XHAX-LYrw^Via*AH<AY%PO1;zSc&*2g602z;e1*?+u z$cJveubU(3fBSrL($o%F)`z6EV?-O0>R0h=35N8+vR8|oavqfR{Tz4_HV84sq3q@3 zm=n9n0)F@Cj^jxU`pKeQyHjO-M=ThZ0sYf@vSQRW^;R4&>-+XJ1?d_QCD+4xf2qy& zuyXwj&BIcs6^kM1xM);gG5l161#w&dBUfhWXs<Se_=Rtz_zjiqy?kwQvR69*XdNKT z!4=wpvb{%uj%fSo!Y|ZX?e14yNw)Oq!MF9`ySRjR(9`Eh386%E-ZpU&`}IMybXTvo zA1){7Q7ij<UK`N{r7x^ASQm`#AYxmwE2#~dC$ZN&gN^hknWej~QYQ!D@g?bTu;)j9 z^P>TD>}*K?vbCJz#p(S})BD3?-|#)*+vs~zt-!DI8hqxHJ#c0|wI930fPERBs=<^Q z)6LzFVaCDf0M-O<6yg}&oU9dv>EwlXv-nHsKyuC(>35k2zj|<ZYUK{Y2W`|?m#rYw zcarzdx5hbmQmJAILsi?Uk7(2-D4m35&WiRYwVnQC(;mP1wm&JCyFdATTJDWyFQ4|C zXF*bW|5u!TGu3$cL*4OH-Mk9Fjpj+;8_Fqm58rE4_nTLte#UR6K@eNAnrOWI5nH`O zJ)qe>Jm$o{;j-@=g;zHAjI>jlVBdJ-LEk@!^ooC{iF1hBys(KEy`H`gu!&3lKp+0p zd2HeC3y+$oE}tL1T5O&gzOu0DxH-Bl6{;FGPhldZl1<naK1()XroV+w{iE*q%q)7= zTK6xNTkHO%UhNR3!(U1EP|x#vf6IX0kI82({n!;bkg3<{UQK&Jr<@uqYr&_NL8!Kk z3xBLO1k7^t=lbxkr`Fxu$(92&<;z}vA2T~yG$7|BJr7xP@`KAXCuuF+DmyXM^V%CU zU(z2-0j(%Jpkw+U==olHp6t&Hk74wrwVvE~3Nv@Uyb)mLeh3@P+_P%t`V6|)2_L3z zqxn<1gZTRw&6*=`-AjnB_nDtJnwR`l=j1cZ@aL}dLUOVDS8-3xKlA+-qwY5^tu{aP zO;-Gi-h0BKulU!*d3xsg#zt$2_>2<+Q}_4Z;895Wg9benIq=lEDCCKEcov1O7fpe9 zEYkgehakvqcRi>>rv(3JE=^882O38gegfJD8Uo#it3CsICr1Aw=nMZjIXNEz3?U4D z&@-UVfmT39#j#_ZaCDbDZZDl(GT@k9PWXKMSHj;Pl7cGv^@X?#a?-Cwe}+icUEbiX z{94%!e_paveD$^m@A>jw^4LfAczh6tp-27aLbgxf{|MTX+nUc^{!QnqIkTJt=#k~W z2lBgdUAyQhkL7=~&(&YFx43tfE9Qdcmms3M(lh^oc+k@!>#hBkYhO`+@!nazvt2)Q zN}rI*zMKIq$F3VDpx#~nEoZ&Ea-U0cd-{v&-HZ1Y>+b4r&eGkry|bI#buo9X&t2_v zFRpicpa=bWcZocoP<(6Q$9`TQmosH10y7bqiNH(*W+E^Xftd)*L|`TY|6e1(@6-AH zIUads$))tpo=T}jGT%k`T`_+TxmC&e`{nJ5=d;0Wis$$DbWWhc^50&Y>>!@M>lG7& za=6H%{O)^HJ(OqOd8-cdyY5O$UEHK76FO>8=~nNx`Pu%g1!vAr{LcRtg`ZLlGhU*2 z?srP*@w<O+{|^+-dN{_&>qB=XgyV(e&#DW>F^=WZ5^r23e^|+J{F6LihjRaaMl#=z zb3DGUF8pIfFDW`pUD(Zveo@ioiZ&>^LD3wyznA6jHxI8`^?+w_%jQHhp77l7UFxk~ zQj?He&0o~idaIXuYpN{#_qxQ_CP(J`zFpgeGdh0{&&FLM&J)EZaN&zG&r=%=|HXpm zXEr`7Gmo?J*@DM68!r(&FS7CL1kb;0{CdIjG#j7(9h2lPtmYI?Xq$mc%n_UNjF(He zGx--bb@<8iJyiNH7o+qpJEyqB+)Vy}UF5<S*V?&u#HzdSRh{<}yVQl%%KJz*eiQN{ zJa$OdUE=1<y0;5m_%19w`ShoM7bZKG;9YLY3vE9|;xqZ4atgKfODEzsloL<-mPYtk z4*ms&^M1^}?nlLe@7nzRn%bk%fPY7xIJ5&N|GdAGE|u;0cjSrZAn<(sFLYh|rJs4? zxp}DMlze_(lsePLonEOr@{G&7Qvb$j<NJ}qbLYcl>1X=5pTh-s@{KR>JY5$R5_gL- zbz_n5rr>*l!c%HK^L8+<aL!BOcWX<4dt_g;f9TsvzIN}H`1EzOrhtC10KTgLo&=t+ zKR*OM7jL_GovPcccva$+qQYZYG5!|te13ijoboGj*U<#<JF-I{xl#mhu5)@mMkVlh zn72FBja0rnghh?g=lcP>d`RjuH$~SeKWo)^$#;PeZw5~JA-s;*B3i)Dvjy<KEP#Ii zhxzhP=suBe++PHqFE8a4sqYrwRu5S6-6woMA@Mx>c`z35iYK;g@dm|Iril@6H-eOF zLTMqP4r6Ou$L2tr5sG)jx{N@gTLe4WJKMtXaL9ZA@)h^zSCSbhMj#doY)1k}JhokI zi3QrjMkvwVz8xku&Y+Z)EY%?TV;BwVd`+66tyxXUFa~m~3{6*{zIvT79`-*{@ADgv zG&HQ&nvG^(y<a26EN`J~K<3s6WA)=}d`*q3RB}sQ9cQOdPD&{9C)<$iLOColxh2?@ zu(D}#(sL+nCfib_%w&VpQe?8lnG~Jho$d1oa%n=5sFCOjhs2terh081uG`q4t!r*v zrLF&6`9KCG<ZvoZR{BnMPYeSYMk?A{!|@H_SUlYQ^+>$6DH2_c45UCbh`b{s)YW0M zB5epsNLEfzu9r;EXdGZ*O9Y}`*m8`fESF|yD9OB}DJhML$}5sNM#9^*y*(b-42rBI zNn5#wWTkMdQ+T5t@vzrd-?$_m*s8d#(S&z%B7!8pNJw~zYYlX@3U6q86#gt4k6DsG z3&*-59nmbtfGien3y^`Tb+*NYS6-(VRqxggu!tIdW&V{n)*-W@yx~?g-&;d)!klGl zO?=CO>u4d+9tomPluYGC2!$7mt{n@Bx1RqMrSlcGSlsKaQmZOV`Fy3sQkUyQ@5Dbn z0<t|n|1$MJW-ojnV5|leyFEWAGrfxy70tC@4IH12I=Fq>C#f*4wb)E<ZO-G8SOYno z`PiPHyP1wra8T&DMpd@w^VtSqbe3X!K4&t`4VZEV3#&W{LT9#&y*j7y^Za6^r{GLG ztiKI%Is-D#&-+ZPm3?mi6)bk3LNR4~J{K@eDMfBS_xk&keZA7-^8?efHv5}V&$ZtN zjAEjW!<qL2L+V_CCxWb!JN_o5c6&aLFdfRWrhBDTm_7&AZof%&kSX_<-7wGe`#JXf z9LIDWD=G)vF8ljIjy=BzVao3VSU>mr|3=yK`0;ZXQ+|I^$o`ca``r9&KN~8V+dic? zQ2e-kK7TRYL_%B135R$KGCIrf`v`t6=e+G)edd|I2ir26J)h?~7XU<IJ&T*-8UF<Y zH21iDKKF56JYN{kPqyQ6q;n5lV#Z#*7wTRJ5M_@=GQVuk^gJYX`^@vN$1>q|*a6!y zKY<Ei+&({-BHcljT>aef`z^Gn{c1}+^UL;p9$^9LQn6DWdrM;d)_E*Cp#n$qkbH4} nc>kpN&3(5ltl#RpE&6JXb8eS)=c1C&{^Kf3;~Fa}nrr`G_wd+- literal 0 HcmV?d00001 diff --git a/test/aingcupu/all b/test/aingcupu/all new file mode 100644 index 0000000..155d756 --- /dev/null +++ b/test/aingcupu/all @@ -0,0 +1,3 @@ +./comp +./share +./run $1 $2 diff --git a/test/aingcupu/asd b/test/aingcupu/asd new file mode 100644 index 0000000000000000000000000000000000000000..580c8afdf71ca9773dce7015333a82aaef9bfd14 GIT binary patch literal 13224 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 Npd7!%f{Nzq|3A5vjnx1E literal 0 HcmV?d00001 diff --git a/test/aingcupu/c.c b/test/aingcupu/c.c new file mode 100644 index 0000000..2a08db5 --- /dev/null +++ b/test/aingcupu/c.c @@ -0,0 +1,144 @@ +#include "mpi.h" +#include <stdio.h> +#include <stdbool.h> +#include <stdlib.h> +#include <limits.h> + +int N = 1000; + +int getmin_index(long **graph, bool pickedVertices[N], int sourceVertex) { + int minDistance = CHAR_MAX; + int min_index = -1; + + for (int j = 0; j < N; j++) { + if (!pickedVertices[j] && graph[sourceVertex][j] <= minDistance) { + minDistance = graph[sourceVertex][j]; + min_index = j; + } + } + return min_index; +} + +void print(long **graph){ + printf("Matrix: \n"); + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + printf("%ld ", graph[i][j]); + } + printf("\n"); + } +} + +void dijkstra(long** graph, int sourceVertex) { + + // Distance from single source to all of the nodes + bool pickedVertices[N]; + + for (int vertex = 0; vertex < N; vertex++) { + pickedVertices[vertex] = false; + } + + for (int i = 0; i < N - 1; i++) { + // Get minimum distance + int min_index = getmin_index(graph, pickedVertices, sourceVertex); + + // Mark the vertice as picked + pickedVertices[min_index] = true; + + // Update distance value + for (int vertex = 0; vertex < N; vertex++) { + if ((!pickedVertices[vertex]) && + (graph[min_index][vertex]) && + (graph[sourceVertex][min_index] != INT_MAX) && + (graph[sourceVertex][min_index] + graph[min_index][vertex] < graph[sourceVertex][vertex])) { + + graph[sourceVertex][vertex] = graph[sourceVertex][min_index] + graph[min_index][vertex]; + } + } + } + return; +} + +int main(int argc, char *argv[]) { + + // Get matrix size from argument vector in , convert to int + N = strtol(argv[1], NULL, 10); + + long** graph; + graph = (long**) malloc(sizeof(long*) * N); + for (int i = 0; i < N; ++i) + { + graph[i] = (long*) malloc(sizeof(long) * N); + } + int numtasks, rank, dest, source, rc, count, tag=1; + double start_time, end_time, total_time; + + srand(13517115); + // Fill the matrix with rand() function + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + // Mod by 100 so the result won't be too big. + graph[i][j] = rand() % 100; + } + } + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (!(i == j || graph[i][j])){ + graph[i][j] = INT_MAX; + } + } + } + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (i == j){ + graph[i][j] = 0; + } + } + } + + MPI_Status Stat; + MPI_Init(&argc,&argv); + MPI_Comm_size(MPI_COMM_WORLD, &numtasks); + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Barrier(MPI_COMM_WORLD); + start_time = MPI_Wtime(); + + int jobs = N/(numtasks-1); + long* dataRecv; + int destinationRank = 0; + count = 0; + if (!rank){ + dataRecv = (long*) malloc(sizeof(long) * N*jobs); + while(count<numtasks-1){ + MPI_Recv(dataRecv, N*jobs, MPI_LONG, MPI_ANY_SOURCE, tag, MPI_COMM_WORLD, &Stat); + printf("Received from process %d ", Stat.MPI_SOURCE); + for (int i = 0; i < N*jobs; ++i) + { + graph[Stat.MPI_SOURCE*jobs-jobs][i] = dataRecv[i]; + } + count++; + } + free(dataRecv); + } + else{ + for (int i = rank*jobs-jobs; i < rank*jobs; ++i) + { + dijkstra(graph, i); + // printf("Print job %d from rank %d\n", i, rank); + } + MPI_Send(graph[rank*jobs-jobs], N*jobs, MPI_LONG, destinationRank, tag, MPI_COMM_WORLD); + } + + MPI_Barrier(MPI_COMM_WORLD); + end_time = MPI_Wtime(); + total_time = end_time - start_time; + MPI_Finalize(); + if (rank == 0) { + printf("%f\n", total_time); + } + for (int i = 0; i < N; ++i) + { + free(graph[i]); + } + free(graph); +} diff --git a/test/aingcupu/comp b/test/aingcupu/comp new file mode 100644 index 0000000..e4d3168 --- /dev/null +++ b/test/aingcupu/comp @@ -0,0 +1 @@ +mpicc c.c -o asd diff --git a/test/aingcupu/cop b/test/aingcupu/cop new file mode 100644 index 0000000..46104c3 --- /dev/null +++ b/test/aingcupu/cop @@ -0,0 +1,2 @@ +rm c.c +nano c.c diff --git a/test/aingcupu/hellompi.c b/test/aingcupu/hellompi.c new file mode 100644 index 0000000..af1dd57 --- /dev/null +++ b/test/aingcupu/hellompi.c @@ -0,0 +1,17 @@ + +#include "mpi.h" +#include <stdio.h> +int main(int argc,char *argv[]) { + int numtasks, rank; + char processor_name[MPI_MAX_PROCESSOR_NAME]; + int name_len; + MPI_Status Stat; + MPI_Init(&argc,&argv); + MPI_Comm_size(MPI_COMM_WORLD, &numtasks); + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Get_processor_name(processor_name, &name_len); + printf("Hello from processor %s, task %d of %d, \n", + processor_name, rank, numtasks); + MPI_Finalize(); +} + diff --git a/test/aingcupu/mpi_hostfile b/test/aingcupu/mpi_hostfile new file mode 100644 index 0000000..c2bdfe6 --- /dev/null +++ b/test/aingcupu/mpi_hostfile @@ -0,0 +1,7 @@ +#daftar host +localhost +167.205.35.151 +167.205.35.152 +167.205.35.153 +167.205.35.154 +167.205.35.155 diff --git a/test/aingcupu/run b/test/aingcupu/run new file mode 100644 index 0000000..11955d4 --- /dev/null +++ b/test/aingcupu/run @@ -0,0 +1 @@ +mpirun -np $1 --hostfile mpi_hostfile asd $2 diff --git a/test/aingcupu/share b/test/aingcupu/share new file mode 100644 index 0000000..79186e8 --- /dev/null +++ b/test/aingcupu/share @@ -0,0 +1,5 @@ +scp asd 13517109@167.205.35.151:~ +scp asd 13517109@167.205.35.152:~ +scp asd 13517109@167.205.35.153:~ +scp asd 13517109@167.205.35.154:~ +scp asd 13517109@167.205.35.155:~ diff --git a/test/br.c b/test/br.c new file mode 100644 index 0000000..3d5a032 --- /dev/null +++ b/test/br.c @@ -0,0 +1,65 @@ +// Copyright 2011 www.mpitutorial.com +// Comparison of MPI_Bcast with the my_bcast function +#include <stdio.h> +#include <stdlib.h> +#include <mpi.h> +#include <assert.h> +void my_bcast(void* data, int count, MPI_Datatype datatype, int root, + MPI_Comm communicator) { + int world_rank; + MPI_Comm_rank(communicator, &world_rank); + int world_size; + MPI_Comm_size(communicator, &world_size); + if (world_rank == root) { + // If we are the root process, send our data to everyone + int i; + for (i = 0; i < world_size; i++) { + if (i != world_rank) { + MPI_Send(data, count, datatype, i, 0, communicator); + } + } + } else { + // If we are a receiver process, receive the data from the root + MPI_Recv(data, count, datatype, root, 0, communicator, MPI_STATUS_IGNORE); + } +} +int main(int argc, char** argv) { + if (argc != 3) { + fprintf(stderr, "Usage: compare_bcast num_elements num_trials\n"); + exit(1); + } + int num_elements = atoi(argv[1]); + int num_trials = atoi(argv[2]); + MPI_Init(NULL, NULL); + int world_rank; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + double total_my_bcast_time = 0.0; + double total_mpi_bcast_time = 0.0; + int i; + int* data = (int*)malloc(sizeof(int) * num_elements); + assert(data != NULL); + for (i = 0; i < num_trials; i++) { + // Time my_bcast + // Synchronize before starting timing + MPI_Barrier(MPI_COMM_WORLD); + total_my_bcast_time -= MPI_Wtime(); + my_bcast(data, num_elements, MPI_INT, 0, MPI_COMM_WORLD); + // Synchronize again before obtaining final time + MPI_Barrier(MPI_COMM_WORLD); + total_my_bcast_time += MPI_Wtime(); + // Time MPI_Bcast + MPI_Barrier(MPI_COMM_WORLD); + total_mpi_bcast_time -= MPI_Wtime(); + MPI_Bcast(data, num_elements, MPI_INT, 0, MPI_COMM_WORLD); + MPI_Barrier(MPI_COMM_WORLD); + total_mpi_bcast_time += MPI_Wtime(); + } + // Print off timing information + if (world_rank == 0) { + printf("Data size = %d, Trials = %d\n", num_elements * (int)sizeof(int), + num_trials); + printf("Avg my_bcast time = %lf\n", total_my_bcast_time / num_trials); + printf("Avg MPI_Bcast time = %lf\n", total_mpi_bcast_time / num_trials); + } + MPI_Finalize(); +} diff --git a/test/c b/test/c new file mode 100644 index 0000000000000000000000000000000000000000..4f07d5df20a431df6420062973c3b1c1647f3542 GIT binary patch literal 12744 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 literal 0 HcmV?d00001 diff --git a/test/c.c b/test/c.c new file mode 100644 index 0000000..3d6abc9 --- /dev/null +++ b/test/c.c @@ -0,0 +1,108 @@ +#include "mpi.h" +#include <stdio.h> +#include <stdbool.h> +#include <stdlib.h> +#include <limits.h> + +int N = 5000; + +int getmin_index(short **graph, bool pickedVertices[N], int sourceVertex) { + int minDistance = CHAR_MAX; + int min_index = -1; + + for (int j = 0; j < N; j++) { + if (!pickedVertices[j] && graph[sourceVertex][j] <= minDistance) { + minDistance = graph[sourceVertex][j]; + min_index = j; + } + } + return min_index; +} + +void print(short **graph){ + printf("Matrix: \n"); + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + printf("%d ", graph[i][j]); + } + printf("\n"); + } +} + +void dijkstra(short **graph, int sourceVertex) { + + // Distance from single source to all of the nodes + bool pickedVertices[N]; + + for (int vertex = 0; vertex < N; vertex++) { + pickedVertices[vertex] = false; + } + + for (int i = 0; i < N - 1; i++) { + // Get minimum distance + int min_index = getmin_index(graph, pickedVertices, sourceVertex); + + // Mark the vertice as picked + pickedVertices[min_index] = true; + + // Update distance value + for (int vertex = 0; vertex < N; vertex++) { + if ((!pickedVertices[vertex]) && + (graph[min_index][vertex]) && + (graph[sourceVertex][min_index] != INT_MAX) && + (graph[sourceVertex][min_index] + graph[min_index][vertex] < graph[sourceVertex][vertex])) { + + graph[sourceVertex][vertex] = graph[sourceVertex][min_index] + graph[min_index][vertex]; + } + } + } + return; +} + +int main(int argc, char *argv[]) { + + short** graph; + graph = (short**) malloc(sizeof(short*) * 5000); + for (int i = 0; i < 5000; ++i) + { + graph[i] = (short*) malloc(sizeof(short) * 5000); + } + + + // Get matrix size from argument vector in , convert to int + printf("pass\n"); + srand(13517115); + // Fill the matrix with rand() function + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + // Mod by 100 so the result won't be too big. + graph[i][j] = 1; + } + } + /*for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (!(i == j || graph[i][j])){ + graph[i][j] = CHAR_MAX; + } + } + } + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (i == j){ + graph[i][j] = 0; + } + } + }*/ + + /*for (int i = 0; i < N; ++i) + { + dijkstra(graph, i); + printf("%d\n", i); + }*/ + print(graph); + for (int i = 0; i < 5000; ++i) + { + free(graph[i]); + } + free(graph); +} \ No newline at end of file diff --git a/test/comm.c b/test/comm.c new file mode 100644 index 0000000..30820d4 --- /dev/null +++ b/test/comm.c @@ -0,0 +1,31 @@ +// Copyright 2015 www.mpitutorial.com +#include <stdlib.h> +#include <stdio.h> +#include <mpi.h> +int main(int argc, char **argv) { + MPI_Init(NULL, NULL); + int world_rank, world_size; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + MPI_Comm_size(MPI_COMM_WORLD, &world_size); + MPI_Group world_group; + MPI_Comm_group(MPI_COMM_WORLD, &world_group); + int n = 7; + const int ranks[7] = {1, 2, 3, 5, 7, 11, 13}; + MPI_Group prime_group; + MPI_Group_incl(world_group, 7, ranks, &prime_group); + MPI_Comm prime_comm; + MPI_Comm_create_group(MPI_COMM_WORLD, prime_group, 0, &prime_comm); + int prime_rank = -1, prime_size = -1; + if (MPI_COMM_NULL != prime_comm) { +MPI_Comm_rank(prime_comm, &prime_rank); +MPI_Comm_size(prime_comm, &prime_size); + } + printf("WORLD RANK/SIZE: %d/%d --- PRIME RANK/SIZE: %d/%d\n", world_rank, +world_size, prime_rank, prime_size); + MPI_Group_free(&world_group); + MPI_Group_free(&prime_group); + if (MPI_COMM_NULL != prime_comm) { +MPI_Comm_free(&prime_comm); + } + MPI_Finalize(); +} diff --git a/test/reduce.c b/test/reduce.c new file mode 100644 index 0000000..3e346dc --- /dev/null +++ b/test/reduce.c @@ -0,0 +1,47 @@ +// Copyright 2013 www.mpitutorial.com +#include <stdio.h> +#include <stdlib.h> +#include <mpi.h> +#include <assert.h> +float *create_rand_nums(int num_elements) { + float *rand_nums = (float *)malloc(sizeof(float) * num_elements); + assert(rand_nums != NULL); + int i; + for (i = 0; i < num_elements; i++) { +rand_nums[i] = (rand() / (float)RAND_MAX); + } + return rand_nums; +} +int main(int argc, char** argv) { + if (argc != 2) { +fprintf(stderr, "Usage: avg num_elements_per_proc\n"); +exit(1); + } + int num_elements_per_proc = atoi(argv[1]); + MPI_Init(NULL, NULL); + int world_rank; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + int world_size; + MPI_Comm_size(MPI_COMM_WORLD, &world_size); + srand(time(NULL)*world_rank); + float *rand_nums = NULL; + rand_nums = create_rand_nums(num_elements_per_proc); + float local_sum = 0; + int i; + for (i = 0; i < num_elements_per_proc; i++) { +local_sum += rand_nums[i]; + } + printf("Local sum for process %d - %f, avg = %f\n", world_rank, local_sum, +local_sum / num_elements_per_proc); + float global_sum; + MPI_Reduce(&local_sum, &global_sum, 1, MPI_FLOAT, MPI_SUM, 0, +MPI_COMM_WORLD); + if (world_rank == 0) { +printf("Total sum = %f, avg = %f\n", global_sum, global_sum / +(world_size * num_elements_per_proc)); + } + // Clean up + free(rand_nums); + MPI_Barrier(MPI_COMM_WORLD); + MPI_Finalize(); +} diff --git a/test/sg.c b/test/sg.c new file mode 100644 index 0000000..b86351f --- /dev/null +++ b/test/sg.c @@ -0,0 +1,65 @@ +// Copyright 2012 www.mpitutorial.com +// Program yang menghitung rata-rata dari array secara paralel menggunakan Scatter dan Gather. +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <mpi.h> +#include <assert.h> +float *create_rand_nums(int num_elements) { + float *rand_nums = (float *)malloc(sizeof(float) * num_elements); + assert(rand_nums != NULL); + int i; + for (i = 0; i < num_elements; i++) { +rand_nums[i] = (rand() / (float)RAND_MAX); + } + return rand_nums; +} +float compute_avg(float *array, int num_elements) { + float sum = 0.f; + int i; + for (i = 0; i < num_elements; i++) { +sum += array[i]; + } + return sum / num_elements; +} +int main(int argc, char** argv) { + if (argc != 2) { +fprintf(stderr, "Usage: avg num_elements_per_proc\n"); +exit(1); + } + int num_elements_per_proc = atoi(argv[1]); + srand(time(NULL)); + MPI_Init(NULL, NULL); + int world_rank; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + int world_size; + MPI_Comm_size(MPI_COMM_WORLD, &world_size); + float *rand_nums = NULL; + if (world_rank == 0) { +rand_nums = create_rand_nums(num_elements_per_proc * world_size); + } + float *sub_rand_nums = (float *)malloc(sizeof(float) * +num_elements_per_proc); + assert(sub_rand_nums != NULL); + MPI_Scatter(rand_nums, num_elements_per_proc, MPI_FLOAT, sub_rand_nums, +num_elements_per_proc, MPI_FLOAT, 0, MPI_COMM_WORLD); + float sub_avg = compute_avg(sub_rand_nums, num_elements_per_proc); + float *sub_avgs = NULL; + if (world_rank == 0) { +sub_avgs = (float *)malloc(sizeof(float) * world_size); +assert(sub_avgs != NULL); + } + MPI_Gather(&sub_avg, 1, MPI_FLOAT, sub_avgs, 1, MPI_FLOAT, 0, +MPI_COMM_WORLD); + if (world_rank == 0) { +float avg = compute_avg(sub_avgs, world_size); +printf("Avg of all elements is %f\n", avg); + } + if (world_rank == 0) { +free(rand_nums); +free(sub_avgs); + } + free(sub_rand_nums); + MPI_Barrier(MPI_COMM_WORLD); + MPI_Finalize(); +} -- GitLab