66
77from kernel_tuner import integration
88from kernel_tuner import util
9+ from datetime import datetime , timezone
10+
911
1012@pytest .fixture ()
1113def fake_results ():
1214 #create fake results for testing
13- tune_params = {"a" : [1 , 2 , 4 ], "b" : [4 , 5 , 6 ]}
15+ tune_params = {
16+ "a" : [1 , 2 , 4 ],
17+ "b" : [4 , 5 , 6 ]
18+ }
1419 problem_size = 100
1520 parameter_space = itertools .product (* tune_params .values ())
1621 results = [dict (zip (tune_params .keys (), element )) for element in parameter_space ]
17- for i ,r in enumerate (results ):
18- r ["time" ] = 100.0 + i
19- env = {"device_name" : "My GPU" }
22+
23+ for i , r in enumerate (results ):
24+ r ["time" ] = 100.0 + i
25+ r ["compile_time" ] = 20.0 + (i / 5 )
26+ r ["benchmark_time" ] = 20.0 + (i / 5 )
27+ r ["framework_time" ] = 20.0 + (i / 5 )
28+ r ["strategy_time" ] = 20.0 + (i / 5 )
29+ r ["verification_time" ] = 20.0 + (i / 5 )
30+ r ["timestamp" ] = str (datetime .now (timezone .utc ))
31+ env = {
32+ "device_name" : "My GPU"
33+ }
2034
2135 return "fake_kernel" , "fake_string" , tune_params , problem_size , parameter_space , results , env
2236
@@ -41,14 +55,14 @@ def test_store_results(fake_results):
4155 assert len ([d for d in stored_data if d ["device_name" ] == "My_GPU" and d ["problem_size" ] == "1000" ]) == 3
4256
4357 #test if results for a different GPU can be added
44- integration .store_results (filename , kernel_name , kernel_string , tune_params , problem_size , results , {"device_name" : "Another GPU" }, top = 3 )
58+ integration .store_results (filename , kernel_name , kernel_string , tune_params , problem_size , results , { "device_name" : "Another GPU" }, top = 3 )
4559 meta , stored_data = integration ._read_results_file (filename )
4660
4761 assert len (set ([d ["device_name" ] for d in stored_data ])) == 2
4862
4963 #test if overwriting results works
50- for i ,r in enumerate (results ):
51- r ["time" ] = 50.0 + i
64+ for i , r in enumerate (results ):
65+ r ["time" ] = 50.0 + i
5266 integration .store_results (filename , kernel_name , kernel_string , tune_params , problem_size , results , env , top = 0.1 )
5367 meta , stored_data = integration ._read_results_file (filename )
5468
@@ -60,7 +74,6 @@ def test_store_results(fake_results):
6074 util .delete_temp_file (filename )
6175
6276
63-
6477def test_setup_device_targets (fake_results ):
6578
6679 results_filename = "temp_test_results_file.json"
@@ -82,7 +95,7 @@ def test_setup_device_targets(fake_results):
8295 assert "#define b 4" in output_str
8396
8497 #test output when more then one problem size is used, and best configuration is different
85- for i ,e in enumerate (results ):
98+ for i , e in enumerate (results ):
8699 if e ['a' ] == 1 and e ['b' ] == 4 :
87100 e ['time' ] += 100
88101 integration .store_results (results_filename , kernel_name , kernel_string , tune_params , 1000 , results , env , top = 3 )
@@ -94,7 +107,7 @@ def test_setup_device_targets(fake_results):
94107 assert expected in output_str
95108
96109 #test output when more then one problem size is used, and best configuration depends on total time
97- for i ,e in enumerate (results ):
110+ for i , e in enumerate (results ):
98111 if e ['a' ] == 1 and e ['b' ] == 6 :
99112 e ['time' ] -= 3
100113 integration .store_results (results_filename , kernel_name , kernel_string , tune_params , 1000 , results , env , top = 3 )
@@ -106,7 +119,7 @@ def test_setup_device_targets(fake_results):
106119 assert expected in output_str
107120
108121 #test output when more then one GPU is used
109- for i ,e in enumerate (results ):
122+ for i , e in enumerate (results ):
110123 if e ['a' ] == 1 and e ['b' ] == 6 :
111124 e ['time' ] += 3.1
112125 env ['device_name' ] = "My_GPU2"
@@ -134,7 +147,7 @@ def test_setup_device_targets_max(fake_results):
134147 kernel_name , kernel_string , tune_params , problem_size , parameter_space , results , env = fake_results
135148
136149 #add GFLOP/s as metric
137- for i ,e in enumerate (results ):
150+ for i , e in enumerate (results ):
138151 e ['GFLOP/s' ] = 1e5 / e ['time' ]
139152
140153 try :
@@ -148,7 +161,7 @@ def test_setup_device_targets_max(fake_results):
148161 assert "#define b 4" in output_str
149162
150163 #test output when more then one problem size is used, and best configuration is different
151- for i ,e in enumerate (results ):
164+ for i , e in enumerate (results ):
152165 if e ['a' ] == 1 and e ['b' ] == 4 :
153166 e ['time' ] += 100
154167 e ['GFLOP/s' ] = 1e5 / e ['time' ]
@@ -160,8 +173,6 @@ def test_setup_device_targets_max(fake_results):
160173 expected = "\n " .join (["TARGET_My_GPU" , "#define a 1" , "#define b 5" ])
161174 assert expected in output_str
162175
163-
164176 finally :
165177 util .delete_temp_file (results_filename )
166178 util .delete_temp_file (header_filename )
167-
0 commit comments