Follow 符号无法识别 Qt Creator 中的 SYCL 函数和关键字

问题描述 投票:0回答:1

我正在使用 Qt Creator 4.4.0 开发 SYCL 应用程序。我无法按照 SYCL 函数进入标头来检查它们在 Qt 中的定义,就像我可以对其他作为向量设置的标准标头所做的那样。有人可以告诉我 Qt 项目设置中缺少什么吗?

这是这个简单项目的 cmake。

# CMakeLists for SYCL C++ Project

cmake_minimum_required(VERSION 3.19)

set(CMAKE_CXX_COMPILER "icpx")
set(CMAKE_PREFIX_PATH "/opt/intel/oneapi/compiler/latest/linux/IntelSYCL/")
set(SYCL_LIBRARY_DIR "/opt/intel/oneapi/compiler/latest/linux/lib")
set(SYCL_INCLUDE_DIR "/opt/intel/oneapi/compiler/latest/linux/include/sycl/")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl -fsycl-targets=nvptx64-nvidia-cuda,spir64 -Xsycl-target-backend=nvptx64-nvidia-cuda --cuda-gpu-arch=sm_75")

project(matrix_multiply_sycl LANGUAGES CXX)

add_executable(matrix_multiply_sycl matrix_multiply_sycl.cpp)

我可以使用此 cmake 列表文件进行编译和运行。

我尝试在 cmake 中添加 SYCL lib include dir,但仍然不起作用。但 Qt 可以以某种方式自动识别其他 std 标头。

c++ qt ide qt-creator sycl
1个回答
0
投票

我对QtCreator不熟悉,但我假设下面调用的语言服务器是

clangd
。最近,DPC++ 版本的
clangd
才可以解析 DPC++ SYCL 标头,因为以前的版本就遇到了此问题:https://github.com/clangd/clangd/issues/1097

此问题的修复尚未纳入任何英特尔 oneAPI 工具套件版本中,并且需要几个月的时间才能实现。如果您不想等待,您可以尝试使用 开源每日构建

clang++
编译器驱动程序(而不是
icpx
,后者仅在完整的英特尔版本中可用)。

无论您是使用开源 DPC++ 还是等待更新的 oneAPI 工具包版本,您还需要确保 QtCreator 环境设置正确,以便它使用 DPC++ 版本的

clangd
而不是任何其他版本这可能在您的系统中可用。不幸的是,使用 上游 LLVM
clangd
在不久的将来将无法工作,因为 SYCL 支持特定于 DPC++。

© www.soinside.com 2019 - 2024. All rights reserved.