forked from 3rdparty/wrf-python
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							121 lines
						
					
					
						
							3.9 KiB
						
					
					
				
			
		
		
	
	
							121 lines
						
					
					
						
							3.9 KiB
						
					
					
				| from __future__ import (absolute_import, division, print_function, | |
|                         unicode_literals) | |
|  | |
| import unittest as ut | |
| import numpy.testing as nt | |
|  | |
| from wrf import (omp_set_num_threads, omp_get_num_threads, | |
|                  omp_get_max_threads, omp_get_thread_num, | |
|                  omp_get_num_procs, omp_in_parallel, | |
|                  omp_set_dynamic, omp_get_dynamic, omp_set_nested, | |
|                  omp_get_nested, omp_set_schedule, | |
|                  omp_get_schedule, omp_get_thread_limit, | |
|                  omp_set_max_active_levels, | |
|                  omp_get_max_active_levels, omp_get_level, | |
|                  omp_get_ancestor_thread_num, omp_get_team_size, | |
|                  omp_get_active_level, omp_in_final, | |
|                  omp_init_lock, omp_init_nest_lock, | |
|                  omp_destroy_lock, omp_destroy_nest_lock, | |
|                  omp_set_lock, omp_set_nest_lock, | |
|                  omp_unset_lock, omp_unset_nest_lock, | |
|                  omp_test_lock, omp_test_nest_lock, | |
|                  omp_get_wtime, omp_get_wtick, | |
|                  OMP_SCHED_STATIC, OMP_SCHED_DYNAMIC, | |
|                  OMP_SCHED_GUIDED, OMP_SCHED_AUTO) | |
|  | |
|  | |
| class OmpTest(ut.TestCase): | |
|     longMessage = True | |
|  | |
|     def test_locks(self): | |
|         lk = omp_init_lock() | |
|         omp_set_lock(lk) | |
|         omp_unset_lock(lk) | |
|         omp_test_lock(lk) | |
|         omp_destroy_lock(lk) | |
|  | |
|         nl = omp_init_nest_lock() | |
|         omp_set_nest_lock(nl) | |
|         omp_unset_nest_lock(nl) | |
|         omp_test_nest_lock(nl) | |
|         omp_destroy_nest_lock(nl) | |
|  | |
|     def test_thread_set(self): | |
|         omp_set_num_threads(4) | |
|         max_threads = omp_get_max_threads() | |
|         self.assertEqual(max_threads, 4) | |
|  | |
|         num_threads = omp_get_num_threads() | |
|         # Always 1 outside of parallel region | |
|         self.assertEqual(num_threads, 1) | |
|  | |
|         thread_num = omp_get_thread_num() | |
|         # Always 0 outside of parallel region | |
|         self.assertEqual(thread_num, 0) | |
|         num_procs = omp_get_num_procs() | |
|         in_parallel = omp_in_parallel() | |
|         # Always False outside of parallel region | |
|         self.assertFalse(in_parallel) | |
|  | |
|         limit = omp_get_thread_limit() | |
|  | |
|     def test_dynamic(self): | |
|         omp_set_dynamic(True) | |
|         dynamic = omp_get_dynamic() | |
|         self.assertTrue(dynamic) | |
|  | |
|         omp_set_dynamic(False) | |
|         dynamic = omp_get_dynamic() | |
|         self.assertFalse(dynamic) | |
|  | |
|     def test_nested(self): | |
|         omp_set_nested(True) | |
|         nested = omp_get_nested() | |
|         self.assertTrue(nested) | |
|  | |
|         omp_set_nested(False) | |
|         nested = omp_get_nested() | |
|         self.assertFalse(nested) | |
|  | |
|     def test_schedule(self): | |
|         omp_set_schedule(OMP_SCHED_STATIC, 100000) | |
|         kind, modifier = omp_get_schedule() | |
|         self.assertEqual(kind, OMP_SCHED_STATIC) | |
|         self.assertEqual(modifier, 100000) | |
|  | |
|         omp_set_schedule(OMP_SCHED_DYNAMIC, 10000) | |
|         kind, modifier = omp_get_schedule() | |
|         self.assertEqual(kind, OMP_SCHED_DYNAMIC) | |
|         self.assertEqual(modifier, 10000) | |
|  | |
|         omp_set_schedule(OMP_SCHED_GUIDED, 100) | |
|         kind, modifier = omp_get_schedule() | |
|         self.assertEqual(kind, OMP_SCHED_GUIDED) | |
|         self.assertEqual(modifier, 100) | |
|  | |
|         omp_set_schedule(OMP_SCHED_AUTO, 10) | |
|         kind, modifier = omp_get_schedule() | |
|         self.assertEqual(kind, OMP_SCHED_AUTO) | |
|         # The modifier argument is ignored, | |
|         # so it will be set to the previous | |
|         # value of 100. | |
|         self.assertNotEqual(modifier, 10) | |
|  | |
|     def test_team_level(self): | |
|         omp_set_max_active_levels(10) | |
|         active_levels = omp_get_max_active_levels() | |
|         self.assertEqual(active_levels, 10) | |
|  | |
|         level = omp_get_level() | |
|         ancestor_thread = omp_get_ancestor_thread_num(level) | |
|         team_size = omp_get_team_size(level) | |
|         active_level = omp_get_active_level() | |
|         in_final = omp_in_final() | |
|  | |
|     def test_time(self): | |
|         wtime = omp_get_wtime() | |
|         wtick = omp_get_wtick() | |
|  | |
|  | |
| if __name__ == "__main__": | |
|     ut.main()
 | |
| 
 |