DPCT1103#

Message#

<expression text> should be a dynamic library. The dynamic library should supply wrapped kernel functions.

Detailed Help#

The CUDA* application expects <expression text> to be the name of a CUDA module. The user should ensure that the CUDA code that generated the CUDA module is migrated to SYCL* code and compiled to generate a kernel library.

Suggestions to Fix#

The user should find the module source files that are used to make the CUDA module and migrate them 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 make 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 <kernel library filename> should be chosen so that <expression text> will have the same filename at runtime. For the following example, <kernel library filename> should be set to library.so.

For example, this original CUDA code:

1  char *ptxFile = "module.ptx";
2  cuModuleLoad(&module, ptxFile);

results in the following migrated SYCL code:

1  char *ptxFile = "module.ptx";
2  module = dpct::load_kernel_library(ptxFile);

which is rewritten to:

1  char *libraryFile = "library.so";
2  module = dpct::load_kernel_library(libraryFile);