教程分为WSL和Windows
懒得说废话了,反正也很简单,就是记录一下而已。
感觉 Intel 的野心很大,这个基于LLVM做的编译器还支持CUDA和HIP,我觉得挺好的。
So, f**k u,NVIDIA!
WSL2 + Ubuntu
- 首先我们按照染念大佬的教程,装好WSL2 + ubuntu22.04 和 oneapi 环境。
- 去 Jetbrains Clion 的官网https://www.jetbrains.com/clion/下载Clion并安装在windows上,学生和老师是免费的,安装好后可以安装一下中文插件。
- 在 wsl2 ubuntu 中安装一下 build-essential 等:
sudo apt install build-essential git cmake gdb
- 在 Clion 中配置WSL的GCC工具链:
设置 -> 构建、执行、部署 -> 工具链,点加号,选择WSL即可。
- 选中WSL,点复制按钮,即可得到WSL 工具链的一份拷贝,然后我们设置一下环境:
找到这三个文件路径,填进去,大功告成!
然后我们可以写一个简单的案例运行一下:
CMake代码:
cmake_minimum_required(VERSION 3.22)
project(test)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS -fsycl)
add_executable(test main.cpp)
源代码:
#include <iostream>
#include <sycl.hpp>
int main(int argc, char** argv)
{
// CPU device
sycl::queue cpu(sycl::cpu_selector_v);
std::cout << cpu.get_device().get_info<sycl::info::device::name>() << std::endl;
// GPU device
sycl::queue gpu(sycl::gpu_selector_v);
std::cout << gpu.get_device().get_info<sycl::info::device::name>();
return 0;
}
看我的运行结果:
哈哈i9-13900!显卡是 ARC A750,ubuntu 显示不出来,MSVC可以显示出来,不管了。
Window + Intel LLVM + Clion:
步骤很简单,安装好oenapi basekit之后,很容易就配置好Clion了,如下图所示。
只不过不同于Linux,我们需要链接一下SYCL,所以我们的CMakeLists.txt需要改一下:
cmake_minimum_required(VERSION 3.25)
project(test)
set(CMAKE_CXX_STANDARD 17)
add_executable(test main.cpp)
find_package(IntelSYCL REQUIRED)
if(IntelSYCL_FOUND)
add_sycl_to_target(TARGET test SOURCES main.cpp)
endif()
然后运行Clion:
哈哈哈,大功告成。但是还是有遗憾,这种方式实际上是先加载了Intel LLVM的编译环境,但是我想写一套直接的跨平台代码,代码到手之后只运行这样的命令:
mkdir build && cd build
cmake ..
make
当然了,我们也可以生成 Visual Studio 的工程,在 Visual Studio 中写代码。
首先打开 Intel 提供的 oneAPI 终端 Intel oneAPI command prompt for Intel 64 for Visual Studio 2022,然后进入我们代码的根目录中的 build 文件夹运行:
cmake -T "Intel(R) oneAPI DPC++ Compiler 2024" ..
这里告诉 CMake 使用 Intel 的编译工具链,build 里面就会有 VS 的工程了。