Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update sycl_native_experimental branch #322

Merged
Merged
Changes from 1 commit
Commits
Show all changes
175 commits
Select commit Hold shift + click to select a range
f928108
Add portBLAS and portDNN as separate actions to the
MaryaSharf Oct 26, 2023
59aee4c
Merge pull request #178 from MaryaSharf/marya/portBLAS
MaryaSharf Dec 1, 2023
4ed567e
Avoid ChooseMSVCCRT on LLVM 18+.
hvdijk Dec 4, 2023
912e763
[compiler] Remove use of Type::getInt8PtrTy
frasercrmck Dec 4, 2023
0b13d59
Merge pull request #244 from hvdijk/llvm18-msvc
hvdijk Dec 4, 2023
343a428
Merge pull request #243 from frasercrmck/remove-int8ptr
frasercrmck Dec 4, 2023
d1afd47
[spirv-ll] Refactor how debug ranges/scopes are handled
frasercrmck Nov 27, 2023
1fde0b3
Merge pull request #235 from frasercrmck/spirv-ll-debug-info-scopes
frasercrmck Dec 4, 2023
e1ba31e
Move LLVM 18 fixups.
hvdijk Dec 5, 2023
e7f5744
[refsi] Update Refsi memory specifications
RossBrunton Nov 28, 2023
6d697de
Merge pull request #237 from RossBrunton/linkerfile
RossBrunton Dec 5, 2023
f8ff552
Merge pull request #245 from hvdijk/llvm18
hvdijk Dec 5, 2023
94fbd3c
Increase main memory size limit in memory map
RossBrunton Dec 6, 2023
d0f09c8
Merge pull request #247 from RossBrunton/sizeincrease
RossBrunton Dec 6, 2023
8824213
[tutorial] Use 'patch' rather than 'git apply'
frasercrmck Dec 6, 2023
2c2ad21
[tutorial] Update patch line numbers to account for license headers
frasercrmck Dec 6, 2023
64bc9eb
[tutorial] Fix HAL tutorial
frasercrmck Dec 6, 2023
45912ac
[tutorial] Update RefSiWrapperPass tutorial
frasercrmck Dec 6, 2023
fd3b422
[tutorial] Fix a couple of typos in the new-mux-target tutorial
frasercrmck Dec 6, 2023
d1af734
[tutorial] Update tutorial to fix memory leak
frasercrmck Dec 6, 2023
82dc4b1
Improve experience running tutorial script twice without '-o'
frasercrmck Dec 7, 2023
9d326d6
[tutorial] Improve alignBuffer function
frasercrmck Dec 7, 2023
64eb86c
Allow passing relative paths to create_target.py
frasercrmck Dec 7, 2023
fc70087
[tutorial] Fix mismatched namespaces
frasercrmck Dec 7, 2023
6b677bd
[tutorial] Fix a typo
frasercrmck Dec 7, 2023
b3ad276
Manual type legalization.
hvdijk Dec 7, 2023
379f43d
Merge pull request #236 from hvdijk/manual-type-legalization
hvdijk Dec 7, 2023
2ee7cd0
Merge pull request #248 from frasercrmck/fix-hal-tutorial
frasercrmck Dec 11, 2023
33edf73
[spirv-ll] Fully support OpenCL.DebugInfo.100 instructions
frasercrmck Nov 21, 2023
050d91a
Merge pull request #246 from frasercrmck/spirv-ll-opencl-dbg-full
frasercrmck Dec 11, 2023
a47697d
Minimal support for out-of-order queues
hvdijk Dec 11, 2023
695309d
Fixed threading issues with usm and kernel execution
coldav Dec 7, 2023
1257848
Merge pull request #251 from hvdijk/ooo
hvdijk Dec 12, 2023
e435787
Merge pull request #249 from coldav/colin/fix_svm_usm_issues
coldav Dec 12, 2023
352c021
[compiler] Improve diagnostics for failing sub-groups
frasercrmck Dec 12, 2023
892d05b
Merge pull request #253 from frasercrmck/better-subgroup-diags
frasercrmck Dec 13, 2023
0b67d77
[vecz] Provide more context when CFG conversion fails
frasercrmck Dec 13, 2023
eab14cd
Merge pull request #254 from frasercrmck/better-cfg-convert-diags
frasercrmck Dec 13, 2023
58a2394
Remove GCC 7 workaround.
hvdijk Dec 13, 2023
2bb03e6
[vecz] Run SROA as part of the vecz pipeline
frasercrmck Dec 14, 2023
95718ac
Merge pull request #255 from hvdijk/remove-gcc7-workaround
hvdijk Dec 14, 2023
c57a32f
[host][riscv] Advertise/support a sub-group size of 32
frasercrmck Dec 14, 2023
a3eeffe
Merge pull request #256 from frasercrmck/vecz-sroa
frasercrmck Dec 14, 2023
a3056aa
[vecz] Simplify pass construction process
frasercrmck Dec 14, 2023
1389966
Merge pull request #258 from frasercrmck/vecz-pass-managers
frasercrmck Dec 14, 2023
386bce9
Basic shared USM support
RossBrunton Dec 7, 2023
4434a40
Merge pull request #250 from RossBrunton/sharedusm
RossBrunton Dec 14, 2023
69a0dff
Merge pull request #257 from frasercrmck/subgroup-32
frasercrmck Dec 14, 2023
344f888
Revert "Fixed threading issues with usm and kernel execution"
coldav Dec 14, 2023
4a42750
[ci] Test OpenCL CTS subgroups during MR testing
frasercrmck Sep 19, 2023
eb53292
Merge pull request #260 from coldav/colin/revert_usm_thread_fix
coldav Dec 14, 2023
6c335c1
Merge pull request #136 from frasercrmck/run-subgroups-mrs
frasercrmck Dec 14, 2023
74ba46d
More LLVM 18 fixups.
hvdijk Dec 18, 2023
65e6dfd
Merge pull request #261 from hvdijk/llvm18
hvdijk Dec 18, 2023
5190c5a
[NFC] Silence CMake.
hvdijk Dec 18, 2023
94d02d4
Merge pull request #262 from hvdijk/silence-cmake
hvdijk Dec 18, 2023
5bf5ba7
Fix asan memory leaks in UnitCL shared alloc tests
coldav Dec 18, 2023
58eeee1
Merge pull request #263 from coldav/colin/fix_asan_issues
coldav Dec 18, 2023
81157ba
Use @llvm.sqrt.* intrincs rather than rolling our own.
hvdijk Dec 18, 2023
f188fe5
[vecz] Add support for masking atomic RMW instructions
frasercrmck Dec 14, 2023
51b4ae8
Merge pull request #265 from hvdijk/hardware-sqrt
hvdijk Dec 18, 2023
1d872df
Merge pull request #264 from frasercrmck/vecz-masked-atomics
frasercrmck Dec 19, 2023
2715ea1
[compiler] Handle scalable structs as barrier live variables
frasercrmck Dec 20, 2023
a19c02c
Merge pull request #267 from frasercrmck/scalable-struct-live-vars
frasercrmck Dec 20, 2023
9c915d9
Fixed threading issues with usm and kernel execution
coldav Dec 19, 2023
db755a2
[vecz] Add support for masking cmpxchg instructions
frasercrmck Dec 19, 2023
1e1b744
Merge pull request #268 from coldav/colin/fix_usm_thread_issues
coldav Dec 20, 2023
d77f61e
Merge pull request #266 from frasercrmck/vecz-masked-cmpxhg
frasercrmck Dec 20, 2023
70e68c7
[usm] Support filling and freeing arbitrary host pointers
frasercrmck Dec 14, 2023
2d186ab
Merge pull request #259 from frasercrmck/usm-fill-free-user
frasercrmck Dec 20, 2023
281f8a6
[NFC] Change startswith/endswith to starts_with/ends_with.
hvdijk Jan 2, 2024
5ba3c05
[compiler] Remove the RemoveFencesPass
frasercrmck Dec 20, 2023
687d418
Merge pull request #271 from hvdijk/starts_with
hvdijk Jan 2, 2024
a29bb08
Merge pull request #269 from frasercrmck/no-run-remove-fences
frasercrmck Jan 2, 2024
775e7cc
[NFC] Change more startswith/endswith to starts_with/ends_with.
hvdijk Jan 2, 2024
6102a14
Merge pull request #272 from hvdijk/starts_with
hvdijk Jan 2, 2024
cb0d71a
[vecz] Fix missing CHECKs in LIT tests
frasercrmck Jan 2, 2024
c0439b1
[vecz] Fix missing CHECK in LIT test
frasercrmck Jan 2, 2024
c0ad85f
[vecz] Enable XFAIL tests
frasercrmck Jan 2, 2024
29f30ea
[vecz] Merge and fix call instantiation LIT tests
frasercrmck Jan 2, 2024
f6b5f2a
Merge pull request #273 from frasercrmck/fix-vecz-lit-tests
frasercrmck Jan 2, 2024
90cf2fa
Fix boundary case in log2_extended_precision_half_safe.
hvdijk Jan 2, 2024
cfb4352
[vecz] Add nounwind/norecurse attributes to internal vecz builtins
frasercrmck Jan 2, 2024
a20c693
[host] Fix LIT tests when CA_HOST_TARGET_CPU is set
frasercrmck Jan 3, 2024
ce8a356
Merge pull request #274 from frasercrmck/vecz-nounwind-builtins
frasercrmck Jan 3, 2024
6a4d6b9
Merge pull request #276 from frasercrmck/fix-host-lit-skylake
frasercrmck Jan 3, 2024
ba61522
Merge pull request #275 from hvdijk/log2_39f6
hvdijk Jan 3, 2024
13c27a0
[compiler] Remove 'using namespace llvm' from header file
frasercrmck Jan 3, 2024
3f767d9
Merge pull request #277 from frasercrmck/no-using-namespace-in-header
frasercrmck Jan 3, 2024
b526311
Create a basic nightly OCK build and test vector-add using oneAPI.
MaryaSharf Nov 22, 2023
131b366
Merge pull request #226 from MaryaSharf/marya/artifacts
MaryaSharf Jan 3, 2024
c17f0fd
Improve UnitCL pow testing.
hvdijk Jan 4, 2024
ae30b07
Merge pull request #278 from hvdijk/pow-testing
hvdijk Jan 4, 2024
192e231
Fix cross queue dependency when command buffer already dispatched.
coldav Dec 19, 2023
afb80cb
[NFC] Make horner_polynomial less error-prone.
hvdijk Jan 5, 2024
c59ec90
Improve precision of horner_polynomial
hvdijk Jan 5, 2024
ff57593
Fix powr and re-enable test.
hvdijk Jan 5, 2024
f732b95
Merge pull request #280 from hvdijk/horner-precision
hvdijk Jan 8, 2024
ece3cd0
Merge pull request #281 from hvdijk/fix-powr
hvdijk Jan 8, 2024
3d708ba
[NFC] Build Abacus in C++17 mode.
hvdijk Jan 8, 2024
ce793d3
Merge pull request #283 from hvdijk/cxx17
hvdijk Jan 8, 2024
14ed452
Avoid undefined behavior in FMA.
hvdijk Jan 9, 2024
efc890b
Remove CA_CL_FORCE_PROFILE
coldav Jan 9, 2024
400c4cb
Merge pull request #286 from hvdijk/avoid-fma-ub
hvdijk Jan 9, 2024
309776d
Merge pull request #287 from coldav/colin/remove_ca_force_profile
coldav Jan 9, 2024
e298284
[vecz] Ensure inactive lanes don't contribute to branch conditions
frasercrmck Jan 9, 2024
0a774b6
Merge pull request #285 from frasercrmck/vecz-divergent-branches
frasercrmck Jan 10, 2024
8b5a48a
Merge pull request #279 from coldav/colin/fix_multiple_queue_dependency
coldav Jan 10, 2024
6b703c7
Remove unused cargo include from pass_functions.h
coldav Jan 10, 2024
8296cd4
[compiler] Revert use of FMA in horner polynomial
frasercrmck Jan 10, 2024
f860f23
[compiler] Use llvm.fma in abacus_fma
frasercrmck Jan 9, 2024
92cf263
Make the use of @llvm.fma conditional.
hvdijk Jan 10, 2024
18de5f8
Merge pull request #288 from hvdijk/fma
hvdijk Jan 10, 2024
7c74783
Merge pull request #289 from frasercrmck/speedup-horner
frasercrmck Jan 10, 2024
62d24b1
[NFC] Suppress clang-tidy warnings.
hvdijk Jan 10, 2024
fc8b8b3
Merge pull request #292 from hvdijk/suppress-clang-tidy
hvdijk Jan 11, 2024
c79606e
[NFC] Remove cargo support for old compilers.
hvdijk Jan 11, 2024
9627f48
Merge pull request #293 from hvdijk/cargo-remove-cruft
hvdijk Jan 11, 2024
303723f
Assume FMA support, bump x86-64 to x86-64-v3.
hvdijk Jan 11, 2024
3b1652a
Merge pull request #291 from hvdijk/assume-fma
hvdijk Jan 11, 2024
927452e
[compiler] Ensure createLoop always creates a loop
frasercrmck Oct 11, 2023
965e267
Merge pull request #158 from frasercrmck/create-loop-no-magic
frasercrmck Jan 11, 2024
e19d2b3
Create a workflow to publish pre-release OCK on
MaryaSharf Dec 21, 2023
691b289
Merge pull request #270 from MaryaSharf/marya/publish
MaryaSharf Jan 14, 2024
3e4b9b5
Merge pull request #290 from coldav/colin/remove_cargo_include
coldav Jan 15, 2024
e84e596
[NFC] Merge OpaquePointers with main tests.
hvdijk Jan 16, 2024
e71008b
Merge pull request #295 from hvdijk/remove-op-tests
hvdijk Jan 16, 2024
fe94afb
[tests] Update for LLVM 18.
hvdijk Jan 16, 2024
0aeca1b
[NFC] Pick a style for const.
hvdijk Jan 16, 2024
3713e73
Merge pull request #297 from hvdijk/const-style
hvdijk Jan 18, 2024
0a09502
Merge pull request #296 from hvdijk/llvm18-tests
hvdijk Jan 18, 2024
c573710
Fix building documentation.
hvdijk Jan 18, 2024
13401be
Merge pull request #302 from hvdijk/fix-doc
hvdijk Jan 18, 2024
40dbe2f
[NFC] Upgrade to clang-format-17.
hvdijk Jan 18, 2024
c995dee
Merge pull request #301 from hvdijk/clang-format-17
hvdijk Jan 18, 2024
1101145
[compiler] Fix unchecked std::optional accesses
frasercrmck Jan 11, 2024
4f62c4d
[NFC] Use *_t and *_v type traits.
hvdijk Jan 18, 2024
d4db1df
Merge pull request #300 from frasercrmck/unchecked-optional-access
frasercrmck Jan 18, 2024
6a36e55
Merge pull request #303 from hvdijk/cxx14-type-traits
hvdijk Jan 18, 2024
7c6a9d1
[NFC] Add const.
hvdijk Jan 18, 2024
fa51f65
Merge pull request #304 from hvdijk/use-const
hvdijk Jan 18, 2024
2fb92cc
Add build and run Resnet50 and VGG16 actions
MaryaSharf Dec 2, 2023
b2f1da8
Merge pull request #241 from MaryaSharf/marya/netwrks
MaryaSharf Jan 19, 2024
fc153fa
[NFC] Add more const.
hvdijk Jan 19, 2024
12e10e5
Merge pull request #305 from hvdijk/use-const
hvdijk Jan 19, 2024
96ac0ce
[NFC] Address clang-tidy-17 readability warnings.
hvdijk Jan 22, 2024
140c194
Merge pull request #306 from hvdijk/clang-tidy-readability
hvdijk Jan 22, 2024
b0468a1
[NFC] Remove unused denorm_support.
hvdijk Jan 22, 2024
58b063d
Merge pull request #308 from hvdijk/remove-denorm-support
hvdijk Jan 22, 2024
121f67a
[compiler] Emit 'noundef' function parameter/return attributes
frasercrmck Jan 22, 2024
d26a496
Merge pull request #309 from frasercrmck/opencl-c-noundef
frasercrmck Jan 22, 2024
4ac6ab4
Adding riscv testing to OCK repo
MaryaSharf Jan 18, 2024
6ac3ad7
Merge pull request #299 from MaryaSharf/marya/add_riscv
MaryaSharf Jan 23, 2024
89335e2
[spirv-ll] Add noundef param attrs to kernel entry points
frasercrmck Jan 23, 2024
d82ac48
USM testing rework for better USM support
RossBrunton Jan 9, 2024
26a67bd
Merge pull request #310 from frasercrmck/spirv-ll-noundef-attrs
frasercrmck Jan 23, 2024
9a111ee
Merge pull request #298 from RossBrunton/usmtestup
RossBrunton Jan 23, 2024
485a1e1
[compiler] Improve analysis of 'true uniform' values
frasercrmck Jan 22, 2024
b12be1f
Merge pull request #307 from frasercrmck/better-uniform-analysis
frasercrmck Jan 24, 2024
a43516b
[RISC-V] Report denormal support.
hvdijk Jan 24, 2024
755f862
Remove debug code that snuck in
RossBrunton Jan 24, 2024
5d530be
Merge pull request #312 from hvdijk/riscv-denorm
hvdijk Jan 24, 2024
43961e7
Merge pull request #313 from RossBrunton/removedebug
RossBrunton Jan 24, 2024
b265744
Split compiler-utils into compiler-pipeline and compiler-binary-metadata
coldav Jan 24, 2024
3b9b883
Merge pull request #314 from coldav/colin/split_compiler_utils_metadata
coldav Jan 25, 2024
e1314ae
Fix missing "frees" on USM pointers
RossBrunton Jan 25, 2024
8754ae0
[compiler] Set attributes on packed args and on loads from them
frasercrmck Jan 25, 2024
6efc9b8
Merge pull request #316 from frasercrmck/kernel-args-attrs
frasercrmck Jan 26, 2024
60302e5
Merge pull request #317 from RossBrunton/fixfree
RossBrunton Jan 29, 2024
fe4a486
Improve error handling.
hvdijk Jan 29, 2024
af4e37d
Update findDbgDeclare for LLVM 18
PietroGhg Jan 29, 2024
1dda1f5
Merge pull request #319 from hvdijk/error-handling
hvdijk Jan 29, 2024
49722f9
Merge pull request #320 from PietroGhg/pietro/finddbgdeclare
PietroGhg Jan 30, 2024
639d28e
Merge branch 'main' into pietro/update_30_jan
PietroGhg Jan 30, 2024
542ee12
compiler-utils -> compiler-pipeline
PietroGhg Jan 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
USM testing rework for better USM support
This change brings a lot of duplicated code into
`cl_intel_unified_shared_memory_Test` (the base class of many
tests). Specifically, it provides properties to check host and
shared memory USM support, and helper functions to generate USM
pointers.

