Remove a variable that was set when an OpenCL API call failed, but
never read again. Instead, return immediately upon failure.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
When generating the kernel code, consider the return type(s) and the
types of all parameters, instead of only the first parameter type.
This fixes a missing extension pragma for certain cases (such as
`nan`).
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
This change introduces a new command-line parameter to enable
parallel execution by a specified number of worker threads. When
parallel execution is requested, tests are distributed across
the worker threads. This behaviour is disabled by default.
This does not currently work for all suites as some of them are
using global variables to configure tests. For the suites that
do not use global state, this change reduced the execution time
by up to 5x on an 8-core machine.
Signed-off-by: Kévin Petit <kpet@free.fr>
Rebase of my previous clGetImageRequirementsInfoEXT flag=0 fix PR: PR1632
Pass 'flag' variable through to clGetImageRequirementsInfoEXT:
Almost all of the image_from_buffer cl_ext_image_requirements_info tests pass '0' as the 'flags' to clGetImageRequirementsInfoEXT.
Passing '0' as the flags is valid according to the spec, but since the tests are calling clGetImageRequirementsInfoEXT in a loop over a list of flags it doesn't seem intended that all the tests pass '0'.
Fixed CL_MEM_KERNEL_READ_AND_WRITE flag override:
The mem_flags override for CL_MEM_KERNEL_READ_AND_WRITE was incorrectly affecting subsequent iterations of the image_format loop.
Fixed by using a separate variable inside the loop.
* define CL_NO_PROTOTYPES
When we switch to generated headers this will suppress declaration
of extension functions, so we can continue to declare function
pointers with the same name.
* switch to CL_NO_EXTENSION_PROTOTYPES
CL_NO_PROTOTYPES will omit declarations of core OpenCL APIs also.
Enable a larger set of compiler warnings globally for gcc/clang-like
compilers. This should help catch issues early and result in better
code quality. These warnings are primarily aimed at OpenCL-CTS
developers, so only enable them for non-release builds.
Ensure `-Wall` and `-Werror` are set before any `-Wno-...` options, as
the `-Wall`/`-Werror` flags undo `-Wno-...` for some compilers.
The code base does not compile cleanly with `-Wall` yet, so disable
some warnings. Do this globally for now, to keep this patch small and
localized.
Silence `-Wunknown-pragmas` (instead of only making them non-fatal),
to avoid verbose warning logs.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
To the best of my understanding, these occurrences of the
`-Wunused-but-set` warnings do not reveal any underlying issues, so we
can safely remove these variables. There are more occurrences of this
warning in other places (not touched by this commit) that require
further analysis.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
The `-Wno-...` compiler flags only result in a diagnostic if another
diagnostic is emitted. When passing such flags to
`add_cxx_flag_if_supported` (and `check_cxx_compiler_flag`), the test
would always succeed. For such cases, test the `-W...` flag instead
of the `-Wno-...` flag.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
* Added support to test half floats with printf calls (issue #142, printf)
* Added corrections related to rounding and casting halfs (issue #142, printf)
* Reusing similar function (issue #142, printf)
* Corrected path without cl_khr_fp16 support (issue #142, printf)
* Cosmetic fix for order of vector tests (issue #142, printf)
* Added correction related to vendor test review (issue #142, printf)
* Added initial commit for issue #1369, p.1.4
* Added support for clGetCommandBufferInfoKHR test cases (issue #1369, p.1.3)
* Added correction for CL_COMMAND_BUFFER_QUEUES_KHR query test (issue #1369, p.1.4)
* Added corrections related to changed orders of operations Skip/SetUp and code review (issue #1369, clGetCommandBufferInfoKHR)
* Added cosmetic correction related to printout messages (issue #1369, clGetCommandBufferInfoKHR)
* Corrected info_prop_array test to accept scenario without simultaneous use (issue #1369, p.1.4)
* Added protection test agains POCL unexpected values (issue #1369, p.1.4)
* Added corrections related to Ben's code review
* Add mutable dispatch tests.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Mutable dispatch buffer tests redesigned to inherit from command buffer tests.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Add remaining tests for clGetMutableCommandInfoKHR.
Added tests for missing queries:
* CL_MUTABLE_DISPATCH_PROPERTIES_ARRAY_KHR
* CL_MUTABLE_DISPATCH_KERNEL_KHR
* CL_MUTABLE_DISPATCH_DIMENSIONS_KHR
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Minor code cleanup.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Introduce review changes.
Introduce changes requested in review:
- Remove bitwise chceck for CL_DEVICE_MUTABLE_DISPATCH_CAPABILITIES_KHR
- Add error check for clFinalizeCommandBufferKHR
- Add global_work_size to clCommandNDRangeKernelKHR for CL_MUTABLE_COMMAND_COMMAND_BUFFER_KHR
- Move BasicMutableCommandBufferTest to a separate header file
- Change name of file command_buffer_test_mutable_dispatch.cpp to mutable_command_info.cpp
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Set global_work_size on every use of clCommandNDRangeKernelKHR.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Apply changes for review.
- Add error check for init_extension_functions()
- Check mutable_capabilities for non-zero
- Replace clKernelWrapper with cl_kernel for CL_MUTABLE_DISPATCH_KERNEL_KHR test
- Replace clCommandBufferWrapper with cl_command_buffer_khr for CL_MUTABLE_COMMAND_COMMAND_BUFFER_KHR test
- Remove unneded test_command_buffer declarations
- Check type for CL_MUTABLE_COMMAND_COMMAND_TYPE_KHR
- Remove retain() from operator= in clCommandBufferWrapper
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Apply changes for review.
Apply changes for review:
- Fix header guards
- Add copyright header
- Change checks for test_kernel, test_queue
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
---------
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Add external semaphore tests.
Added basic test to check the functionality of cl_ext_external_semaphore_test extension.
Tests rely on Vulkan API as the producer of the external semaphore functionality. The
Vulkan wrapper has been copied from the Vulkan CTS tests and minor changes have been
introduced. A separate copy of the Vulkan wrapper is for breaking any dependencies
between different CTS modules and thus make the build system simpler.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Fix clang-format
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Move vulkan wrapper to a separate library.
Vulkan wrapper is extracted as a separate module and can be used in different
CTS tests as a shared library.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Add cl_ext_external_samaphore tests based on cl_khr_semaphore tests.
Added cl_khr_semaphore adjusted to creating semaphores in Vulkan context
and importing them through export semaphore functionality in OpenCL
(cl_ext_external_samaphore).
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Cleanup.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Fix build issues.
* Add missing directories for build cl_ext_external_semaphore.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Set Vulkan lib directory.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Change extension directory name.
Changed extensions directory name from cl_ext_external_semaphore to cl_khr_external_semaphore.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Remove unneeded compile options.
Removed VK_USE_PLATFORM_WIN32_KHR option from cl_khr_external_semaphore
compilation arguments.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
---------
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
Replace occurrences of `BuildKernelInfo2` with `BuildKernelInfo`.
This aligns the kernel creation code of the non-threaded tests to
the kernel creation code of the threaded tests.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
* [NFC] Remove duplicate symbol declarations
Those are provided by testHarness.h.
Signed-off-by: Kévin Petit <kpet@free.fr>
* add missing include
---------
Signed-off-by: Kévin Petit <kpet@free.fr>
In `os_helpers.cpp`, the preceding `if` already handles negative
values, so cast to unsigned.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
The OpenCL Headers have cl_khr_external_memory_dx, cl_khr_external_memory_dma_buf and cl_khr_external_semaphore_dx_fence as extension strings, but CTS Compiler fails if an implementation says that it supports them.
`sizes` is a pointer argument, so the expression does not compute the
presumably intended number of elements in `sizes`.
Fixes a `-Wsizeof-pointer-div` warning.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
* Added initial commit for event sync test cases (issue #1369, p.3.3)
* Added test cases for return event scenarios with and without out-of-order, work in progress (#1369, p.3.3)
* Added support for return event test cases for both regular and out-of-order command queue (#1369, p.3.3)
* Added user event test cases, cosmetic corrections (#1369, p.3.3)
* Added correction for windows build (#1369, p.3.3)
* Corrected proper testing of test fail/skip conditions (#1369, p.3.3)
* Added corrections related to PR review (#1369, p.3.3)
* Added correction related to change of order Skip/SetUp (issue #1369, event sync)
* Added clang format correction for previous commit
* Reordered initialization of attributes.
The `cl_*` types need two levels of braces for initialization: the
outer braces for the union and the inner braces for the array.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
test_vulkan is disabled by default as part of
PR #1530.
Given the ongoing development to test_vulkan,
it is important to have this enabled in CI builds
to avoid breaking test builds.
Enable the test build as part of presubmit script.
Disabling of frem and fmod by b81b49e1 ("spirv: disable frem and fmod
tests for now (#1614)", 2023-02-07) introduced some new warnings about
multi-line `//` comments due to the trailing backslashes. Fix these.
Also fix a typo.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
* Added test cases for profiling command-buffers according to issue description #1369, p.3.2:
https://github.com/KhronosGroup/OpenCL-CTS/issues/1369
* Added cosmetic fixes (#1369, p.3.2)
* Corrected the path of initialization profiling event for simultaneous test (#1369, p.3.2):
https://github.com/KhronosGroup/OpenCL-CTS/issues/1369
* clang format fix
* Added correction related to macos build error (#1369, p.3.2)
* Applied corrections related to code review (#1369, p.3.2)
* Corrected query of queue properies (issue #1369, command buffer profiling)
* Reverted formating of unrelated header
* Added code review corrections for type consistency and fail condition (issue #1369, p.3.2)
* Reordered initialization of attributes.
* Reverted correct order of initialization.
* Add test for clGetEventInfo info queries.
Test clGetEventInfo() info queries from event returned by command-buffer
enqueue for the single command-queue to command-buffer case:
* CL_EVENT_COMMAND_TYPE is CL_COMMAND_COMMAND_BUFFER_KHR
* CL_EVENT_COMMAND_QUEUE
* CL_EVENT_CONTEXT
* CL_EVENT_COMMAND_EXECUTION_STATUS
* CL_EVENT_REFERENCE_COUNT
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
* Fix return TEST_FAIL instead of -1.
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
---------
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
The `command_buffer` member is initialized with `this`, and should
thus be initialized after all other members have been initialized, to
avoid any potential uninitialized data accesses by `command_buffer`'s
constructor. This is currently not a problem, but would become a
problem when `command_buffer`'s constructor accesses the object
through its parameter.
Fixes a -Wreorder warning.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
* Added tests for 1.1 individual command entry-points.
* Adding fixes pointed out in review: checks for CL_DEVICE_IMAGE_SUPPORT, remove redundant buffers, synchronisation issues, fixed clang-format, other minor issues.
* Fix compilation issues for Windows and macOS, fix clang-format.
* Fix compilation issue for Windows.
* Removed redundant blocking and event operations.
* Style fixes for test skip conditions.
* Fix clang format.
* Fixed function names, file names, comments and barrier test.
* Restored Individual command entry-points tests after merge with main.
* Fix clang format.
* Superficial fixes for review.
* Fix Skip() condition for barrier test
* Fix typos
* Fix new line
Signed-off-by: Paweł Jastrzębski <p.k.jastrzebski@gmail.com>
The OpenCL SPIR-V Environment Specification does not require the SPIR-V
opcodes `OpFMod` and `OpFRem` to match any OpenCL C semantics, so
implementations implementing those two instructions according to Vulkan
and/or OpenGL semantics will fail those tests without actually violating
any OpenCL specification.
We should keep those tests disabled until we figure out what the actual
precision requierement should be and update the test accordingly.
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Simplify code by returning directly instead of using goto statements.
Although intended as an NFC commit, this changes the behaviour around
clFlush calls. Before this commit, failure of the third clFlush call
would print "clFlush 3 failed" and return the clFlush error code.
This behaviour is inconsistent with the other clFlush calls in
math_brute_force, which are not fatal. The lack of a `goto exit`
makes me suspect that this 3rd clFlush call was intended to be
non-fatal too. As such, this commit makes all clFlush calls non-fatal
by returning `CL_SUCCESS` even when the third clFlush call fails.
Original patch by Marco Antognini.
Signed-off-by: Marco Antognini <marco.antognini@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
* Don't recalculate image parameters repeatedly in `test_read_image()`
We've already done this in the loop. There's no need to recalculate
those parameters over and over again in `sample_image_pixel*()` and
`read_image_pixel*()`. This should save some work during the image
streams test.
This only affects the 3D tests for now, but my time profiles indicate
this is where we spend the most time anyway.
* Vectorize read_image_pixel_float() and sample_image_pixel_float() for SSE/AVX
This shortens the image streams test time from 45 minutes without it to
37 minutes. Unfortunately, most of the time is now spent waiting for
memory, particularly in the 3D tests, because the 3D image doesn't
neatly fit in the cache, especially in the linear sampling case, where
pixels from two 2D slices must be sampled. Software prefetching won't
help; it only helps when execution time is dominated by operations, but
this is dominated by memory access. Randomized offsets are likely a
factor, because they throw off the hardware prefetcher.
One possible further optimization is, in the linear sampling case, to
load two sampled pixels at once. This is easy to do using AVX, which
extends SSE with 256-bit vectors.
Obviously, this only applies to x86 CPUs with SSE2. The greatest
performance gains, however, are seen with SSE4.1. Most modern x86 CPus
have SSE4. Work is needed to support other CPUs' vector units--ARM
Advanced SIMD/NEON is probably the most important one. Another
possibility is arranging the code so that the compiler's
autovectorization will kick in and do what I did here manually.
Simplify code by avoiding manual resource management.
This fixes use of an uninitialized `d` in the `free_mtdata` call, in
the case a `goto exit` was executed before initializing `d`.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>