DPCT1104
Contents
DPCT1104#
Message#
<expression text>
should point to a dynamic library loaded in memory. The dynamic
library should supply wrapped kernel functions.
Detailed Help#
The CUDA* application expects <expression text>
to point to a CUDA module
whose file image has been copied to memory. The user should ensure that the CUDA
code that generated the CUDA module is migrated to SYCL* code, compiled to
generate a kernel library, and then copied to memory by the migrated SYCL
application.
Suggestions to Fix#
The user should find the module source files that are used to make the CUDA
module and migrate the module source files to SYCL using the --extra-arg=--ptx
option of IntelĀ® DPC++ Compatibility Tool to generate wrapped kernel functions:
dpct <module source file(s)> --extra-arg=--ptx
The migrated module source file(s) should be compiled to build a kernel library.
On Linux*:
icpx -fsycl <migrated module source file(s)> -fPIC -shared -o <kernel library filename>
On Windows*:
icpx -fsycl <migrated module source file(s)> -shared -o <kernel library filename>
The user should ensure that the application will load the kernel library image into
memory at runtime. For the following example this can be ensured by setting
<kernel library filename>
to library.so
.
For example, this original CUDA code:
1 const void *image = loadFile("module.ptx");
2 cuModuleLoadData(&module, image);
results in the following migrated SYCL code:
1 const void *image = loadFile("module.ptx");
2 module = dpct::load_kernel_library(image);
which is rewritten to:
1 const void *image = loadFile("library.so");
2 module = dpct::load_kernel_library(image);