One of the design changes was adding a way to iterate through all
available USM pointer types without having to copy-paste code. This
is used to add shared allocations to many places alongside device
and host allocations.

This results in the tests doing more work, but this only causes a
10% reduction in the time taken for testing, which is about 300ms
on my system.
RossBrunton committed Jan 23, 2024
commit d82ac48ff94dc2efac60625337128e87087ad3da
75 changes: 75 additions & 0 deletions source/cl/test/UnitCL/include/cl_intel_unified_shared_memory.h
Original file line number Diff line number Diff line change
@@ -17,6 +17,8 @@
#define UNITCL_USM_H_INCLUDED

#include <CL/cl_ext.h>
#include <cargo/error.h>
#include <cargo/small_vector.h>

#include "Common.h"

@@ -30,6 +32,13 @@ struct cl_intel_unified_shared_memory_Test : public virtual ucl::ContextTest {
GTEST_SKIP();
}

ASSERT_SUCCESS(clGetDeviceInfo(
device, CL_DEVICE_HOST_MEM_CAPABILITIES_INTEL,
sizeof(host_capabilities), &host_capabilities, nullptr));
ASSERT_SUCCESS(clGetDeviceInfo(
device, CL_DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL,
sizeof(shared_capabilities), &shared_capabilities, nullptr));

