Visible to Intel only — GUID: GUID-6C3998F1-C895-449F-B88C-12276478400C
Visible to Intel only — GUID: GUID-6C3998F1-C895-449F-B88C-12276478400C
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:
const void *image = loadFile("module.ptx");
cuModuleLoadData(&module, image);
results in the following migrated SYCL code:
const void *image = loadFile("module.ptx");
module = dpct::load_kernel_library(image);
which is rewritten to:
const void *image = loadFile("library.so");
module = dpct::load_kernel_library(image);