Refresh the report and better commenting
@ -165,7 +165,7 @@ void knnsearch(MatrixD& C, MatrixD& Q, size_t num_slices, size_t k, size_t m, Ma
|
|||||||
Q.columns());
|
Q.columns());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Intermediate results
|
// Initialize results
|
||||||
for (size_t i = 0; i < dst.rows(); ++i) {
|
for (size_t i = 0; i < dst.rows(); ++i) {
|
||||||
for (size_t j = 0; j < dst.columns(); ++j) {
|
for (size_t j = 0; j < dst.columns(); ++j) {
|
||||||
dst.set(std::numeric_limits<DstType>::infinity(), i, j);
|
dst.set(std::numeric_limits<DstType>::infinity(), i, j);
|
||||||
@ -201,11 +201,9 @@ void knnsearch(MatrixD& C, MatrixD& Q, size_t num_slices, size_t k, size_t m, Ma
|
|||||||
});
|
});
|
||||||
|
|
||||||
#else
|
#else
|
||||||
for (size_t qi = 0; qi < num_slices; ++qi) {
|
|
||||||
for (size_t qi = 0; qi < num_slices; ++qi) {
|
for (size_t qi = 0; qi < num_slices; ++qi) {
|
||||||
worker_body (corpus_slices, query_slices, idx, dst, qi, num_slices, corpus_slice_size, query_slice_size, k, m);
|
worker_body (corpus_slices, query_slices, idx, dst, qi, num_slices, corpus_slice_size, query_slice_size, k, m);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,17 +5,17 @@ ser_sift_acc = [ 4395 4365 4384 4315 4295 4246 ];
|
|||||||
ser_mnist_ser_acc = [ 7936 7924 7886 7903 7844 7801 ];
|
ser_mnist_ser_acc = [ 7936 7924 7886 7903 7844 7801 ];
|
||||||
|
|
||||||
omp_sift_acc = [
|
omp_sift_acc = [
|
||||||
4093 4098 4040 4001 3980 3937
|
1162 1157 1148 1138 1134 1107
|
||||||
];
|
];
|
||||||
omp_mnist_acc = [
|
omp_mnist_acc = [
|
||||||
7575 7463 7389 7416 7321 7303
|
2044 2036 2028 2007 1993 1973
|
||||||
];
|
];
|
||||||
|
|
||||||
cilk_sift_acc = [
|
cilk_sift_acc = [
|
||||||
3718 3739 3673 3668 3608 3557
|
1148 1133 1127 1096 1079 1057
|
||||||
];
|
];
|
||||||
cilk_mnist_acc = [
|
cilk_mnist_acc = [
|
||||||
7064 7071 7035 6948 6962 6913
|
2008 2024 1974 1965 1959 1947
|
||||||
];
|
];
|
||||||
|
|
||||||
pth_sift_acc = [
|
pth_sift_acc = [
|
||||||
|
@ -5,17 +5,17 @@ ser_sift_threads = [ 4418 4418 4418 4418 4418 4418 4418 ];
|
|||||||
ser_mnist_ser_threads = [ 7924 7924 7924 7924 7924 7924 7924 ];
|
ser_mnist_ser_threads = [ 7924 7924 7924 7924 7924 7924 7924 ];
|
||||||
|
|
||||||
omp_sift_th = [
|
omp_sift_th = [
|
||||||
4469 4283 4096 3822 4060 4241 5193
|
4374 2194 1148 751 724 637 596
|
||||||
];
|
];
|
||||||
omp_mnist_th = [
|
omp_mnist_th = [
|
||||||
8053 7806 7465 6828 7662 8013 8123
|
7918 3941 2031 1395 1415 1330 1292
|
||||||
];
|
];
|
||||||
|
|
||||||
cilk_sift_th = [
|
cilk_sift_th = [
|
||||||
4225 4090 3696 3122 3860 4141 5103
|
4183 2076 1114 886 706 742 636
|
||||||
];
|
];
|
||||||
cilk_mnist_th = [
|
cilk_mnist_th = [
|
||||||
7744 7206 6965 6628 7362 7813 8123
|
7745 3883 2020 1454 1436 1342 1292
|
||||||
];
|
];
|
||||||
|
|
||||||
pth_sift_th = [
|
pth_sift_th = [
|
||||||
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 KiB |
@ -30,62 +30,62 @@ hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1 -c mtx/mni
|
|||||||
|
|
||||||
# OMP-sift over acc
|
# OMP-sift over acc
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 100 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 100 -k 100 -t
|
||||||
[Timing]: knnsearch: 4093 [msec]
|
[Timing]: knnsearch: 1162 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 80 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 80 -k 100 -t
|
||||||
[Timing]: knnsearch: 4098 [msec]
|
[Timing]: knnsearch: 1157 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 60 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 60 -k 100 -t
|
||||||
[Timing]: knnsearch: 4040 [msec]
|
[Timing]: knnsearch: 1148 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 40 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 40 -k 100 -t
|
||||||
[Timing]: knnsearch: 4001 [msec]
|
[Timing]: knnsearch: 1138 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 20 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 20 -k 100 -t
|
||||||
[Timing]: knnsearch: 3980 [msec]
|
[Timing]: knnsearch: 1134 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 10 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 10 -k 100 -t
|
||||||
[Timing]: knnsearch: 3937 [msec]
|
[Timing]: knnsearch: 1107 [msec]
|
||||||
|
|
||||||
# OMP-mnist over acc
|
# OMP-mnist over acc
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 100 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 100 -k 100 -t
|
||||||
[Timing]: knnsearch: 7575 [msec]
|
[Timing]: knnsearch: 2044 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 80 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 80 -k 100 -t
|
||||||
[Timing]: knnsearch: 7463 [msec]
|
[Timing]: knnsearch: 2036 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 60 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 60 -k 100 -t
|
||||||
[Timing]: knnsearch: 7389 [msec]
|
[Timing]: knnsearch: 2028 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 40 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 40 -k 100 -t
|
||||||
[Timing]: knnsearch: 7416 [msec]
|
[Timing]: knnsearch: 2007 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 20 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 20 -k 100 -t
|
||||||
[Timing]: knnsearch: 7321 [msec]
|
[Timing]: knnsearch: 1993 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 10 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 10 -k 100 -t
|
||||||
[Timing]: knnsearch: 7303 [msec]
|
[Timing]: knnsearch: 1973 [msec]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# CILK-sift over acc
|
# CILK-sift over acc
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 100 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 100 -k 100 -t
|
||||||
[Timing]: knnsearch: 4218 [msec]
|
[Timing]: knnsearch: 1148 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 80 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 80 -k 100 -t
|
||||||
[Timing]: knnsearch: 4239 [msec]
|
[Timing]: knnsearch: 1133 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 60 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 60 -k 100 -t
|
||||||
[Timing]: knnsearch: 4173 [msec]
|
[Timing]: knnsearch: 1127 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 40 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 40 -k 100 -t
|
||||||
[Timing]: knnsearch: 4168 [msec]
|
[Timing]: knnsearch: 1096 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 20 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 20 -k 100 -t
|
||||||
[Timing]: knnsearch: 4108 [msec]
|
[Timing]: knnsearch: 1079 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 10 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -a 10 -k 100 -t
|
||||||
[Timing]: knnsearch: 4057 [msec]
|
[Timing]: knnsearch: 1057 [msec]
|
||||||
|
|
||||||
|
|
||||||
# CILK-mnist over acc
|
# CILK-mnist over acc
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 100 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 100 -k 100 -t
|
||||||
[Timing]: knnsearch: 7864 [msec]
|
[Timing]: knnsearch: 2008 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 80 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 80 -k 100 -t
|
||||||
[Timing]: knnsearch: 7871 [msec]
|
[Timing]: knnsearch: 2024 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 60 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 60 -k 100 -t
|
||||||
[Timing]: knnsearch: 7835 [msec]
|
[Timing]: knnsearch: 1974 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 40 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 40 -k 100 -t
|
||||||
[Timing]: knnsearch: 7748 [msec]
|
[Timing]: knnsearch: 1965 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 20 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 20 -k 100 -t
|
||||||
[Timing]: knnsearch: 7762 [msec]
|
[Timing]: knnsearch: 1959 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 10 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -a 10 -k 100 -t
|
||||||
[Timing]: knnsearch: 7713 [msec]
|
[Timing]: knnsearch: 1947 [msec]
|
||||||
|
|
||||||
|
|
||||||
# Pthreads-sift over acc
|
# Pthreads-sift over acc
|
||||||
|
@ -5,67 +5,69 @@ hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1 -c mtx/mni
|
|||||||
|
|
||||||
# OMP-sift over threads
|
# OMP-sift over threads
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 1 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 1 -k 100 -t
|
||||||
[Timing]: knnsearch: 4469 [msec]
|
[Timing]: knnsearch: 4374 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 2 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 2 -k 100 -t
|
||||||
[Timing]: knnsearch: 4283 [msec]
|
[Timing]: knnsearch: 2194 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 4 -k 100 -t
|
||||||
[Timing]: knnsearch: 4096 [msec]
|
[Timing]: knnsearch: 1148 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 6 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 6 -k 100 -t
|
||||||
[Timing]: knnsearch: 3822 [msec]
|
[Timing]: knnsearch: 751 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 8 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 8 -k 100 -t
|
||||||
[Timing]: knnsearch: 4060 [msec]
|
[Timing]: knnsearch: 724 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 10 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 10 -k 100 -t
|
||||||
[Timing]: knnsearch: 4241 [msec]
|
[Timing]: knnsearch: 637 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 12 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 12 -k 100 -t
|
||||||
[Timing]: knnsearch: 5193 [msec]
|
[Timing]: knnsearch: 596 [msec]
|
||||||
|
|
||||||
# OMP-mnist over threads
|
# OMP-mnist over threads
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 1 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 1 -k 100 -t
|
||||||
[Timing]: knnsearch: 8053 [msec]
|
[Timing]: knnsearch: 7918 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 2 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 2 -k 100 -t
|
||||||
[Timing]: knnsearch: 7806 [msec]
|
[Timing]: knnsearch: 3941 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -k 100 -t
|
||||||
[Timing]: knnsearch: 7465 [msec]
|
[Timing]: knnsearch: 2031 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 6 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 6 -k 100 -t
|
||||||
[Timing]: knnsearch: 6828 [msec]
|
[Timing]: knnsearch: 1395 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 8 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 8 -k 100 -t
|
||||||
[Timing]: knnsearch: 7662[msec]
|
[Timing]: knnsearch: 1415 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 10 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 10 -k 100 -t
|
||||||
[Timing]: knnsearch: 8013 [msec]
|
[Timing]: knnsearch: 1330 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 12 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 12 -k 100 -t
|
||||||
[Timing]: knnsearch: 8123 [msec]
|
[Timing]: knnsearch: 1292 [msec]
|
||||||
|
|
||||||
|
|
||||||
# CILK-sift over threads
|
# CILK-sift over threads
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 1 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 1 -k 100 -t
|
||||||
[Timing]: knnsearch: 4225 [msec]
|
[Timing]: knnsearch: 4183 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 2 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 2 -k 100 -t
|
||||||
[Timing]: knnsearch: 4090 [msec]
|
[Timing]: knnsearch: 2076 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 4 -k 100 -t
|
||||||
[Timing]: knnsearch: 3696 [msec]
|
[Timing]: knnsearch: 1114 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 6 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 6 -k 100 -t
|
||||||
[Timing]: knnsearch: 3122 [msec]
|
[Timing]: knnsearch: 886 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 8 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 8 -k 100 -t
|
||||||
[Timing]: knnsearch: 3860 [msec]
|
[Timing]: knnsearch: 706 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 10 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 10 -k 100 -t
|
||||||
[Timing]: knnsearch: 4141 [msec]
|
[Timing]: knnsearch: 742 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 12 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/sift-128-euclidean.hdf5 /test -s 12 -k 100 -t
|
||||||
[Timing]: knnsearch: 5103 [msec]
|
[Timing]: knnsearch: 636 [msec]
|
||||||
|
|
||||||
# CILK-mnist over threads
|
# CILK-mnist over threads
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 1 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 1 -k 100 -t
|
||||||
[Timing]: knnsearch: 7744 [msec]
|
[Timing]: knnsearch: 7745 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 2 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 2 -k 100 -t
|
||||||
[Timing]: knnsearch: 7206 [msec]
|
[Timing]: knnsearch: 3883 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 4 -k 100 -t
|
||||||
[Timing]: knnsearch: 6965 [msec]
|
[Timing]: knnsearch: 2020 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 6 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 6 -k 100 -t
|
||||||
[Timing]: knnsearch: 6628 [msec]
|
[Timing]: knnsearch: 1454 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 8 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 8 -k 100 -t
|
||||||
[Timing]: knnsearch: 7362 [msec]
|
[Timing]: knnsearch: 1436 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 10 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 10 -k 100 -t
|
||||||
[Timing]: knnsearch: 7813 [msec]
|
[Timing]: knnsearch: 1342 [msec]
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 12 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_cilk -c mtx/mnist-784-euclidean.hdf5 /test -s 12 -k 100 -t
|
||||||
[Timing]: knnsearch: 158123[msec]
|
[Timing]: knnsearch: 1292 [msec]
|
||||||
|
|
||||||
|
|
||||||
# Pthreads-sift over threads
|
# Pthreads-sift over threads
|
||||||
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_pth -c mtx/sift-128-euclidean.hdf5 /test -s 1 -k 100 -t
|
hoo2@shirka:~/Work/AUTH/PDS/homework_1$ eval $DOCK ./out/knnsearch_v1_pth -c mtx/sift-128-euclidean.hdf5 /test -s 1 -k 100 -t
|
||||||
|
@ -67,8 +67,8 @@
|
|||||||
Στην παρούσα εργασία γίνεται ευρεία χρήση πινάκων τόσο για εισαγωγή και εξαγωγή των δεδομένων, όσο και για τους υπολογισμούς.
|
Στην παρούσα εργασία γίνεται ευρεία χρήση πινάκων τόσο για εισαγωγή και εξαγωγή των δεδομένων, όσο και για τους υπολογισμούς.
|
||||||
Για το λόγο αυτό θεωρήσαμε ότι έπρεπε πρώτα να υλοποιήσουμε κάποιες αφαιρέσεις που θα μας επέτρεπαν να χειριστούμε ευκολότερα το πρόβλημα
|
Για το λόγο αυτό θεωρήσαμε ότι έπρεπε πρώτα να υλοποιήσουμε κάποιες αφαιρέσεις που θα μας επέτρεπαν να χειριστούμε ευκολότερα το πρόβλημα
|
||||||
|
|
||||||
\subsection{Ο τύπος Matrix}
|
\subsection{Ο τύπος Matrix<>}
|
||||||
Η πιο βασική αφαίρεση που υλοποιήσαμε είναι ο τύπος \textbf{Matrix}.
|
Η πιο βασική αφαίρεση που υλοποιήσαμε είναι ο τύπος \textbf{Matrix<>}.
|
||||||
Πρόκειται για μια αναπαράσταση πινάκων, είτε μονοδιάστατων είτε δισδιάστατων.
|
Πρόκειται για μια αναπαράσταση πινάκων, είτε μονοδιάστατων είτε δισδιάστατων.
|
||||||
Η υλοποίησή του έγινε με χρήση templates και έτσι μπορούμε να κατασκευάζουμε πίνακες οποιουδήποτε τύπου.
|
Η υλοποίησή του έγινε με χρήση templates και έτσι μπορούμε να κατασκευάζουμε πίνακες οποιουδήποτε τύπου.
|
||||||
Η αφαίρεση εσωτερικά κάνει χρίση μονοδιάστατης αποθήκευσης των δεδομένων με αποτέλεσμα να έχουμε την δυνατότητα να διαλέγουμε εμείς το ordering του πίνακα.
|
Η αφαίρεση εσωτερικά κάνει χρίση μονοδιάστατης αποθήκευσης των δεδομένων με αποτέλεσμα να έχουμε την δυνατότητα να διαλέγουμε εμείς το ordering του πίνακα.
|
||||||
@ -139,12 +139,35 @@ o \textbf{vA}, είναι ένα \textit{slice} του A, που δείχνει
|
|||||||
Γίνεται δηλαδή πάλι χρήση της quick-select.
|
Γίνεται δηλαδή πάλι χρήση της quick-select.
|
||||||
Για να μειώσουμε την ακρίβεια και εδώ μπορούμε να “φτωχύνουμε” το merge.
|
Για να μειώσουμε την ακρίβεια και εδώ μπορούμε να “φτωχύνουμε” το merge.
|
||||||
Για το σκοπό αυτό έχουμε ένα όρισμα στη συνάρτηση το οποίο μας κόβει τον αριθμό των κοντινότερων γειτόνων.
|
Για το σκοπό αυτό έχουμε ένα όρισμα στη συνάρτηση το οποίο μας κόβει τον αριθμό των κοντινότερων γειτόνων.
|
||||||
|
Σε αυτή την προσέγγιση υπάρχει ακόμα ένα ουσιαστικότερο όφελος.
|
||||||
|
Ο χωρισμός σε slices μας δίνει την δυνατότητα να δημιουργήσουμε threads που δεν θα χρειαστεί ποτέ να χρειαστούν κομμάτια μνήμης από άλλα threads.
|
||||||
|
Αυτό ο διαχωρισμός γίνεται στον έξω βρόχο επανάληψης της knnsearch
|
||||||
|
\begin{verbatim}
|
||||||
|
#pragma omp parallel for
|
||||||
|
for (size_t qi = 0; qi < num_slices; ++qi)
|
||||||
|
worker_body (corpus_slices, query_slices, idx, dst, qi,
|
||||||
|
num_slices, corpus_slice_size, query_slice_size, k, m);
|
||||||
|
\end{verbatim}
|
||||||
|
Για τα το παραπάνω snippet (που είναι και “καρδιά” του αλγόριθμου), ο κάθε worker δουλεύει σε δικό του corpus και query slice και αποθηκεύει τα δεδομένα σε δικό του slice πίσω στους idx και dst.
|
||||||
|
Με αυτό τον τρόπο δεν χρειαζόμαστε κανέναν συγχρονισμό για τα threads.
|
||||||
|
|
||||||
\subsection{knnsearch version 1}
|
\subsection{Μετρήσεις}
|
||||||
|
|
||||||
Για την παραγωγή των εκτελέσιμων χρησιμοποιήσαμε το προσωπικό μας(μου) laptop.
|
Για την παραγωγή των εκτελέσιμων χρησιμοποιήσαμε το προσωπικό μας(μου) laptop.
|
||||||
Στον κατάλογο με τον πηγαίο κώδικα υπάρχει ότι είναι απαραίτητο για την μεταγλώττιση και εκτέλεση του κώδικα.
|
Στον κατάλογο με τον πηγαίο κώδικα υπάρχει ότι είναι απαραίτητο για την μεταγλώττιση και εκτέλεση του κώδικα.
|
||||||
Για τη μεταγλώττιση κάναμε χρήση του image hpcimage που βρίσκεται \href{https://hub.docker.com/r/hoo2/hpcimage}{εδώ}.
|
Για τη μεταγλώττιση κάναμε χρήση του image hpcimage που βρίσκεται \href{https://hub.docker.com/r/hoo2/hpcimage}{εδώ}.
|
||||||
|
Για την μεταγλώττιση και εκτέλεση μπορεί κάποιος να δώσει τις παρακάτω εντολές στο root κατάλογο “homework\_1”.
|
||||||
|
\begin{verbatim}
|
||||||
|
DOCK="docker run --rm -v <PATH_to_homework_1>:/usr/src/PDS_homework_1 \
|
||||||
|
-w /usr/src/PDS_homework_1/ hoo2/hpcimage"
|
||||||
|
make -j IMAGE=hoo2/hpcimage v0
|
||||||
|
make -j IMAGE=hoo2/hpcimage v1
|
||||||
|
make -j IMAGE=hoo2/hpcimage v1_cilk
|
||||||
|
make -j IMAGE=hoo2/hpcimage v1_omp
|
||||||
|
make -j IMAGE=hoo2/hpcimage v1_pth
|
||||||
|
# run pthreads version with 4 slices
|
||||||
|
eval $DOCK ./out/knnsearch_v1_pth -c <path to hdf5> /test -k 100 -s 4 -t
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
\section{Αποτελέσματα}
|
\section{Αποτελέσματα}
|
||||||
|
|
||||||
@ -156,47 +179,54 @@ o \textbf{vA}, είναι ένα \textit{slice} του A, που δείχνει
|
|||||||
\item Εκτελέσαμε την κάθε έκδοση του προγράμματος για δύο διαφορετικούς πίνακες(all-to-all) για \textbf{διαφορετική επιθυμητή ακρίβεια}.
|
\item Εκτελέσαμε την κάθε έκδοση του προγράμματος για δύο διαφορετικούς πίνακες(all-to-all) για \textbf{διαφορετική επιθυμητή ακρίβεια}.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
Για αντιπαραβολή παραθέτουμε ότι ότι στο ίδιο μηχάνημα το οποίο πήραμε τις μετρήσεις η knnsearch έκδοση του matlab κάνει:
|
Για αντιπαραβολή παραθέτουμε ότι ότι στο ίδιο μηχάνημα το οποίο πήραμε τις μετρήσεις η knnsearch έκδοση του \textbf{matlab} κάνει:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item sift: \textbf{3.223628 [sec]}
|
\item sift: \textbf{3.223628 [sec]}
|
||||||
\item mnist: \textbf{20.634987 [sec]}
|
\item mnist: \textbf{20.634987 [sec]}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
Για την έκδοση με την openMP έχουμε:
|
\subsection{Επίδραση των threads - OpenMP}
|
||||||
{
|
|
||||||
\centering
|
Για την έκδοση με την openMP, χρησιμοποιώντας διαφορετικό αριθμό threads έχουμε: \\
|
||||||
\includegraphics[width=\textwidth]{../measurements/OMP_over_threads.png}
|
\includegraphics[width=\textwidth]{../measurements/OMP_over_threads.png}
|
||||||
\captionof{figure}{Βελτιστοποίηση από την παραλληλοποίηση [openMP].}
|
\captionof{figure}{Βελτιστοποίηση από την παραλληλοποίηση [openMP].}
|
||||||
\label{fig:openMP_th}
|
\label{fig:openMP_th}
|
||||||
|
|
||||||
|
\subsection{Επίδραση των threads - openCilk}
|
||||||
|
|
||||||
Για την έκδοση με την Cilk έχουμε:
|
Για την έκδοση με την Cilk έχουμε: \\
|
||||||
\includegraphics[width=\textwidth]{../measurements/CILK_over_threads.png}
|
\includegraphics[width=\textwidth]{../measurements/CILK_over_threads.png}
|
||||||
\captionof{figure}{Βελτιστοποίηση από την παραλληλοποίηση [open-cilk].}
|
\captionof{figure}{Βελτιστοποίηση από την παραλληλοποίηση [open-cilk].}
|
||||||
\label{fig:cilk_th}
|
\label{fig:cilk_th}
|
||||||
|
|
||||||
Για την έκδοση με τα pthreads έχουμε:
|
\subsection{Επίδραση των threads - pthreads}
|
||||||
|
|
||||||
|
Για την έκδοση με τα pthreads έχουμε: \\
|
||||||
\includegraphics[width=\textwidth]{../measurements/Pthreads_over_threads.png}
|
\includegraphics[width=\textwidth]{../measurements/Pthreads_over_threads.png}
|
||||||
\captionof{figure}{Βελτιστοποίηση από την παραλληλοποίηση [pthreads].}
|
\captionof{figure}{Βελτιστοποίηση από την παραλληλοποίηση [pthreads].}
|
||||||
\label{fig:pthreads_th}
|
\label{fig:pthreads_th}
|
||||||
|
|
||||||
|
\subsection{Επίδραση της ακρίβειας - OpenMP}
|
||||||
|
|
||||||
Για την έκδοση με την openMP όσο αλλάζουμε την ακρίβεια έχουμε:
|
Για την έκδοση με την openMP όσο αλλάζουμε την ακρίβεια έχουμε: \\
|
||||||
\includegraphics[width=\textwidth]{../measurements/OMP_over_accuracy.png}
|
\includegraphics[width=\textwidth]{../measurements/OMP_over_accuracy.png}
|
||||||
\captionof{figure}{Βελτιστοποίηση λόγο μειωμένης ακρίβειας [openMP].}
|
\captionof{figure}{Βελτιστοποίηση λόγο μειωμένης ακρίβειας [openMP].}
|
||||||
\label{fig:openMP_acc}
|
\label{fig:openMP_acc}
|
||||||
|
|
||||||
|
\subsection{Επίδραση της ακρίβειας - openCilk}
|
||||||
|
|
||||||
Για την έκδοση με την Cilk όσο αλλάζουμε την ακρίβεια έχουμε:
|
Για την έκδοση με την Cilk όσο αλλάζουμε την ακρίβεια έχουμε: \\
|
||||||
\includegraphics[width=\textwidth]{../measurements/CILK_over_accuracy.png}
|
\includegraphics[width=\textwidth]{../measurements/CILK_over_accuracy.png}
|
||||||
\captionof{figure}{Βελτιστοποίηση λόγο μειωμένης ακρίβειας [open-cilk].}
|
\captionof{figure}{Βελτιστοποίηση λόγο μειωμένης ακρίβειας [open-cilk].}
|
||||||
\label{fig:cilk_acc}
|
\label{fig:cilk_acc}
|
||||||
|
|
||||||
Για την έκδοση με τα pthreads όσο αλλάζουμε την ακρίβεια έχουμε:
|
\subsection{Επίδραση της ακρίβειας - pthreads}
|
||||||
|
|
||||||
|
Για την έκδοση με τα pthreads όσο αλλάζουμε την ακρίβεια έχουμε: \\
|
||||||
\includegraphics[width=\textwidth]{../measurements/Pthreads_over_accuracy.png}
|
\includegraphics[width=\textwidth]{../measurements/Pthreads_over_accuracy.png}
|
||||||
\captionof{figure}{Βελτιστοποίηση λόγο μειωμένης ακρίβειας [pthreads].}
|
\captionof{figure}{Βελτιστοποίηση λόγο μειωμένης ακρίβειας [pthreads].}
|
||||||
\label{fig:pthreads_acc}
|
\label{fig:pthreads_acc}
|
||||||
}
|
|
||||||
|
|
||||||
\section{Συμπεράσματα}
|
\section{Συμπεράσματα}
|
||||||
|
|
||||||
@ -205,8 +235,8 @@ o \textbf{vA}, είναι ένα \textit{slice} του A, που δείχνει
|
|||||||
Απ' ότι βλέπουμε παραπάνω, ενώ ο χρόνος βελτιώνεται καθώς χρησιμοποιούμε παραπάνω threads, αυτό δεν συμβαίνει όταν μειώνουμε την ακρίβεια.
|
Απ' ότι βλέπουμε παραπάνω, ενώ ο χρόνος βελτιώνεται καθώς χρησιμοποιούμε παραπάνω threads, αυτό δεν συμβαίνει όταν μειώνουμε την ακρίβεια.
|
||||||
Τουλάχιστον όχι όσο θα θέλαμε.
|
Τουλάχιστον όχι όσο θα θέλαμε.
|
||||||
Φυσικά αυτό έχει να κάνει με την υλοποίηση μας, καθώς δεν επιλέξαμε καλή τεχνική συνένωσης.
|
Φυσικά αυτό έχει να κάνει με την υλοποίηση μας, καθώς δεν επιλέξαμε καλή τεχνική συνένωσης.
|
||||||
Ακόμα φαίνεται ότι ενώ η μέθοδος με τα pthreads αποδίδει καλά, αυτό δεν συμβαίνει και με την cilk και την openmp.
|
Στην υλοποίησή μας δεν έγινε πολύ επιθετική στρατηγική μείωσης της ακρίβειας των αποτελεσμάτων.
|
||||||
Αυτό γιατί στην παρούσα υλοποίηση δεν γίνεται σωστή διαχείριση των threads.
|
Να πούμε επίσης ότι ο συγκεκριμένος αλγόριθμος, λόγο της ουσιαστικά “μη” επικοινωνίας που χρειάζονται τα threads, θα μπορούσε να χρησιμοποιηθεί και σε απομακρυσμένα συστήματα κάνοντας χρήση του MPI.
|
||||||
|
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
#
|
|
||||||
# Take measurements
|
|
||||||
#
|
|
||||||
|
|
||||||
DOCK="docker run --rm -v /home/hoo2/Work/AUTH/PDS/homework_1:/usr/src/PDS_homework_1 -w /usr/src/PDS_homework_1/ hoo2/hpcimage"
|
|
||||||
|
|
||||||
echo " "
|
|
||||||
echo "Serial"
|
|
||||||
|
|
||||||
echo "./out/knnsearch_v1 -c mtx/sift-128-euclidean.hdf5 /test -s 1 -k 100 -t"
|
|
||||||
eval $DOCK ./out/knnsearch_v1 -c mtx/sift-128-euclidean.hdf5 /test -s 10 -k 100 -t
|
|
||||||
echo "./out/knnsearch_v1 -c mtx/mnist-784-euclidean.hdf5 /test -s 1 -k 100 -t"
|
|
||||||
eval $DOCK ./out/knnsearch_v1 -c mtx/mnist-784-euclidean.hdf5 /test -s 10 -k 100 -t
|
|
||||||
|
|
||||||
echo " "
|
|
||||||
echo "OMP"
|
|
||||||
|
|
||||||
# echo ./out/knnsearch_v1 -c mtx/sift-128-euclidean.hdf5 /test -s 1 -k 100 -t
|
|
||||||
#eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 10 -k 100 -t
|
|
||||||
# echo ./out/knnsearch_v1 -c mtx/mnist-784-euclidean.hdf5 /test -s 1 -k 100 -t
|
|
||||||
#eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 10 -k 100 -t
|
|
||||||
# echo ./out/knnsearch_v1 -c mtx/sift-128-euclidean.hdf5 /test -s 1 -k 100 -t
|
|
||||||
#eval $DOCK ./out/knnsearch_v1_omp -c mtx/sift-128-euclidean.hdf5 /test -s 10 -k 100 -t
|
|
||||||
# echo ./out/knnsearch_v1 -c mtx/mnist-784-euclidean.hdf5 /test -s 1 -k 100 -t
|
|
||||||
#eval $DOCK ./out/knnsearch_v1_omp -c mtx/mnist-784-euclidean.hdf5 /test -s 10 -k 100 -t
|
|