mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Fixing LLVM error on TensorMorphingSycl.h on GPU; fixing int64_t crash for tensor_broadcast_sycl on GPU; adding get_sycl_supported_devices() on syclDevice.h.
This commit is contained in:
@@ -136,21 +136,14 @@ template<typename DataType> void sycl_broadcast_test_per_device(const cl::sycl::
|
||||
test_broadcast_sycl<DataType, RowMajor, int>(sycl_device);
|
||||
test_broadcast_sycl_fixed<DataType, ColMajor, int>(sycl_device);
|
||||
test_broadcast_sycl<DataType, ColMajor, int>(sycl_device);
|
||||
|
||||
|
||||
test_broadcast_sycl<DataType, RowMajor, int64_t>(sycl_device);
|
||||
test_broadcast_sycl<DataType, ColMajor, int64_t>(sycl_device);
|
||||
// the folowing two test breaks the intel gpu and amd gpu driver (cannot create opencl kernel)
|
||||
// test_broadcast_sycl_fixed<DataType, RowMajor, int64_t>(sycl_device);
|
||||
// test_broadcast_sycl_fixed<DataType, ColMajor, int64_t>(sycl_device);
|
||||
test_broadcast_sycl_fixed<DataType, RowMajor, int64_t>(sycl_device);
|
||||
test_broadcast_sycl_fixed<DataType, ColMajor, int64_t>(sycl_device);
|
||||
}
|
||||
|
||||
void test_cxx11_tensor_broadcast_sycl() {
|
||||
for (const auto& device : cl::sycl::device::get_devices()) {
|
||||
/// get_devices returns all the available opencl devices. Either use device_selector or exclude devices that computecpp does not support (AMD OpenCL for CPU )
|
||||
auto s= device.template get_info<cl::sycl::info::device::vendor>();
|
||||
std::transform(s.begin(), s.end(), s.begin(), ::tolower);
|
||||
if(!device.is_cpu() || s.find("amd")==std::string::npos)
|
||||
for (const auto& device :Eigen::get_sycl_supported_devices()) {
|
||||
CALL_SUBTEST(sycl_broadcast_test_per_device<float>(device));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,15 +264,10 @@ static void test_builtin_binary_sycl(const Eigen::SyclDevice &sycl_device) {
|
||||
}
|
||||
|
||||
void test_cxx11_tensor_builtins_sycl() {
|
||||
for (const auto& device : cl::sycl::device::get_devices()) {
|
||||
/// get_devices returns all the available opencl devices. Either use device_selector or exclude devices that computecpp does not support (AMD OpenCL for CPU )
|
||||
auto s= device.template get_info<cl::sycl::info::device::vendor>();
|
||||
std::transform(s.begin(), s.end(), s.begin(), ::tolower);
|
||||
if(!device.is_cpu() || s.find("amd")==std::string::npos){
|
||||
QueueInterface queueInterface(device);
|
||||
Eigen::SyclDevice sycl_device(&queueInterface);
|
||||
CALL_SUBTEST(test_builtin_unary_sycl(sycl_device));
|
||||
CALL_SUBTEST(test_builtin_binary_sycl(sycl_device));
|
||||
}
|
||||
for (const auto& device :Eigen::get_sycl_supported_devices()) {
|
||||
QueueInterface queueInterface(device);
|
||||
Eigen::SyclDevice sycl_device(&queueInterface);
|
||||
CALL_SUBTEST(test_builtin_unary_sycl(sycl_device));
|
||||
CALL_SUBTEST(test_builtin_binary_sycl(sycl_device));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,11 +71,7 @@ template<typename DataType> void sycl_device_test_per_device(const cl::sycl::dev
|
||||
}
|
||||
|
||||
void test_cxx11_tensor_device_sycl() {
|
||||
for (const auto& device : cl::sycl::device::get_devices()) {
|
||||
/// get_devices returns all the available opencl devices. Either use device_selector or exclude devices that computecpp does not support (AMD OpenCL for CPU )
|
||||
auto s= device.template get_info<cl::sycl::info::device::vendor>();
|
||||
std::transform(s.begin(), s.end(), s.begin(), ::tolower);
|
||||
if(!device.is_cpu() || s.find("amd")==std::string::npos)
|
||||
CALL_SUBTEST(sycl_device_test_per_device<float>(device));
|
||||
for (const auto& device :Eigen::get_sycl_supported_devices()) {
|
||||
CALL_SUBTEST(sycl_device_test_per_device<float>(device));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,11 +70,7 @@ template <typename DataType, typename Dev_selector> void tensorForced_evalperDev
|
||||
test_forced_eval_sycl<DataType, ColMajor>(sycl_device);
|
||||
}
|
||||
void test_cxx11_tensor_forced_eval_sycl() {
|
||||
for (const auto& device : cl::sycl::device::get_devices()) {
|
||||
/// get_devices returns all the available opencl devices. Either use device_selector or exclude devices that computecpp does not support (AMD OpenCL for CPU )
|
||||
auto s= device.template get_info<cl::sycl::info::device::vendor>();
|
||||
std::transform(s.begin(), s.end(), s.begin(), ::tolower);
|
||||
if(!device.is_cpu() || s.find("amd")==std::string::npos)
|
||||
CALL_SUBTEST(tensorForced_evalperDevice<float>(device));
|
||||
for (const auto& device :Eigen::get_sycl_supported_devices()) {
|
||||
CALL_SUBTEST(tensorForced_evalperDevice<float>(device));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,12 +82,7 @@ template<typename DataType, typename dev_Selector> void sycl_slicing_test_per_de
|
||||
}
|
||||
void test_cxx11_tensor_morphing_sycl()
|
||||
{
|
||||
for (const auto& device : cl::sycl::device::get_devices()) {
|
||||
/// get_devices returns all the available opencl devices. Either use device_selector or exclude devices that computecpp does not support (AMD OpenCL for CPU )
|
||||
/// Currentlly it only works on cpu. Adding GPU cause LLVM ERROR in cunstructing OpenCL Kernel at runtime.
|
||||
auto s= device.template get_info<cl::sycl::info::device::vendor>();
|
||||
std::transform(s.begin(), s.end(), s.begin(), ::tolower);
|
||||
if(device.is_cpu() && s.find("amd")==std::string::npos)
|
||||
CALL_SUBTEST(sycl_slicing_test_per_device<float>(device));
|
||||
for (const auto& device :Eigen::get_sycl_supported_devices()) {
|
||||
CALL_SUBTEST(sycl_slicing_test_per_device<float>(device));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,11 +141,7 @@ template<typename DataType> void sycl_reduction_test_per_device(const cl::sycl::
|
||||
test_last_dim_reductions_sycl<DataType, ColMajor>(sycl_device);
|
||||
}
|
||||
void test_cxx11_tensor_reduction_sycl() {
|
||||
for (const auto& device : cl::sycl::device::get_devices()) {
|
||||
/// get_devices returns all the available opencl devices. Either use device_selector or exclude devices that computecpp does not support (AMD OpenCL for CPU )
|
||||
auto s= device.template get_info<cl::sycl::info::device::vendor>();
|
||||
std::transform(s.begin(), s.end(), s.begin(), ::tolower);
|
||||
if(!device.is_cpu() || s.find("amd")==std::string::npos)
|
||||
CALL_SUBTEST(sycl_reduction_test_per_device<float>(device));
|
||||
for (const auto& device :Eigen::get_sycl_supported_devices()) {
|
||||
CALL_SUBTEST(sycl_reduction_test_per_device<float>(device));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,11 +197,8 @@ template<typename DataType, typename dev_Selector> void sycl_computing_test_per_
|
||||
test_sycl_computations<DataType, ColMajor>(sycl_device);
|
||||
}
|
||||
void test_cxx11_tensor_sycl() {
|
||||
for (const auto& device : cl::sycl::device::get_devices()) {
|
||||
/// get_devices returns all the available opencl devices. Either use device_selector or exclude devices that computecpp does not support (AMD OpenCL for CPU )
|
||||
auto s= device.template get_info<cl::sycl::info::device::vendor>();
|
||||
std::transform(s.begin(), s.end(), s.begin(), ::tolower);
|
||||
if(!device.is_cpu() || s.find("amd")==std::string::npos)
|
||||
CALL_SUBTEST(sycl_computing_test_per_device<float>(device));
|
||||
auto devices =Eigen::get_sycl_supported_devices();
|
||||
for (const auto& device :Eigen::get_sycl_supported_devices()) {
|
||||
CALL_SUBTEST(sycl_computing_test_per_device<float>(device));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user