Skip to content

Commit

Permalink
Load versioned libcufile's only
Browse files Browse the repository at this point in the history
Also include workaround for CUDA 11 packaging missing the SOVERSION
library in some cases.
  • Loading branch information
jakirkham committed Apr 26, 2023
1 parent 223c98b commit ddb0e6b
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion gds/src/cufile_stub.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,21 @@ void CuFileStub::load()
{
// Note: Load the dynamic library with RTLD_NODELETE flag because libcufile.so uses therad_local which can
// cause a segmentation fault if the library is dynamically loaded/unloaded. (See #158)
handle_ = cucim::dynlib::load_library("libcufile.so", RTLD_LAZY | RTLD_LOCAL | RTLD_NODELETE);
// CUDA versions before CUDA 11.7.1 did not ship libcufile.so.0, so this is
// a workaround that adds support for all prior versions of libcufile.
handle_ = cucim::dynlib::load_library(
{
"libcufile.so.0",
"libcufile.so.1.3.0" /* 11.7.0 */,
"libcufile.so.1.2.1" /* 11.6.2, 11.6.1 */,
"libcufile.so.1.2.0" /* 11.6.0 */,
"libcufile.so.1.1.1" /* 11.5.1 */,
"libcufile.so.1.1.0" /* 11.5.0 */,
"libcufile.so.1.0.2" /* 11.4.4, 11.4.3, 11.4.2 */,
"libcufile.so.1.0.1" /* 11.4.1 */,
"libcufile.so.1.0.0" /* 11.4.0 */
},
RTLD_LAZY | RTLD_LOCAL | RTLD_NODELETE);
if (handle_ == nullptr)
{
return;
Expand Down

0 comments on commit ddb0e6b

Please sign in to comment.