Skip to content

Commit 459754b

Browse files
Move implementation of dpctl_*_selector class methods out to dedicated file
1 parent 23799c9 commit 459754b

File tree

2 files changed

+138
-72
lines changed

2 files changed

+138
-72
lines changed

libsyclinterface/include/dpctl_sycl_type_casters.hpp

Lines changed: 28 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -28,179 +28,135 @@
2828

2929
#ifdef __cplusplus
3030

31+
#include "Support/DllExport.h"
3132
#include "dpctl_sycl_types.h"
3233
#include <CL/sycl.hpp>
33-
#include <iostream>
3434
#include <vector>
3535

3636
namespace dpctl::syclinterface
3737
{
3838

3939
#if __SYCL_COMPILER_VERSION >= 20221020
4040

41-
class dpctl_device_selector
41+
class DPCTL_API dpctl_device_selector
4242
{
4343
public:
4444
virtual ~dpctl_device_selector() = default;
4545
static constexpr int REJECT_DEVICE = -1;
46-
virtual int operator()(const sycl::device &d) const
47-
{
48-
std::cout << "Outright rejecting "
49-
<< d.get_info<sycl::info::device::name>() << std::endl;
50-
return REJECT_DEVICE;
51-
};
46+
virtual int operator()(const sycl::device &) const;
5247
};
5348

54-
class dpctl_accelerator_selector : public dpctl_device_selector
49+
class DPCTL_API dpctl_accelerator_selector : public dpctl_device_selector
5550
{
5651
public:
5752
dpctl_accelerator_selector() = default;
58-
int operator()(const sycl::device &d) const override
59-
{
60-
return sycl::accelerator_selector_v(d);
61-
}
53+
int operator()(const sycl::device &d) const override;
6254
};
6355

64-
class dpctl_default_selector : public dpctl_device_selector
56+
class DPCTL_API dpctl_default_selector : public dpctl_device_selector
6557
{
6658
public:
6759
dpctl_default_selector() = default;
68-
int operator()(const sycl::device &d) const override
69-
{
70-
auto score = sycl::default_selector_v(d);
71-
std::cout << "Got score = " << score << std::endl;
72-
return score;
73-
}
60+
int operator()(const sycl::device &d) const override;
7461
};
7562

76-
class dpctl_gpu_selector : public dpctl_device_selector
63+
class DPCTL_API dpctl_gpu_selector : public dpctl_device_selector
7764
{
7865
public:
7966
dpctl_gpu_selector() = default;
80-
int operator()(const sycl::device &d) const override
81-
{
82-
return sycl::gpu_selector_v(d);
83-
}
67+
int operator()(const sycl::device &d) const override;
8468
};
8569

86-
class dpctl_cpu_selector : public dpctl_device_selector
70+
class DPCTL_API dpctl_cpu_selector : public dpctl_device_selector
8771
{
8872
public:
8973
dpctl_cpu_selector() = default;
90-
int operator()(const sycl::device &d) const override
91-
{
92-
return sycl::cpu_selector_v(d);
93-
}
74+
int operator()(const sycl::device &d) const override;
9475
};
9576

96-
class dpctl_filter_selector : public dpctl_device_selector
77+
class DPCTL_API dpctl_filter_selector : public dpctl_device_selector
9778
{
9879
public:
9980
dpctl_filter_selector(const std::string &fs) : _impl(fs) {}
100-
101-
int operator()(const sycl::device &d) const override
102-
{
103-
return _impl(d);
104-
}
81+
int operator()(const sycl::device &d) const override;
10582

10683
private:
10784
sycl::ext::oneapi::filter_selector _impl;
10885
};
10986

110-
class dpctl_host_selector : public dpctl_device_selector
87+
class DPCTL_API dpctl_host_selector : public dpctl_device_selector
11188
{
11289
public:
11390
dpctl_host_selector() = default;
114-
int operator()(const sycl::device &) const override
115-
{
116-
return REJECT_DEVICE;
117-
}
91+
int operator()(const sycl::device &) const override;
11892
};
11993

12094
#else
12195

122-
class dpctl_device_selector : public sycl::device_selector
96+
class DPCTL_API dpctl_device_selector : public sycl::device_selector
12397
{
12498
public:
12599
virtual ~dpctl_device_selector() = default;
126100

127101
virtual int operator()(const sycl::device &device) const = 0;
128102
};
129103

130-
class dpctl_accelerator_selector : public dpctl_device_selector
104+
class DPCTL_API dpctl_accelerator_selector : public dpctl_device_selector
131105
{
132106
public:
133107
dpctl_accelerator_selector() : _impl(){};
134-
int operator()(const sycl::device &d) const
135-
{
136-
return _impl(d);
137-
}
108+
int operator()(const sycl::device &d) const override;
138109

139110
private:
140111
sycl::accelerator_selector _impl;
141112
};
142113

143-
class dpctl_default_selector : public dpctl_device_selector
114+
class DPCTL_API dpctl_default_selector : public dpctl_device_selector
144115
{
145116
public:
146117
dpctl_default_selector() : _impl(){};
147-
int operator()(const sycl::device &d) const
148-
{
149-
return _impl(d);
150-
}
118+
int operator()(const sycl::device &d) const override;
151119

152120
private:
153121
sycl::default_selector _impl;
154122
};
155123

156-
class dpctl_gpu_selector : public dpctl_device_selector
124+
class DPCTL_API dpctl_gpu_selector : public dpctl_device_selector
157125
{
158126
public:
159127
dpctl_gpu_selector() : _impl(){};
160-
int operator()(const sycl::device &d) const
161-
{
162-
return _impl(d);
163-
}
128+
int operator()(const sycl::device &d) const override;
164129

165130
private:
166131
sycl::gpu_selector _impl;
167132
};
168133

169-
class dpctl_cpu_selector : public dpctl_device_selector
134+
class DPCTL_API dpctl_cpu_selector : public dpctl_device_selector
170135
{
171136
public:
172137
dpctl_cpu_selector() : _impl(){};
173-
int operator()(const sycl::device &d) const
174-
{
175-
return _impl(d);
176-
}
138+
int operator()(const sycl::device &d) const override;
177139

178140
private:
179141
sycl::cpu_selector _impl;
180142
};
181143

182-
class dpctl_filter_selector : public dpctl_device_selector
144+
class DPCTL_API dpctl_filter_selector : public dpctl_device_selector
183145
{
184146
public:
185147
dpctl_filter_selector(const std::string &fs) : _impl(fs) {}
186148

187-
int operator()(const sycl::device &d) const
188-
{
189-
return _impl(d);
190-
}
149+
int operator()(const sycl::device &d) const override;
191150

192151
private:
193152
sycl::ext::oneapi::filter_selector _impl;
194153
};
195154

196-
class dpctl_host_selector : public dpctl_device_selector
155+
class DPCTL_API dpctl_host_selector : public dpctl_device_selector
197156
{
198157
public:
199158
dpctl_host_selector() : _impl(){};
200-
int operator()(const sycl::device &d) const
201-
{
202-
return _impl(d);
203-
}
159+
int operator()(const sycl::device &d) const override;
204160

205161
private:
206162
sycl::host_selector _impl;
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
//===- dpctl_device_selector.cpp - Implementation of classes -*-C++-*- ===//
2+
// dpctl_device_selector, dpctl_default_selector, etc.
3+
//
4+
// Data Parallel Control (dpctl)
5+
//
6+
// Copyright 2020-2022 Intel Corporation
7+
//
8+
// Licensed under the Apache License, Version 2.0 (the "License");
9+
// you may not use this file except in compliance with the License.
10+
// You may obtain a copy of the License at
11+
//
12+
// http://www.apache.org/licenses/LICENSE-2.0
13+
//
14+
// Unless required by applicable law or agreed to in writing, software
15+
// distributed under the License is distributed on an "AS IS" BASIS,
16+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17+
// See the License for the specific language governing permissions and
18+
// limitations under the License.
19+
//
20+
//===----------------------------------------------------------------------===//
21+
///
22+
/// \file
23+
/// This file implements device-selection classes declared in
24+
/// dpctl_sycl_type_type_casters.hpp
25+
///
26+
//===----------------------------------------------------------------------===//
27+
28+
#include "dpctl_sycl_type_casters.hpp"
29+
#include <CL/sycl.hpp>
30+
31+
namespace dpctl
32+
{
33+
34+
namespace syclinterface
35+
{
36+
37+
#if __SYCL_COMPILER_VERSION >= 20221020
38+
39+
int dpctl_device_selector::operator()(const sycl::device &) const
40+
{
41+
return REJECT_DEVICE;
42+
}
43+
44+
int dpctl_accelerator_selector::operator()(const sycl::device &d) const
45+
{
46+
return sycl::accelerator_selector_v(d);
47+
}
48+
49+
int dpctl_default_selector::operator()(const sycl::device &d) const
50+
{
51+
auto score = sycl::default_selector_v(d);
52+
return score;
53+
}
54+
55+
int dpctl_gpu_selector::operator()(const sycl::device &d) const
56+
{
57+
return sycl::gpu_selector_v(d);
58+
}
59+
60+
int dpctl_cpu_selector::operator()(const sycl::device &d) const
61+
{
62+
return sycl::cpu_selector_v(d);
63+
}
64+
65+
int dpctl_filter_selector::operator()(const sycl::device &d) const
66+
{
67+
return _impl(d);
68+
}
69+
70+
int dpctl_host_selector::operator()(const sycl::device &) const
71+
{
72+
return REJECT_DEVICE;
73+
}
74+
75+
#else
76+
77+
int dpctl_accelerator_selector::operator()(const sycl::device &d) const
78+
{
79+
return _impl(d);
80+
}
81+
82+
int dpctl_default_selector::operator()(const sycl::device &d) const
83+
{
84+
return _impl(d);
85+
}
86+
87+
int dpctl_gpu_selector::operator()(const sycl::device &d) const
88+
{
89+
return _impl(d);
90+
}
91+
92+
int dpctl_cpu_selector::operator()(const sycl::device &d) const
93+
{
94+
return _impl(d);
95+
}
96+
97+
int dpctl_filter_selector::operator()(const sycl::device &d) const
98+
{
99+
return _impl(d);
100+
}
101+
102+
int dpctl_host_selector::operator()(const sycl::device &d) const
103+
{
104+
return _impl(d);
105+
}
106+
107+
#endif
108+
109+
} // namespace syclinterface
110+
} // namespace dpctl

0 commit comments

Comments
 (0)