Skip to content

Commit 500c123

Browse files
Transitioned test_sycl_queue_manager to use pytest over unittest
Added tests to excercise device_context on all platforms
1 parent 96df456 commit 500c123

File tree

1 file changed

+125
-83
lines changed

1 file changed

+125
-83
lines changed

dpctl/tests/test_sycl_queue_manager.py

Lines changed: 125 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -17,100 +17,142 @@
1717
"""Defines unit test cases for the SyclQueueManager class.
1818
"""
1919

20-
import unittest
20+
import pytest
2121

2222
import dpctl
2323

2424
from ._helper import has_cpu, has_gpu, has_sycl_platforms
2525

2626

27-
@unittest.skipIf(not has_sycl_platforms(), "No SYCL platforms available")
28-
class TestIsInDeviceContext(unittest.TestCase):
29-
def test_is_in_device_context_outside_device_ctxt(self):
30-
self.assertFalse(dpctl.is_in_device_context())
27+
@pytest.mark.skipif(
28+
not has_sycl_platforms(), reason="No SYCL platforms available"
29+
)
30+
def test_is_in_device_context_outside_device_ctxt():
31+
assert not dpctl.is_in_device_context()
3132

32-
@unittest.skipUnless(has_gpu(), "No OpenCL GPU queues available")
33-
def test_is_in_device_context_inside_device_ctxt(self):
33+
34+
@pytest.mark.skipif(not has_gpu(), reason="No OpenCL GPU queues available")
35+
def test_is_in_device_context_inside_device_ctxt_gpu():
36+
with dpctl.device_context("opencl:gpu:0"):
37+
assert dpctl.is_in_device_context()
38+
39+
40+
@pytest.mark.skipif(not has_cpu(), reason="No OpenCL CPU queues available")
41+
def test_is_in_device_context_inside_device_ctxt_cpu():
42+
with dpctl.device_context("opencl:cpu:0"):
43+
assert dpctl.is_in_device_context()
44+
45+
46+
@pytest.mark.skipif(not has_gpu(), reason="No OpenCL GPU queues available")
47+
@pytest.mark.skipif(not has_cpu(), reason="No OpenCL CPU queues available")
48+
def test_is_in_device_context_inside_nested_device_ctxt():
49+
with dpctl.device_context("opencl:cpu:0"):
3450
with dpctl.device_context("opencl:gpu:0"):
35-
self.assertTrue(dpctl.is_in_device_context())
51+
assert dpctl.is_in_device_context()
52+
assert dpctl.is_in_device_context()
53+
assert not dpctl.is_in_device_context()
54+
55+
56+
@pytest.mark.skipif(not has_cpu(), reason="No OpenCL CPU queues available")
57+
def test_is_in_device_context_inside_nested_device_ctxt_cpu():
58+
cpu = dpctl.SyclDevice("cpu")
59+
n = cpu.max_compute_units
60+
n_half = n // 2
61+
try:
62+
d0, d1 = cpu.create_subdevices(partition=[n_half, n - n_half])
63+
except Exception:
64+
pytest.skip("Could not create subdevices")
65+
assert 0 == dpctl.get_num_activated_queues()
66+
with dpctl.device_context(d0):
67+
assert 1 == dpctl.get_num_activated_queues()
68+
with dpctl.device_context(d1):
69+
assert 2 == dpctl.get_num_activated_queues()
70+
assert dpctl.is_in_device_context()
71+
assert dpctl.is_in_device_context()
72+
assert 1 == dpctl.get_num_activated_queues()
73+
assert not dpctl.is_in_device_context()
74+
assert 0 == dpctl.get_num_activated_queues()
75+
76+
77+
@pytest.mark.skipif(
78+
not has_sycl_platforms(), reason="No SYCL platforms available"
79+
)
80+
def test_get_current_device_type_outside_device_ctxt():
81+
assert dpctl.get_current_device_type() is not None
82+
83+
84+
@pytest.mark.skipif(
85+
not has_sycl_platforms(), reason="No SYCL platforms available"
86+
)
87+
@pytest.mark.skipif(not has_gpu(), reason="No OpenCL GPU queues available")
88+
def test_get_current_device_type_inside_device_ctxt():
89+
assert dpctl.get_current_device_type() is not None
90+
91+
with dpctl.device_context("opencl:gpu:0"):
92+
assert dpctl.get_current_device_type() == dpctl.device_type.gpu
93+
94+
assert dpctl.get_current_device_type() is not None
95+
96+
97+
@pytest.mark.skipif(not has_cpu(), reason="No OpenCL CPU queues available")
98+
@pytest.mark.skipif(not has_gpu(), reason="No OpenCL GPU queues available")
99+
def test_get_current_device_type_inside_nested_device_ctxt():
100+
assert dpctl.get_current_device_type() is not None
101+
102+
with dpctl.device_context("opencl:cpu:0"):
103+
assert dpctl.get_current_device_type() == dpctl.device_type.cpu
36104

37-
@unittest.skipUnless(has_gpu(), "No OpenCL GPU queues available")
38-
@unittest.skipUnless(has_cpu(), "No OpenCL CPU queues available")
39-
def test_is_in_device_context_inside_nested_device_ctxt(self):
40-
with dpctl.device_context("opencl:cpu:0"):
41-
with dpctl.device_context("opencl:gpu:0"):
42-
self.assertTrue(dpctl.is_in_device_context())
43-
self.assertTrue(dpctl.is_in_device_context())
44-
self.assertFalse(dpctl.is_in_device_context())
105+
with dpctl.device_context("opencl:gpu:0"):
106+
assert dpctl.get_current_device_type() == dpctl.device_type.gpu
107+
assert dpctl.get_current_device_type() == dpctl.device_type.cpu
45108

