Add tests
parent
25cda17921
commit
0192eb78c1
|
@ -28,3 +28,12 @@ run_remote:
|
||||||
|
|
||||||
download_output:
|
download_output:
|
||||||
rsync -a --progress nsc:$(DESTINATION)/mandelbrot.png .
|
rsync -a --progress nsc:$(DESTINATION)/mandelbrot.png .
|
||||||
|
|
||||||
|
run_local:
|
||||||
|
@test -n "$(width)" || (echo "width is not set"; exit 1)
|
||||||
|
@test -n "$(height)" || (echo "height is not set"; exit 1)
|
||||||
|
|
||||||
|
@echo "Compiling..."
|
||||||
|
gcc -g -Wall -lm mandelbrot.c -o mandelbrot
|
||||||
|
@echo "Running on CPU"
|
||||||
|
./mandelbrot $(width) $(height)
|
||||||
|
|
87
dn8/cuda.cu
87
dn8/cuda.cu
|
@ -60,13 +60,10 @@ __global__ void mandelbrotGPU(unsigned char *img, int width, int height, int cha
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// take params
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
|
||||||
// first argument is width
|
|
||||||
int width = atoi(argv[1]);
|
int width = atoi(argv[1]);
|
||||||
// second argument is height
|
|
||||||
int height = atoi(argv[2]);
|
int height = atoi(argv[2]);
|
||||||
|
|
||||||
int channels = 4;
|
int channels = 4;
|
||||||
|
@ -82,24 +79,18 @@ int main(int argc, char **argv)
|
||||||
dim3 blockSize(BLOCK_SIZE, BLOCK_SIZE, 1);
|
dim3 blockSize(BLOCK_SIZE, BLOCK_SIZE, 1);
|
||||||
dim3 gridSize((width + blockSize.x - 1) / blockSize.x, (height + blockSize.y - 1) / blockSize.y, 1);
|
dim3 gridSize((width + blockSize.x - 1) / blockSize.x, (height + blockSize.y - 1) / blockSize.y, 1);
|
||||||
|
|
||||||
// Ustvarimo dogodke CUDA
|
|
||||||
cudaEvent_t start, stop;
|
cudaEvent_t start, stop;
|
||||||
cudaEventCreate(&start);
|
cudaEventCreate(&start);
|
||||||
cudaEventCreate(&stop);
|
cudaEventCreate(&stop);
|
||||||
|
|
||||||
// Zacnemo beleziti dogodke
|
|
||||||
cudaEventRecord(start);
|
cudaEventRecord(start);
|
||||||
|
|
||||||
// Zazenemo funkcijo na GPE
|
|
||||||
mandelbrotGPU<<<gridSize, blockSize>>>(img_d, width, height, channels);
|
mandelbrotGPU<<<gridSize, blockSize>>>(img_d, width, height, channels);
|
||||||
|
|
||||||
// Copy image to host
|
// Copy image to host
|
||||||
checkCudaErrors(cudaMemcpy(img_h, img_d, data_size, cudaMemcpyDeviceToHost));
|
checkCudaErrors(cudaMemcpy(img_h, img_d, data_size, cudaMemcpyDeviceToHost));
|
||||||
|
|
||||||
// Zakljucimo z belezenjem dogodkov
|
|
||||||
cudaEventRecord(stop);
|
cudaEventRecord(stop);
|
||||||
|
|
||||||
// Pocakamo da se dogodki zgodijo, saj se izvajajo asinhrono
|
|
||||||
cudaEventSynchronize(stop);
|
cudaEventSynchronize(stop);
|
||||||
|
|
||||||
float milliseconds = 0;
|
float milliseconds = 0;
|
||||||
|
@ -117,3 +108,81 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* RESULTS
|
||||||
|
resolution: 640,480, ngpus: 1, gpu_time: 1.664ms, cpu_time: 10.122344s -> speedup 6083.139423076924
|
||||||
|
resolution: 640,480, ngpus: 2, gpu_time: 1.668ms, cpu_time: 10.122344s -> speedup 6068.551558752998
|
||||||
|
resolution: 640,480, ngpus: 4, gpu_time: 1.676ms, cpu_time: 10.122344s -> speedup 6039.584725536993
|
||||||
|
resolution: 640,600, ngpus: 1, gpu_time: 2.036ms, cpu_time: 10.124772s -> speedup 4972.874263261297
|
||||||
|
resolution: 640,600, ngpus: 2, gpu_time: 2.051ms, cpu_time: 10.124772s -> speedup 4936.505119453925
|
||||||
|
resolution: 640,600, ngpus: 4, gpu_time: 2.009ms, cpu_time: 10.124772s -> speedup 5039.707317073171
|
||||||
|
resolution: 640,900, ngpus: 1, gpu_time: 2.132ms, cpu_time: 10.504951s -> speedup 4927.275328330206
|
||||||
|
resolution: 640,900, ngpus: 2, gpu_time: 2.908ms, cpu_time: 10.504951s -> speedup 3612.431568088033
|
||||||
|
resolution: 640,900, ngpus: 4, gpu_time: 2.882ms, cpu_time: 10.504951s -> speedup 3645.021165857044
|
||||||
|
resolution: 640,1080, ngpus: 1, gpu_time: 2.639ms, cpu_time: 11.015781s -> speedup 4174.225464190982
|
||||||
|
resolution: 640,1080, ngpus: 2, gpu_time: 3.366ms, cpu_time: 11.015781s -> speedup 3272.662210338681
|
||||||
|
resolution: 640,1080, ngpus: 4, gpu_time: 3.372ms, cpu_time: 11.015781s -> speedup 3266.8389679715306
|
||||||
|
resolution: 640,2160, ngpus: 1, gpu_time: 4.996ms, cpu_time: 12.115385s -> speedup 2425.0170136108886
|
||||||
|
resolution: 640,2160, ngpus: 2, gpu_time: 4.905ms, cpu_time: 12.115385s -> speedup 2470.007135575943
|
||||||
|
resolution: 640,2160, ngpus: 4, gpu_time: 5.701ms, cpu_time: 12.115385s -> speedup 2125.1333099456238
|
||||||
|
resolution: 800,480, ngpus: 1, gpu_time: 2.005ms, cpu_time: 11.583709s -> speedup 5777.410972568579
|
||||||
|
resolution: 800,480, ngpus: 2, gpu_time: 2.383ms, cpu_time: 11.583709s -> speedup 4860.97733948804
|
||||||
|
resolution: 800,480, ngpus: 4, gpu_time: 1.978ms, cpu_time: 11.583709s -> speedup 5856.27350859454
|
||||||
|
resolution: 800,600, ngpus: 1, gpu_time: 2.450ms, cpu_time: 11.500485s -> speedup 4694.07551020408
|
||||||
|
resolution: 800,600, ngpus: 2, gpu_time: 2.399ms, cpu_time: 11.500485s -> speedup 4793.866194247603
|
||||||
|
resolution: 800,600, ngpus: 4, gpu_time: 2.422ms, cpu_time: 11.500485s -> speedup 4748.342279108175
|
||||||
|
resolution: 800,900, ngpus: 1, gpu_time: 3.512ms, cpu_time: 10.727533s -> speedup 3054.536731207289
|
||||||
|
resolution: 800,900, ngpus: 2, gpu_time: 3.510ms, cpu_time: 10.727533s -> speedup 3056.277207977208
|
||||||
|
resolution: 800,900, ngpus: 4, gpu_time: 3.500ms, cpu_time: 10.727533s -> speedup 3065.009428571428
|
||||||
|
resolution: 800,1080, ngpus: 1, gpu_time: 3.453ms, cpu_time: 10.642499s -> speedup 3082.1022299449755
|
||||||
|
resolution: 800,1080, ngpus: 2, gpu_time: 3.357ms, cpu_time: 10.642499s -> speedup 3170.2409889782543
|
||||||
|
resolution: 800,1080, ngpus: 4, gpu_time: 4.108ms, cpu_time: 10.642499s -> speedup 2590.676484907498
|
||||||
|
resolution: 800,2160, ngpus: 1, gpu_time: 6.405ms, cpu_time: 10.547187s -> speedup 1646.7114754098359
|
||||||
|
resolution: 800,2160, ngpus: 2, gpu_time: 6.410ms, cpu_time: 10.547187s -> speedup 1645.426989079563
|
||||||
|
resolution: 800,2160, ngpus: 4, gpu_time: 6.425ms, cpu_time: 10.547187s -> speedup 1641.5855252918286
|
||||||
|
resolution: 1600,480, ngpus: 1, gpu_time: 2.932ms, cpu_time: 11.243271s -> speedup 3834.676330150068
|
||||||
|
resolution: 1600,480, ngpus: 2, gpu_time: 2.894ms, cpu_time: 11.243271s -> speedup 3885.0279889426397
|
||||||
|
resolution: 1600,480, ngpus: 4, gpu_time: 3.655ms, cpu_time: 11.243271s -> speedup 3076.134336525308
|
||||||
|
resolution: 1600,600, ngpus: 1, gpu_time: 3.816ms, cpu_time: 11.046463s -> speedup 2894.7754192872117
|
||||||
|
resolution: 1600,600, ngpus: 2, gpu_time: 4.511ms, cpu_time: 11.046463s -> speedup 2448.7836399911325
|
||||||
|
resolution: 1600,600, ngpus: 4, gpu_time: 3.714ms, cpu_time: 11.046463s -> speedup 2974.276521270867
|
||||||
|
resolution: 1600,900, ngpus: 1, gpu_time: 5.884ms, cpu_time: 10.917261s -> speedup 1855.4148538409245
|
||||||
|
resolution: 1600,900, ngpus: 2, gpu_time: 5.070ms, cpu_time: 10.917261s -> speedup 2153.3059171597633
|
||||||
|
resolution: 1600,900, ngpus: 4, gpu_time: 5.041ms, cpu_time: 10.917261s -> speedup 2165.6935131918267
|
||||||
|
resolution: 1600,1080, ngpus: 1, gpu_time: 5.619ms, cpu_time: 11.436832s -> speedup 2035.3856558106427
|
||||||
|
resolution: 1600,1080, ngpus: 2, gpu_time: 6.326ms, cpu_time: 11.436832s -> speedup 1807.9089472020235
|
||||||
|
resolution: 1600,1080, ngpus: 4, gpu_time: 6.321ms, cpu_time: 11.436832s -> speedup 1809.33902863471
|
||||||
|
resolution: 1600,2160, ngpus: 1, gpu_time: 10.906ms, cpu_time: 10.779845s -> speedup 988.43251421236
|
||||||
|
resolution: 1600,2160, ngpus: 2, gpu_time: 10.772ms, cpu_time: 10.779845s -> speedup 1000.7282770144819
|
||||||
|
resolution: 1600,2160, ngpus: 4, gpu_time: 10.741ms, cpu_time: 10.779845s -> speedup 1003.6165161530585
|
||||||
|
resolution: 1920,480, ngpus: 1, gpu_time: 4.361ms, cpu_time: 11.150000s -> speedup 2556.75303829397
|
||||||
|
resolution: 1920,480, ngpus: 2, gpu_time: 3.556ms, cpu_time: 11.150000s -> speedup 3135.5455568053994
|
||||||
|
resolution: 1920,480, ngpus: 4, gpu_time: 3.559ms, cpu_time: 11.150000s -> speedup 3132.9025007024447
|
||||||
|
resolution: 1920,600, ngpus: 1, gpu_time: 4.599ms, cpu_time: 11.943074s -> speedup 2596.884974994564
|
||||||
|
resolution: 1920,600, ngpus: 2, gpu_time: 4.667ms, cpu_time: 11.943074s -> speedup 2559.0473537604453
|
||||||
|
resolution: 1920,600, ngpus: 4, gpu_time: 4.607ms, cpu_time: 11.943074s -> speedup 2592.375515519861
|
||||||
|
resolution: 1920,900, ngpus: 1, gpu_time: 5.625ms, cpu_time: 10.943963s -> speedup 1945.5934222222222
|
||||||
|
resolution: 1920,900, ngpus: 2, gpu_time: 5.696ms, cpu_time: 10.943963s -> speedup 1921.341818820225
|
||||||
|
resolution: 1920,900, ngpus: 4, gpu_time: 6.249ms, cpu_time: 10.943963s -> speedup 1751.314290286446
|
||||||
|
resolution: 1920,1080, ngpus: 1, gpu_time: 7.881ms, cpu_time: 11.079364s -> speedup 1405.8322547900011
|
||||||
|
resolution: 1920,1080, ngpus: 2, gpu_time: 6.993ms, cpu_time: 11.079364s -> speedup 1584.3506363506363
|
||||||
|
resolution: 1920,1080, ngpus: 4, gpu_time: 7.749ms, cpu_time: 11.079364s -> speedup 1429.7798425603305
|
||||||
|
resolution: 1920,2160, ngpus: 1, gpu_time: 13.916ms, cpu_time: 10.651142s -> speedup 765.3881862604197
|
||||||
|
resolution: 1920,2160, ngpus: 2, gpu_time: 12.911ms, cpu_time: 10.651142s -> speedup 824.9664627062195
|
||||||
|
resolution: 1920,2160, ngpus: 4, gpu_time: 12.922ms, cpu_time: 10.651142s -> speedup 824.2642005881441
|
||||||
|
resolution: 3840,480, ngpus: 1, gpu_time: 6.109ms, cpu_time: 10.953693s -> speedup 1793.0419053854969
|
||||||
|
resolution: 3840,480, ngpus: 2, gpu_time: 6.029ms, cpu_time: 10.953693s -> speedup 1816.8341350140986
|
||||||
|
resolution: 3840,480, ngpus: 4, gpu_time: 6.752ms, cpu_time: 10.953693s -> speedup 1622.28865521327
|
||||||
|
resolution: 3840,600, ngpus: 1, gpu_time: 8.130ms, cpu_time: 10.953526s -> speedup 1347.2971709717096
|
||||||
|
resolution: 3840,600, ngpus: 2, gpu_time: 7.990ms, cpu_time: 10.953526s -> speedup 1370.9043804755945
|
||||||
|
resolution: 3840,600, ngpus: 4, gpu_time: 8.000ms, cpu_time: 10.953526s -> speedup 1369.19075
|
||||||
|
resolution: 3840,900, ngpus: 1, gpu_time: 10.816ms, cpu_time: 11.594220s -> speedup 1071.9508136094673
|
||||||
|
resolution: 3840,900, ngpus: 2, gpu_time: 11.445ms, cpu_time: 11.594220s -> speedup 1013.038007863696
|
||||||
|
resolution: 3840,900, ngpus: 4, gpu_time: 10.671ms, cpu_time: 11.594220s -> speedup 1086.5167275794208
|
||||||
|
resolution: 3840,1080, ngpus: 1, gpu_time: 13.010ms, cpu_time: 11.026291s -> speedup 847.5242890084552
|
||||||
|
resolution: 3840,1080, ngpus: 2, gpu_time: 13.600ms, cpu_time: 11.026291s -> speedup 810.7566911764707
|
||||||
|
resolution: 3840,1080, ngpus: 4, gpu_time: 13.223ms, cpu_time: 11.026291s -> speedup 833.8721167662407
|
||||||
|
resolution: 3840,2160, ngpus: 1, gpu_time: 24.669ms, cpu_time: 11.050334s -> speedup 447.9441404191495
|
||||||
|
resolution: 3840,2160, ngpus: 2, gpu_time: 24.373ms, cpu_time: 11.050334s -> speedup 453.38423665531525
|
||||||
|
resolution: 3840,2160, ngpus: 4, gpu_time: 24.410ms, cpu_time: 11.050334s -> speedup 452.69700942236784
|
||||||
|
*/
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Read csv file
|
||||||
|
gpu_results = []
|
||||||
|
with open('./results_gpu.csv', 'r') as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
# Split lines into list of lists and strip whitespace
|
||||||
|
lines = [line.strip().split(',') for line in lines]
|
||||||
|
# Remove header
|
||||||
|
lines = lines[1:]
|
||||||
|
gpu_results = lines
|
||||||
|
|
||||||
|
cpu_results = []
|
||||||
|
with open('./results_cpu.csv', 'r') as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
# Split lines into list of lists and strip whitespace
|
||||||
|
lines = [line.strip().split(',') for line in lines]
|
||||||
|
# Remove header
|
||||||
|
lines = lines[1:]
|
||||||
|
cpu_results = lines
|
||||||
|
|
||||||
|
for i in range(len(gpu_results)):
|
||||||
|
for j in range(len(cpu_results)):
|
||||||
|
if gpu_results[i][0] == cpu_results[j][0] and gpu_results[i][1] == cpu_results[j][1]:
|
||||||
|
gpu_time = float(gpu_results[i][3]) # in milliseconds
|
||||||
|
cpu_time = float(cpu_results[j][2])# in seconds
|
||||||
|
speedup = cpu_time / (gpu_time / 1000)
|
||||||
|
print(f'resolution: {gpu_results[i][0]},{gpu_results[i][1]}, ngpus: {gpu_results[i][2]}, gpu_time: {gpu_results[i][3]}ms, cpu_time: {cpu_results[j][2]}s -> speedup {speedup}')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#define STB_IMAGE_WRITE_IMPLEMENTATION
|
#define STB_IMAGE_WRITE_IMPLEMENTATION
|
||||||
#include "stb_image_write.h"
|
#include "stb_image_write.h"
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
void mandelbrotCPU(unsigned char *image, int height, int width) {
|
void mandelbrotCPU(unsigned char *image, int height, int width) {
|
||||||
float x0, y0, x, y, xtemp;
|
float x0, y0, x, y, xtemp;
|
||||||
|
@ -50,11 +51,16 @@ int main(void)
|
||||||
int height = 3840;
|
int height = 3840;
|
||||||
int width = 2160;
|
int width = 2160;
|
||||||
int cpp=4; //stevilo barvnih kanalov na piksel
|
int cpp=4; //stevilo barvnih kanalov na piksel
|
||||||
|
struct timeval tv1, tv2;
|
||||||
|
|
||||||
//rezerviramo prostor za sliko (RGBA)
|
//rezerviramo prostor za sliko (RGBA)
|
||||||
unsigned char *image = (unsigned char *)malloc(height * width * sizeof(unsigned char) * cpp);
|
unsigned char *image = (unsigned char *)malloc(height * width * sizeof(unsigned char) * cpp);
|
||||||
|
|
||||||
|
gettimeofday(&tv1, NULL);
|
||||||
mandelbrotCPU(image, height, width);
|
mandelbrotCPU(image, height, width);
|
||||||
|
gettimeofday(&tv2, NULL);
|
||||||
|
printf ("CPU: %f seconds\n", (double) (tv2.tv_usec - tv1.tv_usec) / 1000000 +
|
||||||
|
(double) (tv2.tv_sec - tv1.tv_sec));
|
||||||
//shranimo sliko
|
//shranimo sliko
|
||||||
stbi_write_png("mandelbrot.png", width, height, cpp, image, width * cpp);
|
stbi_write_png("mandelbrot.png", width, height, cpp, image, width * cpp);
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 995 KiB |
|
@ -0,0 +1,26 @@
|
||||||
|
width,height,seconds
|
||||||
|
640,480,10.122344
|
||||||
|
640,600,10.124772
|
||||||
|
640,900,10.504951
|
||||||
|
640,1080,11.015781
|
||||||
|
640,2160,12.115385
|
||||||
|
800,480,11.583709
|
||||||
|
800,600,11.500485
|
||||||
|
800,900,10.727533
|
||||||
|
800,1080,10.642499
|
||||||
|
800,2160,10.547187
|
||||||
|
1600,480,11.243271
|
||||||
|
1600,600,11.046463
|
||||||
|
1600,900,10.917261
|
||||||
|
1600,1080,11.436832
|
||||||
|
1600,2160,10.779845
|
||||||
|
1920,480,11.150000
|
||||||
|
1920,600,11.943074
|
||||||
|
1920,900,10.943963
|
||||||
|
1920,1080,11.079364
|
||||||
|
1920,2160,10.651142
|
||||||
|
3840,480,10.953693
|
||||||
|
3840,600,10.953526
|
||||||
|
3840,900,11.594220
|
||||||
|
3840,1080,11.026291
|
||||||
|
3840,2160,11.050334
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
width,height,ngpus,milliseconds
|
||||||
|
640,480,1,1.664
|
||||||
|
640,480,2,1.668
|
||||||
|
640,480,4,1.676
|
||||||
|
640,600,1,2.036
|
||||||
|
640,600,2,2.051
|
||||||
|
640,600,4,2.009
|
||||||
|
640,900,1,2.132
|
||||||
|
640,900,2,2.908
|
||||||
|
640,900,4,2.882
|
||||||
|
640,1080,1,2.639
|
||||||
|
640,1080,2,3.366
|
||||||
|
640,1080,4,3.372
|
||||||
|
640,2160,1,4.996
|
||||||
|
640,2160,2,4.905
|
||||||
|
640,2160,4,5.701
|
||||||
|
800,480,1,2.005
|
||||||
|
800,480,2,2.383
|
||||||
|
800,480,4,1.978
|
||||||
|
800,600,1,2.450
|
||||||
|
800,600,2,2.399
|
||||||
|
800,600,4,2.422
|
||||||
|
800,900,1,3.512
|
||||||
|
800,900,2,3.510
|
||||||
|
800,900,4,3.500
|
||||||
|
800,1080,1,3.453
|
||||||
|
800,1080,2,3.357
|
||||||
|
800,1080,4,4.108
|
||||||
|
800,2160,1,6.405
|
||||||
|
800,2160,2,6.410
|
||||||
|
800,2160,4,6.425
|
||||||
|
1600,480,1,2.932
|
||||||
|
1600,480,2,2.894
|
||||||
|
1600,480,4,3.655
|
||||||
|
1600,600,1,3.816
|
||||||
|
1600,600,2,4.511
|
||||||
|
1600,600,4,3.714
|
||||||
|
1600,900,1,5.884
|
||||||
|
1600,900,2,5.070
|
||||||
|
1600,900,4,5.041
|
||||||
|
1600,1080,1,5.619
|
||||||
|
1600,1080,2,6.326
|
||||||
|
1600,1080,4,6.321
|
||||||
|
1600,2160,1,10.906
|
||||||
|
1600,2160,2,10.772
|
||||||
|
1600,2160,4,10.741
|
||||||
|
1920,480,1,4.361
|
||||||
|
1920,480,2,3.556
|
||||||
|
1920,480,4,3.559
|
||||||
|
1920,600,1,4.599
|
||||||
|
1920,600,2,4.667
|
||||||
|
1920,600,4,4.607
|
||||||
|
1920,900,1,5.625
|
||||||
|
1920,900,2,5.696
|
||||||
|
1920,900,4,6.249
|
||||||
|
1920,1080,1,7.881
|
||||||
|
1920,1080,2,6.993
|
||||||
|
1920,1080,4,7.749
|
||||||
|
1920,2160,1,13.916
|
||||||
|
1920,2160,2,12.911
|
||||||
|
1920,2160,4,12.922
|
||||||
|
3840,480,1,6.109
|
||||||
|
3840,480,2,6.029
|
||||||
|
3840,480,4,6.752
|
||||||
|
3840,600,1,8.130
|
||||||
|
3840,600,2,7.990
|
||||||
|
3840,600,4,8.000
|
||||||
|
3840,900,1,10.816
|
||||||
|
3840,900,2,11.445
|
||||||
|
3840,900,4,10.671
|
||||||
|
3840,1080,1,13.010
|
||||||
|
3840,1080,2,13.600
|
||||||
|
3840,1080,4,13.223
|
||||||
|
3840,2160,1,24.669
|
||||||
|
3840,2160,2,24.373
|
||||||
|
3840,2160,4,24.410
|
|
27
dn8/test.sh
27
dn8/test.sh
|
@ -4,18 +4,31 @@
|
||||||
WIDTHS=( 640 800 1600 1920 3840 )
|
WIDTHS=( 640 800 1600 1920 3840 )
|
||||||
HEIGHTS=( 480 600 900 1080 2160 )
|
HEIGHTS=( 480 600 900 1080 2160 )
|
||||||
GPUS=(1 2 4)
|
GPUS=(1 2 4)
|
||||||
|
# Boolean variable
|
||||||
|
TEST_GPU=true
|
||||||
|
|
||||||
|
# Generate CSV
|
||||||
|
if [ "$TEST_GPU" = true ]; then
|
||||||
|
echo "width,height,ngpus,milliseconds" > results_gpu.csv
|
||||||
|
else
|
||||||
|
echo "width,height,seconds" > results_cpu.csv
|
||||||
|
fi
|
||||||
|
|
||||||
# loop through WIDTHS
|
|
||||||
for WIDTH in "${WIDTHS[@]}"
|
for WIDTH in "${WIDTHS[@]}"
|
||||||
do
|
do
|
||||||
# loop through HEIGHTS
|
|
||||||
for HEIGHT in "${HEIGHTS[@]}"
|
for HEIGHT in "${HEIGHTS[@]}"
|
||||||
do
|
do
|
||||||
# loop through GPUS
|
# loop through GPUS
|
||||||
for GPU in "${GPUS[@]}"
|
if [ "$TEST_GPU" = true ]; then
|
||||||
do
|
for GPU in "${GPUS[@]}"
|
||||||
ret=$(make run_remote ntasks=1 ngpus=$GPU width=$WIDTH height=$HEIGHT | grep time | awk '{print $7}')
|
do
|
||||||
echo "Finished $WIDTH x $HEIGHT with $GPU GPUs --> time: $ret milliseconds"
|
ret=$(make run_remote ntasks=1 ngpus=$GPU width=$WIDTH height=$HEIGHT | grep time | awk '{print $7}')
|
||||||
done
|
echo "$WIDTH,$HEIGHT,$GPU,$ret" >> results_gpu.csv
|
||||||
|
done
|
||||||
|
else
|
||||||
|
# run on CPU
|
||||||
|
ret=$( make run_local width=$WIDTH height=$HEIGHT | grep second | awk '{print $2}')
|
||||||
|
echo "$WIDTH,$HEIGHT,$ret" >> results_cpu.csv
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
Loading…
Reference in New Issue