【发布时间】:2021-06-28 06:28:48
【问题描述】:
我正在尝试从 sycl 程序创建静态或共享库,并从使用 gcc/g++/clang++ 的主应用程序构建中使用它。 如果我使用 dpcpp 构建我的主应用程序,一切都很好,但我需要使用 g++。
比如我的示例sycl_lib.cpp和主程序如下。
//sycl_lib.cpp
#include<CL/sycl.hpp>
int func() {
q.submit([&](sycl::handler &h) {
sycl::stream os(1024, 768, h);
h.parallel_for(32, [=](sycl::id<1> i) {
os<<i<<"\n";
});
});
}
//main.cpp
void func();
int main() {
func();
return 0;
}
创建一个静态库并使用它:
dpcpp -c sycl_lib.cpp -fPIC
ar rvs sycl_lib.a sycl_lib.o
dpcpp main.cpp sycl_lib.a
./a.out
这很好用。但是我想用g++构建main.cpp,导致运行时错误。
g++ main.cpp sycl_lib.a -L$SYSL_DIR/lib -lsycl
./a.out
出现以下错误
terminate called after throwing an instance of 'cl::sycl::runtime_error'
what(): No kernel named _ZTSZZ4funcvENKUlRN2cl4sycl7handlerEE6_12clES2_EUlNS0_2idILi1EEEE8_24 was found -46 (CL_INVALID_KERNEL_NAME)
Aborted
使用 g++ 创建的可执行文件是否可以使用使用 dpc++ 创建的 sycl 库?
谢谢
【问题讨论】:
标签: sycl intel-oneapi dpc++