用 Emacs 在 Windows 上开发 SYCL

因为主力机从 Intel MacBook 換到 Windows 台式了,开始把过去写的一些软件移植过来。以前用 Chapel 语言写了 Riemersma dither,但是,別看它讲得好看,没有计算集群的话在笔计本上其实只能发挥个多线程的优势,overhead 还比 C 多不少。再其次,它没有 lsp server 也没给 Emacs 更新过插件,还不原生支持 Windows。

然后我本来想装个 Intel C++ 编译器,发现在 Apple 踢掉 Intel 后开始推了 SYCL,別看文档里啥有用的都没有,其实它是用高级语言 C++ 写并行计算,也就是说 Chapel 能干的它也能干,在 CPU 上优化还能更好。

那么这和 Emacs 有什么关系呢?Intel 的 SYCL 编译器其实就是修改后的 clang,也就是说,它有提供 clangd,就在 C:\Program Files (x86)\Intel\oneAPI\compiler\latest\bin\compiler 用 eglot 只要把 lsp 设成这个就开箱即用了,不用自己编译 Clang ,实际上用普通选项编译的 Clang (和 CCLS)是不能正常 parse SYCL 的头文件的。另外如果要用 CUDA 后端的话,要编译 Intel 开源的 llvm。

想学 SYCL 的话可以看 Getting Started - SYCL.tech

另外吐槽一下,明明 CCLS 在 Windows 上可以不用和 LLVM 一起分发,却没人做 binary release,说明用的人还是不如 ffmpeg 多

大佬是说那个ccls吗?scoop上的那个好像太旧了,在我这边的工程里不能正常用,按作者wiki上的编译方法自己编译最新版才可以正常使用

MaskRay 版本的 Wiki 上 Windows 的编译方法还是我昨天去改的,因为 CMake 版本更新原本的参数不太对了,我看到有人在 issue 里提课正确方法不过不知道 wiki 可以直接修改