boostorg / compute

A C++ GPU Computing Library for OpenCL
http://boostorg.github.io/compute/
Boost Software License 1.0
1.56k stars 332 forks source link

Failing unit tests related to clEnqueueSVMMemcpy on Intel GPU #818

Open Kristian-Popov opened 5 years ago

Kristian-Popov commented 5 years ago

To whom it may concern,

Some of unit tests fail on my setup, all failing tests are related to command_queue::enqueue_svm_memcpy() function. First GPU in my system (and default device for unit tests) is Intel(R) HD Graphics 630, I guess problems with implementation of clEnqueueSVMMemcpy are known (looking at this Twitter message by @jszuppe https://twitter.com/jszpp/status/736564025748795392 ). Unit tests related to that function are skipped using bug_in_svmmemcpy function, but it skips only on non-Windows OS's and AMD devices. Is there any reason why it is not skipped on Intel GPUs? Detailed log of failing tests:

test_copy.exe Running 15 test cases... C:\Users\chris-pet-projects\Documents\boost-compute\include\boost/compute/command_queue.hpp(1693): fatal error: in "class boost::compute::event cdecl boost::compute::command_queue::enqueue_svm_memcpy(void ,const void ,unsigned __int64,const class boost::compute::wait_list &)": class boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector >: Invalid Value C:\Users\chris-pet-projects\Documents\boost-compute\test\test_copy.cpp(341): last checkpoint: "copy_svm_ptr" test entry C:\Users\chris-pet-projects\Documents\boost-compute\include\boost/compute/command_queue.hpp(1724): fatal error: in "class boost::compute::event cdecl boost::compute::command_queue::enqueue_svm_memcpy_async(void ,const void ,unsigned __int64,const class boost::compute::wait_list &)": class boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector >: Invalid Value C:\Users\chris-pet-projects\Documents\boost-compute\test\test_copy.cpp(364): last checkpoint: "copy_async_svm_ptr" test entry

By some reason clEnqueueSVMMemcpy returns INVALID_VALUE although all parameters appears to be valid.

When I force unit tests to use CPU set "BOOST_COMPUTE_DEFAULT_DEVICE_TYPE=CPU" && ctest all unit tests pass. Related to #528