May 9 2025 9:47:02.048 PM timer_cpu_time(): FORTRAN90 version. cpu_time() is a FORTRAN 95 built in routine. call cpu_time ( reading ) TEST01 Time the FORTRAN90 RANDOM_NUMBER routine: call random_number ( x(1:n) ) Data vectors will be of minimum size 1 Data vectors will be of maximum size 1048576 Number of repetitions of the operation: 5 Timing results: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 Min Ave Max 1 0.000008 0.000000 0.000000 0.000001 0.000000 0.000000 0.000002 0.000008 2 0.000000 0.000001 0.000000 0.000001 0.000000 0.000000 0.000000 0.000001 4 0.000000 0.000001 0.000000 0.000001 0.000000 0.000000 0.000000 0.000001 8 0.000000 0.000001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000001 16 0.000000 0.000001 0.000000 0.000000 0.000001 0.000000 0.000000 0.000001 32 0.000000 0.000000 0.000001 0.000001 0.000000 0.000000 0.000000 0.000001 64 0.000000 0.000000 0.000001 0.000001 0.000001 0.000000 0.000001 0.000001 128 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 0.000001 256 0.000002 0.000001 0.000001 0.000002 0.000001 0.000001 0.000001 0.000002 512 0.000003 0.000002 0.000002 0.000003 0.000002 0.000002 0.000002 0.000003 1024 0.000007 0.000004 0.000004 0.000005 0.000004 0.000004 0.000005 0.000007 2048 0.000010 0.000009 0.000009 0.000009 0.000009 0.000009 0.000009 0.000010 4096 0.000021 0.000016 0.000016 0.000017 0.000016 0.000016 0.000017 0.000021 8192 0.000041 0.000033 0.000033 0.000036 0.000074 0.000033 0.000043 0.000074 16384 0.000100 0.000066 0.000066 0.000066 0.000066 0.000066 0.000073 0.000100 32768 0.000163 0.000131 0.000131 0.000153 0.000168 0.000131 0.000149 0.000168 65536 0.000325 0.000262 0.000321 0.000264 0.000263 0.000262 0.000287 0.000325 131072 0.000694 0.000526 0.000585 0.000525 0.000576 0.000525 0.000581 0.000694 262144 0.001340 0.001134 0.001154 0.001093 0.001109 0.001093 0.001166 0.001340 524288 0.002737 0.002179 0.002174 0.002177 0.002140 0.002140 0.002281 0.002737 1048576 0.005212 0.004210 0.004446 0.004424 0.004287 0.004210 0.004516 0.005212 TEST02 Time vectorized operations: y(1:n) = x(1:n) y(1:n) = PI * x(1:n) y(1:n) = sqrt ( x(1:n) ) y(1:n) = exp ( x(1:n) ) Data vectors will be of minimum size 4096 Data vectors will be of maximum size 4194304 Number of repetitions of the operation: 5 Timing Results: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 4096 0.000014 0.000006 0.000005 0.000006 0.000005 8192 0.000018 0.000012 0.000011 0.000011 0.000011 16384 0.000039 0.000022 0.000022 0.000021 0.000021 32768 0.000076 0.000042 0.000043 0.000043 0.000043 65536 0.000152 0.000086 0.000086 0.000085 0.000085 131072 0.000307 0.000176 0.000173 0.000173 0.000171 262144 0.000637 0.000360 0.000353 0.000352 0.000351 524288 0.001386 0.000746 0.000776 0.000735 0.000731 1048576 0.002751 0.001518 0.001517 0.001508 0.001552 2097152 0.005758 0.003058 0.003060 0.003054 0.003042 4194304 0.011044 0.006521 0.006423 0.006391 0.006366 Timing Results: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 4096 0.000004 0.000004 0.000004 0.000004 0.000004 8192 0.000008 0.000020 0.000008 0.000007 0.000008 16384 0.000015 0.000014 0.000014 0.000014 0.000014 32768 0.000028 0.000029 0.000029 0.000029 0.000029 65536 0.000060 0.000059 0.000058 0.000061 0.000059 131072 0.000120 0.000118 0.000117 0.000118 0.000118 262144 0.000253 0.000249 0.000243 0.000248 0.000246 524288 0.000546 0.000541 0.000537 0.000576 0.000533 1048576 0.001143 0.001146 0.001142 0.001148 0.001136 2097152 0.002342 0.002348 0.002347 0.002346 0.002339 4194304 0.005375 0.005250 0.005491 0.005492 0.005175 Timing Results: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 4096 0.000007 0.000006 0.000006 0.000007 0.000007 8192 0.000013 0.000013 0.000013 0.000014 0.000013 16384 0.000026 0.000026 0.000026 0.000026 0.000026 32768 0.000051 0.000051 0.000051 0.000051 0.000051 65536 0.000102 0.000102 0.000102 0.000103 0.000102 131072 0.000204 0.000205 0.000205 0.000207 0.000204 262144 0.000412 0.000415 0.000414 0.000413 0.000411 524288 0.000854 0.000851 0.000851 0.000854 0.000850 1048576 0.001741 0.001744 0.001745 0.001746 0.001786 2097152 0.003659 0.003526 0.003561 0.003526 0.003531 4194304 0.007318 0.007284 0.007319 0.007312 0.008112 Timing Results: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 4096 0.000035 0.000023 0.000022 0.000022 0.000023 8192 0.000045 0.000045 0.000044 0.000045 0.000045 16384 0.000089 0.000089 0.000089 0.000089 0.000089 32768 0.000202 0.000217 0.000178 0.000178 0.000178 65536 0.000357 0.000356 0.000358 0.000357 0.000355 131072 0.000714 0.000767 0.000714 0.000749 0.000713 262144 0.001532 0.001488 0.001433 0.001433 0.001433 524288 0.003033 0.003003 0.002980 0.002892 0.003040 1048576 0.006049 0.006043 0.005876 0.005837 0.005910 2097152 0.012164 0.012315 0.011905 0.012079 0.011756 4194304 0.023497 0.023675 0.023536 0.023701 0.023644 TEST03 Time the unvectorized loops: do i = 1, n y(i) = x(i) y(i) = PI * x(i) y(i) = sqrt ( x(i) ) y(i) = exp ( x(i) ) end do Data vectors will be of minimum size 4096 Data vectors will be of maximum size 4194304 Number of repetitions of the operation: 5 Timing Results: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 4096 0.000020 0.000008 0.000008 0.000009 0.000008 8192 0.000026 0.000017 0.000017 0.000017 0.000017 16384 0.000051 0.000055 0.000034 0.000034 0.000034 32768 0.000100 0.000067 0.000067 0.000096 0.000069 65536 0.000202 0.000136 0.000184 0.000135 0.000136 131072 0.000406 0.000276 0.000273 0.000273 0.000274 262144 0.000843 0.000560 0.000553 0.000586 0.000549 524288 0.001657 0.001135 0.001128 0.001157 0.001130 1048576 0.003394 0.002294 0.002291 0.002287 0.002283 2097152 0.006948 0.004614 0.004606 0.004824 0.004606 4194304 0.013788 0.009553 0.009369 0.009317 0.009346 Timing Results: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 4096 0.000009 0.000009 0.000008 0.000008 0.000008 8192 0.000018 0.000017 0.000017 0.000017 0.000017 16384 0.000034 0.000035 0.000034 0.000034 0.000035 32768 0.000068 0.000068 0.000068 0.000069 0.000067 65536 0.000137 0.000137 0.000136 0.000136 0.000136 131072 0.000274 0.000276 0.000274 0.000310 0.000273 262144 0.000554 0.000552 0.000552 0.000553 0.000552 524288 0.001132 0.001135 0.001131 0.001132 0.001135 1048576 0.002307 0.002305 0.002304 0.002304 0.002303 2097152 0.004646 0.004642 0.004786 0.004640 0.004649 4194304 0.009409 0.009513 0.009665 0.009369 0.009407 Timing Results: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 4096 0.000008 0.000008 0.000008 0.000008 0.000008 8192 0.000016 0.000017 0.000016 0.000016 0.000016 16384 0.000032 0.000034 0.000033 0.000032 0.000032 32768 0.000065 0.000064 0.000064 0.000064 0.000063 65536 0.000131 0.000130 0.000130 0.000130 0.000126 131072 0.000260 0.000260 0.000261 0.000261 0.000255 262144 0.000526 0.000524 0.000528 0.000525 0.000517 524288 0.001076 0.001078 0.001078 0.001081 0.001060 1048576 0.002202 0.002278 0.002204 0.002234 0.002200 2097152 0.004463 0.004726 0.004428 0.004436 0.004463 4194304 0.008995 0.009016 0.009108 0.008978 0.008998 Timing Results: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 4096 0.000030 0.000029 0.000029 0.000029 0.000029 8192 0.000058 0.000058 0.000058 0.000058 0.000058 16384 0.000117 0.000115 0.000115 0.000115 0.000115 32768 0.000228 0.000229 0.000229 0.000229 0.000285 65536 0.000459 0.000459 0.000457 0.000457 0.000458 131072 0.000916 0.000918 0.000917 0.000918 0.000952 262144 0.001866 0.001835 0.001838 0.001833 0.001840 524288 0.003770 0.003744 0.003707 0.004187 0.003708 1048576 0.007510 0.007782 0.007497 0.007519 0.007501 2097152 0.015021 0.015139 0.014999 0.015361 0.015074 4194304 0.030477 0.030155 0.030120 0.030487 0.030222 TEST04 Time the 2D nearest neighbor problem. Given X(2,N) and Y(2), find X(2,*) closest to Y(2). do i = 1, n if distance ( x(2,i), y ) < minimum so far x_min = x(2,i) end do Data vectors will be of minimum size 1024 Data vectors will be of maximum size 1048576 Number of repetitions of the operation: 5 Timing Results: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 1024 0.000005 0.000004 0.000004 0.000004 0.000004 2048 0.000007 0.000008 0.000007 0.000007 0.000008 4096 0.000014 0.000014 0.000014 0.000014 0.000014 8192 0.000029 0.000029 0.000027 0.000029 0.000028 16384 0.000058 0.000056 0.000078 0.000056 0.000056 32768 0.000114 0.000112 0.000126 0.000111 0.000114 65536 0.000227 0.000225 0.000224 0.000224 0.000223 131072 0.000455 0.000450 0.000448 0.000484 0.000449 262144 0.000915 0.000899 0.000902 0.000900 0.000899 524288 0.001843 0.001822 0.001821 0.001816 0.001816 1048576 0.003854 0.003780 0.003770 0.003777 0.003811 TEST05 Time the matrix multiplication problem. Compute C = A * B where A is an L by M matrix, B is an M by N matrix, and so C is an L by N matrix. Minimum value of L = M = N = 4 Maximum value of L = M = N = 1024 Number of repetitions of the operation: 5 Use nested DO loops for matrix multiplication. Timing results using nested DO loops: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 4 0.000001 0.000001 0.000000 0.000001 0.000000 16 0.000015 0.000015 0.000016 0.000017 0.000016 64 0.000989 0.001049 0.001013 0.001014 0.001049 256 0.102970 0.100270 0.101247 0.101022 0.100942 Use the MATMUL routine for matrix multiplication. Timing results using MATMUL: Vector Size Rep #1 Rep #2 Rep #3 Rep #4 Rep #5 4 0.000013 0.000003 0.000003 0.000003 0.000002 16 0.000001 0.000003 0.000003 0.000003 0.000003 64 0.000062 0.000036 0.000074 0.000076 0.000073 256 0.001676 0.001654 0.001691 0.001692 0.001655 1024 0.100950 0.088922 0.088691 0.087954 0.088257 timer_cpu_time(): Normal end of execution. May 9 2025 9:47:05.594 PM