109+
assert dpctl.get_current_device_type() is not None
110+
111+
112+
@pytest.mark.skipif(
113+
not has_sycl_platforms(), reason="No SYCL platforms available"
114+
)
115+
def test_num_current_queues_outside_with_clause():
116+
assert 0 == dpctl.get_num_activated_queues()
117+
118+
119+
@pytest.mark.skipif(not has_gpu(), reason="No OpenCL GPU queues available")
120+
@pytest.mark.skipif(not has_cpu(), reason="No OpenCL CPU queues available")
121+
def test_num_current_queues_inside_with_clause():
122+
with dpctl.device_context("opencl:cpu:0"):
123+
assert 1 == dpctl.get_num_activated_queues()
124+
with dpctl.device_context("opencl:gpu:0"):
125+
assert 2 == dpctl.get_num_activated_queues()
126+
assert 0 == dpctl.get_num_activated_queues()
46127

47-
@unittest.skipIf(not has_sycl_platforms(), "No SYCL platforms available")
48-
@unittest.skipUnless(has_gpu(), "No OpenCL GPU queues available")
49-
class TestGetCurrentDevice(unittest.TestCase):
50-
def test_get_current_device_type_outside_device_ctxt(self):
51-
self.assertNotEqual(dpctl.get_current_device_type(), None)
52128

53-
def test_get_current_device_type_inside_device_ctxt(self):
54-
self.assertNotEqual(dpctl.get_current_device_type(), None)
129+
@pytest.mark.skipif(not has_gpu(), reason="No OpenCL GPU queues available")
130+
@pytest.mark.skipif(not has_cpu(), reason="No OpenCL CPU queues available")
131+
def test_num_current_queues_inside_threads():
132+
from threading import Thread
55133

134+
def SessionThread():
135+
assert dpctl.get_num_activated_queues() == 0
56136
with dpctl.device_context("opencl:gpu:0"):
57-
self.assertEqual(
58-
dpctl.get_current_device_type(), dpctl.device_type.gpu
59-
)
60-
61-
self.assertNotEqual(dpctl.get_current_device_type(), None)
62-
63-
@unittest.skipUnless(has_cpu(), "No OpenCL CPU queues available")
64-
def test_get_current_device_type_inside_nested_device_ctxt(self):
65-
self.assertNotEqual(dpctl.get_current_device_type(), None)
66-
67-
with dpctl.device_context("opencl:cpu:0"):
68-
self.assertEqual(
69-
dpctl.get_current_device_type(), dpctl.device_type.cpu
70-
)
71-
72-
with dpctl.device_context("opencl:gpu:0"):
73-
self.assertEqual(
74-
dpctl.get_current_device_type(), dpctl.device_type.gpu
75-
)
76-
self.assertEqual(
77-
dpctl.get_current_device_type(), dpctl.device_type.cpu
78-
)
79-
80-
self.assertNotEqual(dpctl.get_current_device_type(), None)
81-
82-
83-
@unittest.skipIf(not has_sycl_platforms(), "No SYCL platforms available")
84-
class TestGetCurrentQueueInMultipleThreads(unittest.TestCase):
85-
def test_num_current_queues_outside_with_clause(self):
86-
self.assertEqual(dpctl.get_num_activated_queues(), 0)
87-
88-
@unittest.skipUnless(has_gpu(), "No OpenCL GPU queues available")
89-
@unittest.skipUnless(has_cpu(), "No OpenCL CPU queues available")
90-
def test_num_current_queues_inside_with_clause(self):
91-
with dpctl.device_context("opencl:cpu:0"):
92-
self.assertEqual(dpctl.get_num_activated_queues(), 1)
93-
with dpctl.device_context("opencl:gpu:0"):
94-
self.assertEqual(dpctl.get_num_activated_queues(), 2)
95-
self.assertEqual(dpctl.get_num_activated_queues(), 0)
96-
97-
@unittest.skipUnless(has_gpu(), "No OpenCL GPU queues available")
98-
@unittest.skipUnless(has_cpu(), "No OpenCL CPU queues available")
99-
def test_num_current_queues_inside_threads(self):
100-
from threading import Thread
101-
102-
def SessionThread(self):
103-
self.assertEqual(dpctl.get_num_activated_queues(), 0)
104-
with dpctl.device_context("opencl:gpu:0"):
105-
self.assertEqual(dpctl.get_num_activated_queues(), 1)
106-
107-
Session1 = Thread(target=SessionThread(self))
108-
Session2 = Thread(target=SessionThread(self))
109-
with dpctl.device_context("opencl:cpu:0"):
110-
self.assertEqual(dpctl.get_num_activated_queues(), 1)
111-
Session1.start()
112-
Session2.start()
113-
114-
115-
if __name__ == "__main__":
116-
unittest.main()
137+
assert dpctl.get_num_activated_queues() == 1
138+
139+
Session1 = Thread(target=SessionThread())
140+
Session2 = Thread(target=SessionThread())
141+
with dpctl.device_context("opencl:cpu:0"):
142+
assert dpctl.get_num_activated_queues() == 1
143+
Session1.start()
144+
Session2.start()
145+
146+
147+
@pytest.mark.skipif(
148+
not has_sycl_platforms(), reason="No SYCL platforms available"
149+
)
150+
def test_get_current_backend():
151+
dpctl.get_current_backend()
152+
dpctl.get_current_device_type()
153+
q = dpctl.SyclQueue()
154+
dpctl.set_global_queue(q)
155+
if has_gpu():
156+
dpctl.set_global_queue("gpu")
157+
elif has_cpu():
158+
dpctl.set_global_queue("cpu")

0 commit comments

Comments
 (0)