forked from KhronosGroup/OpenCL-CTS
-
Notifications
You must be signed in to change notification settings - Fork 0
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
Merge KhronosGroup/OpenCL-CTS master into nikhiljnv:master #9
Open
nikhiljnv
wants to merge
158
commits into
nikhiljnv:master
Choose a base branch
from
KhronosGroup:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* Reduce number of compilations in buffer suite Extracts program and kernel compilation from mem_flags loop as they were being recompiled unnecessarily. Fixes #1020 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com> * Remove misplaced frees in buffer tests Contributes #1020 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com>
* Use memcmp for select verification. If memcmp fails, fall back to looping through the result buffer to find the incorrect result. * Removed extra prints for check_int.
* Making object queries tests exhaustive Tests which were only testing fixed values have been made exhaustive and refactored. They only use properties from the core spec. Associated Macros have been turned into templated functions. Comparison of devices with cl_device_id rather than vendor ids. All object queries tests are now in test_queries.cpp. Fixes #508 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com> * Remove unnecessary arguments from test_queries.cpp functions Fixes #508 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com> * Using test_assert_error in test_queries.cpp This commit also fixes the queue properties array and corrects for on device queues being optional in CL3.0 test_queries_compatibility.cpp has been removed as tests are now in test_queries.cpp Contributes #508 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com> * Correct api test boolean for device queue support Contributes #508 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com>
TEST_SKIPPED_ITSELF was originally located in threadTesting.h but this no longer makes sense. This change moves the definition to the test_status struct in testHarness so that it can be used in the same way that test_status' can be used. Signed-off-by: Chetankumar Mistry <chetan.mistry@arm.com>
Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com>
* Fix implicit int->float warning inside kernel This kernel is used to test various compiler options including -Werror. Some compilers produce a warning about the implicit conversion which results in this test failing when -Werror is used. * Fix formatting
In this test we repeated call create_single_kernel_helper to create different kernels but reuse the same clProgramWrapper. create_single_kernel_helper() creates a new program each time it is called, creating a new reference on the underlying context. When the test ends, the program is released (as it should when using the clProgramWrapper), however there are multiple program objects attached to the context resulting in reference leak errors. Signed-off-by: Chetankumar Mistry <chetan.mistry@arm.com>
* Using helper functions for clCreateKernel Uses of clCreateKernel following create program helper functions, have been incorporated into create_single_kernel_helper when suitable. Contributes #31 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com> * Skip tests using clCompileProgram in offline mode Contributes #31 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com> * Using type wrappers when using kernel helper functions Also includes fix for windows build Fixes #31 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com> * Remove clReleaseKernel for wrapped kernel Fixes #31 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com>
* Restored the embedded reduction factor to bruteforce. This change was present on the GitLab branch but missed out during the transition to GitHub. This change is intentionally as close as possible to the patch on GitLab. Fixes #1045 * Added helper functions for bruteforce step and scale. * Added missing files from 1e4d19b. * Renamed getTestScale and getTestStep to set*.
* Validate CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED Adding test to validate value returned from clGetDeviceInfo with CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED. Fixes #993 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com> * Fixes for formatting on computeinfo add tests Fixes #993 Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com>
Test was querying for supported images with CL_MEM_WRITE_ONLY flag, but always used CL_MEM_READ_ONLY to create images. Fixes issue #328 Signed-off-by: Radek Szymanski <radek.szymanski@arm.com> Signed-off-by: James Morrissey <james.morrissey@arm.com> Co-authored-by: Radek Szymanski <radek.szymanski@arm.com>
This change allows us to remove the extra clReleaseEvent calls which were causing double-free issues.
* Set the highest supported OpenCL C version. * Remove gDeviceLt20 variable - not used anymore. * Fix formatting issues
The test was trying to create read_write image with read_only formats. Make it use common image formats for both read_only and read_write flags when creating images. Fixes issue #329 Signed-off-by: Radek Szymanski <radek.szymanski@arm.com> Signed-off-by: James Morrissey <james.morrissey@arm.com> Co-authored-by: Radek Szymanski <radek.szymanski@arm.com>
Add tests for API extension for compilation of kernels in C++ for OpenCL language. * Test that -cl-std=CLC++ is accepted and a basic kernel with C++ features is compiled. * Test that API extension reports the same language version as __OPENCL_CPP_VERSION__. This commit also adds a separate folder for extension tests. Signed-off-by: Victoria Holodovsky <victoria.holodovsky@arm.com> Co-authored-by: Victoria Holodovsky <victoria.holodovsky@arm.com>
Signed-off-by: Marco Antognini <marco.antognini@arm.com>
In OpenCL spec 1.1: "Prior to calling clEnqueueAcquireGLObjects, the application must ensure that any pending GL operations which access the objects specified in mem_objects have completed. This may be accomplished portably by issuing and waiting for completion of a glFinish command on all GL contexts with pending references to these objects." Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
* Use std::vector for format lists in images suite Avoids memory deallocation issues and generally simplifies the code. * Fixup formatting with git-clang-format
* Use delete[] to deallocate after new[] * Fixup formatting with git-clang-format
* Remove dead code Signed-off-by: Marco Antognini <marco.antognini@arm.com> * Remove tautological statements PARALLEL_REFERENCE is unconditionally defined. Remove preprocessor condition that always hold. Signed-off-by: Marco Antognini <marco.antognini@arm.com> * Remove unnecessary declarations Also removed unused macro. Signed-off-by: Marco Antognini <marco.antognini@arm.com> * Format code An unnecessary scope was removed. This formats the code using clang-format. Signed-off-by: Marco Antognini <marco.antognini@arm.com>
* Fix enqueue_flags test to use correct barrier type. Currently, enqueue_flags test uses CLK_LOCAL_MEM_FENCE. Use CLK_GLOBAL_MEM_FENCE instead as all threads across work-groups need to wait here. * Add check for support for Read-Wrie images Read-Write images have required OpenCL 2.x. Read-Write image tests are already being skipped for 1.x devices. With OpenCL 3.0, read-write images being optional, the tests should be run or skipped depending on the implementation support. Add a check to decide if Read-Write images are supported or required to be supported depending on OpenCL version and decide if the tests should be run on skipped. Fixes issue #894 * Fix formatting in case of Read-Write image checks. Fix formatting in case of Read-write image checks. Also, combine two ifs into one in case of kerne_read_write tests * Fix some more formatting for RW-image checks Remove unnecessary spaces at various places. Also, fix lengthy lines. * Fix malloc-size calculation in test imagedim unsigned char size is silently assumed to be 1 in imagedim test of test_basic. Pass sizeof(type) in malloc size calculation. Also, change loop variable from signed to unsigned. Add checks for null pointer for malloced memory. * Use size_t instead of int for imagedim The size calculation for image with larger dimensions is overflowing with int values. Change image dim variables to use size_t to avoid overflow. While at it, fix formatting at various places. * Use new instead of malloc in test imagedim Use new and delete in place of malloc and free through test_basic imagedim to avoid NULL pointer checks. * Revert sizeof changes from size calculation As the types of width and height are now changed to size_t, sizeof is not required in size calculation. Revert the same.
Previously this file used the auto keyword to declare a string. This can cause compilation issues when used in a later function. Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com>
* Fix enqueue_flags test to use correct barrier type. Currently, enqueue_flags test uses CLK_LOCAL_MEM_FENCE. Use CLK_GLOBAL_MEM_FENCE instead as all threads across work-groups need to wait here. * Add check for support for Read-Wrie images Read-Write images have required OpenCL 2.x. Read-Write image tests are already being skipped for 1.x devices. With OpenCL 3.0, read-write images being optional, the tests should be run or skipped depending on the implementation support. Add a check to decide if Read-Write images are supported or required to be supported depending on OpenCL version and decide if the tests should be run on skipped. Fixes issue #894 * Fix formatting in case of Read-Write image checks. Fix formatting in case of Read-write image checks. Also, combine two ifs into one in case of kerne_read_write tests * Fix some more formatting for RW-image checks Remove unnecessary spaces at various places. Also, fix lengthy lines. * Fix malloc-size calculation in test imagedim unsigned char size is silently assumed to be 1 in imagedim test of test_basic. Pass sizeof(type) in malloc size calculation. Also, change loop variable from signed to unsigned. Add checks for null pointer for malloced memory. * Fix command-line function range for bruteforce Runnning "test_bruteforce N M" is expected to skip first N functions and test M functions after it. When N is 0, the test currently skips M functions and run all functions thereafter. Fix the test to honor semantics of these command-line options to correctly test first M functions when N is 0.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
Signed-off-by: John Kesapides <john.kesapides@arm.com> Change-Id: I4f6bbce14535f6156365a5a46c4739d6a7257ab2
* Minor fixes for clCopyImage. Signed-off-by: John Kesapides <john.kesapides@arm.com> Change-Id: I63c47570e45580e5e29716a46929cb1127711c6b * Convert comment to CTS style. Return error code instead of -1 in clFinish.
* Fix enqueue_flags test to use correct barrier type. Currently, enqueue_flags test uses CLK_LOCAL_MEM_FENCE. Use CLK_GLOBAL_MEM_FENCE instead as all threads across work-groups need to wait here. * Add check for support for Read-Wrie images Read-Write images have required OpenCL 2.x. Read-Write image tests are already being skipped for 1.x devices. With OpenCL 3.0, read-write images being optional, the tests should be run or skipped depending on the implementation support. Add a check to decide if Read-Write images are supported or required to be supported depending on OpenCL version and decide if the tests should be run on skipped. Fixes issue #894 * Fix formatting in case of Read-Write image checks. Fix formatting in case of Read-write image checks. Also, combine two ifs into one in case of kerne_read_write tests * Fix some more formatting for RW-image checks Remove unnecessary spaces at various places. Also, fix lengthy lines. * Handle NULL hostptr in conformance image tests As per the spec, clCreateBuffer and clCreateImage return CL_INVALID_HOST_PTR if host_ptr is NULL and CL_MEM_USE_HOST_PTR or CL_MEM_COPY_HOST_PTR are set in flags or if host_ptr is not NULL but CL_MEM_USE_HOST_PTR or CL_MEM_COPY_HOST_PTR are not set in flags." Host pointer should be NULL when USE/COPY_HOST_PTR is not set in flags. * Revert "Handle NULL hostptr in conformance image tests" This reverts commit 49fa049. * Move cl_mem_flag and host_ptr check to ImageHelper Add a check to see if cl_mem_flag has USE_HOST_PTR or COPY_HOST_PTR. Override host_ptr with NULL if none of them are specified.
Reformat code using clang-format. Signed-off-by: Marco Antognini <marco.antognini@arm.com>
Remove unnecessary declarations. Signed-off-by: Marco Antognini <marco.antognini@arm.com>
…sed (#1301) * Report unsupported extended subgroup tests as skipped rather than passed Also don't check the presence of extensions for each sub-test. Signed-off-by: Kévin Petit <kpet@free.fr> * address review comments
* Extended subgroups - use 128bit masks * Refactoring to avoid kernels code duplication * unification kernel names as test_ prefix +subgroups function name * use string literals that improve readability * use kernel templates that limit code duplication * WorkGroupParams allows define default kernel - kernel template for multiple functions * WorkGroupParams allows define kernel for specific one subgroup function Co-authored-by: Stuart Brady <stuart.brady@arm.com>
This also adds some missing data type logging to the subgroup_functions_non_uniform_vote tests. Signed-off-by: Stuart Brady <stuart.brady@arm.com>
* MPGCOMP-14761 Improve error handling in subgroup tests Signed-off-by: Stuart Brady <stuart.brady@arm.com> * Add missing newline
The tests were logging scalar results as vectors padded with zeroes for no apparent benefit. Fix this. Signed-off-by: Stuart Brady <stuart.brady@arm.com>
* Added missing extensions related to cl_khr_semaphore Signed-off-by: Marco Cattani <marco.cattani@arm.com>
The way that program sources were being constructed involved capturing pointers to strings that were allocated on the stack, and then trying to use them outside of that scope. This change uses a stringstream defined in the outer scope to build the program instead.
sub_group_ballot_bit_count() and sub_group_ballot_find_msb() mask their input according to a subgroup size, which is assumed to be the maximum subgroup size, and not the actual subgroup size excluding non-existent work-items in the "remainder" subgroup. Fix this as per the the clarification made to the OpenCL C specification in revision 3.0.9 for issue KhronosGroup/OpenCL-Docs#626 by pull request KhronosGroup/OpenCL-Docs#689. Signed-off-by: Stuart Brady <stuart.brady@arm.com>
…#1350) * Fix - comparing results will never happen. * No special action needed for one work item in the subgroup
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
It seems more intuitive to set only the bits that are required, rather than to set one more bit than is required, only to clear it again. Signed-off-by: Stuart Brady <stuart.brady@arm.com>
* test api - fix code formatting only * Fix printing cl_ulong type to avoid overloading. * Fix printing size_t data type * Fix printing size_t data type - set unsinged * Fix formatting for maxArgs (uint) and numberOfInts (size_t)
* Fix build, glext should not be used with GLEW * Remove additional define GL_GLEXT_PROTOTYPES * Remove includes which already defined in setup.h
cl_khr_command_buffer is now public as a provisional khr extension which implementations may report.
Note that this also corrects the start messages logged for the sub_group_ballot_bit_count/find_msb/find_lsb tests. Signed-off-by: Stuart Brady <stuart.brady@arm.com>
Remove unused code that hasn't been used for the last three years and isn't included in makefiles. Co-authored-by: oramirez <oramirez@qti.qualcomm.com>
…rations (#1346) * Set safe input values for half type and mul, add operations * Set safe values for all data types * Typo fix * Set constant seed for shuffle * Change function name to more specific * set_value takes an integer value, not a bit pattern
* Remove invalid negative_get_platform_info testcase * Implementations are only required to do null checks * Fixes #1318 * Fix formatting
* Fix test_api get_command_queue_info Decouple host and device out-of-order test enabling * Rename property sets more generically * Refactor to use std::vector to accumulate test permutations
* Fix memory leaks Fixed memory leaks in: buffers, basic, and vectors * Formatting fixes Co-authored-by: oramirez <oramirez@qti.qualcomm.com>
This changes compilation of subgroup test kernels so that a separate compilation is no longer performed for each divergence mask value. The divergence mask is now passed as a kernel argument. This also fixes all subgroup_functions_non_uniform_arithmetic testing and the sub_group_elect and sub_group_any/all_equal subtests of the subgroup_functions_non_uniform_vote test to use the correct order of vector components for GPUs with a subgroup size greater than 64. The conversion of divergence mask bitsets to uint4 vectors has been corrected to match code comments in WorkGroupParams::load_masks() in test_conformance/subgroups/subhelpers.h. Signed-off-by: Stuart Brady <stuart.brady@arm.com>
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
The test now checks that CL_KERNEL_ARG_INFO_NOT_AVAILABLE is returned when calling clGetKernelArgInfo() with offline compilation modes. The correct function name is printed if clGetKernelArgInfo() fails when using online compilation (and not "clSetKernelArgInfo()"). When using online compilation, if the actual arg type is not as expected, the actual arg type is now logged, and the return value is now TEST_FAIL (-1) as per other failures (and not 1). All other test pass/fail values used in the test now use TEST_PASS and TEST_FAIL instead of 0 and -1 literals. An unnecessary cast of pipe_kernel_code has been removed. Signed-off-by: Stuart Brady <stuart.brady@arm.com>
Add "Patches" field
nikhiljnv
pushed a commit
that referenced
this pull request
Jan 20, 2023
While testing an OpenCL driver with ThreadSanitizer enabled the OpenCL-CTS suffers from thread leaks in conversions and bruteforce on posix systems. This is because `pthread_join` is never called in `ThreadPool_Exit` for the `pthread_t`s created by the thread pool. Instead, the threads are only informed to stop waiting on the condition variable which unblocks the worker thread but does not clean up after itself. ``` ThreadPool: thread 1 exiting. ThreadPool: thread 5 exiting. ThreadPool: thread 4 exiting. ThreadPool: thread 2 exiting. ThreadPool: thread 7 exiting. ThreadPool: thread 0 exiting. ThreadPool: thread 3 exiting. ThreadPool: thread 6 exiting. Thread pool exited in a orderly fashion. ================== WARNING: ThreadSanitizer: thread leak (pid=2292842) Thread T9 (tid=2292855, finished) created by main thread at: #0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x5ad75) #1 ThreadPool_Init() <null> (test_conversions+0x35b2c) #2 pthread_once ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:1449 (libtsan.so.0+0x4057c) #3 GetThreadCount() <null> (test_conversions+0x36262) #4 DoTest(_cl_device_id*, Type, Type, SaturationMode, RoundingMode, _MTdata*) [clone .isra.0] <null> (test_conversions+0x10555) #5 test_conversions(_cl_device_id*, _cl_context*, _cl_command_queue*, int) <null> (test_conversions+0x13226) #6 callSingleTestFunction(test_definition, _cl_device_id*, int, int, unsigned long) <null> (test_conversions+0x2e66d) #7 parseAndCallCommandLineTests(int, char const**, _cl_device_id*, int, test_definition*, int, unsigned long, int) <null> (test_conversions+0x2fb3a) #8 runTestHarnessWithCheck(int, char const**, int, test_definition*, int, unsigned long, test_status (*)(_cl_device_id*)) <null> (test_conversions+0x349d8) #9 main <null> (test_conversions+0xd725) And 7 more similar thread leaks. SUMMARY: ThreadSanitizer: thread leak (OpenCL-CTS/buildbin/conversions/test_conversions+0x35b2c) in ThreadPool_Init() ``` This patch adds global state to keep track of the `pthread_t`s created by `pthread_create` in `ThreadPool_Init`. The list of `pthread_t`s is then used by `ThreadPool_Exit` to call `pthread_join` to cleanup the `pthread_t`s correctly. A near identical example, and additional explanation, can be found on [stackoverflow](https://stackoverflow.com/questions/72435574/thread-leak-detected-when-using-condition-variable-instead-of-join-with-pthrea). On the Windows path, a similar change is not necessary because `_beginthread` is used which automatically cleans up after itself when the worker thread function returns.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Merge KhronosGroup/OpenCL-CTS master into nikhiljnv:master