#define CL_GET_EXTENSION_ADDRESS(FUNC) \
FUNC = reinterpret_cast<FUNC##_fn>( \
clGetExtensionFunctionAddressForPlatform(platform, #FUNC)); \
@@ -51,11 +60,77 @@ struct cl_intel_unified_shared_memory_Test : public virtual ucl::ContextTest {
#undef GET_EXTENSION_ADDRESS
}

void TearDown() override {
for (auto ptr : allPointers()) {
cl_int err = clMemBlockingFreeINTEL(context, ptr);
EXPECT_SUCCESS(err);
}
device_ptr = shared_ptr = host_ptr = nullptr;

ucl::ContextTest::TearDown();
}

static void *getPointerOffset(void *ptr, size_t offset) {
cl_char *byte_ptr = reinterpret_cast<cl_char *>(ptr) + offset;
return reinterpret_cast<void *>(byte_ptr);
}

/// Allocates USM pointers with the given size of alignment
///
/// Device, host and/or shared USM allocations will be allocated, depending on
/// what the device supports. The pointers will be available in the
/// `device_ptr`, `host_ptr` and `shared_ptr` members of this object, and will
/// be freed during TearDown.
void initPointers(size_t bytes, size_t align) {
cl_int err;

if (host_capabilities) {
host_ptr = clHostMemAllocINTEL(context, {}, bytes, align, &err);
ASSERT_SUCCESS(err);
ASSERT_TRUE(host_ptr != nullptr);
}

if (shared_capabilities != 0) {
shared_ptr =
clSharedMemAllocINTEL(context, device, {}, bytes, align, &err);
ASSERT_SUCCESS(err);
ASSERT_TRUE(shared_ptr != nullptr);
}

device_ptr =
clDeviceMemAllocINTEL(context, device, nullptr, bytes, align, &err);
ASSERT_SUCCESS(err);
ASSERT_TRUE(device_ptr != nullptr);
}

/// Return a vector of available USM pointers allocated by `initPointers`
///
/// This will return an array containing up to 3 pointers, one of each device,
/// host and shared, depending on the capabilities of the device.
cargo::small_vector<void *, 3> allPointers() {
cargo::small_vector<void *, 3> to_return{};

if (device_ptr) {
(void)to_return.push_back(device_ptr);
}
if (shared_ptr) {
(void)to_return.push_back(shared_ptr);
}
if (host_ptr) {
(void)to_return.push_back(host_ptr);
}

return to_return;
}

constexpr static size_t MAX_NUM_POINTERS = 3;
void *host_ptr = nullptr;
void *shared_ptr = nullptr;
void *device_ptr = nullptr;

cl_device_unified_shared_memory_capabilities_intel host_capabilities = 0;
cl_device_unified_shared_memory_capabilities_intel shared_capabilities = 0;

clHostMemAllocINTEL_fn clHostMemAllocINTEL = nullptr;
clDeviceMemAllocINTEL_fn clDeviceMemAllocINTEL = nullptr;
clSharedMemAllocINTEL_fn clSharedMemAllocINTEL = nullptr;
Loading