/** * \file dnn/cuda-stub/src/libnvrtc.cpp * MegEngine is Licensed under the Apache License, Version 2.0 (the "License") * * Copyright (c) 2014-2020 Megvii Inc. All rights reserved. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. */ #pragma GCC visibility push(default) #include #define LOGE(fmt, v...) fprintf(stderr, "err: " fmt "\n", ##v) #include "./nvrtc_type.h" #pragma GCC diagnostic ignored "-Wdeprecated-declarations" static void log_failed_load(int func_idx); namespace { template T on_init_failed(int func_idx); template <> nvrtcResult on_init_failed(int func_idx) { log_failed_load(func_idx); return NVRTC_ERROR_INTERNAL_ERROR; } template <> const char* on_init_failed(int func_idx) { log_failed_load(func_idx); return "load lib failed"; } } // namespace #include "./libnvrtc-wrap.h" static const char* default_so_name = #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) "nvrtc.dll"; #elif defined(__APPLE__) || defined(__MACOSX) "libnvrtc.dylib"; #else "libnvrtc.so"; #endif static const char* default_so_paths[] = { #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) "nvrtc.dll", #elif defined(__unix__) || defined(__QNX__) || defined(__APPLE__) || \ defined(__MACOSX) #if defined(__APPLE__) || defined(__MACOSX) "/usr/local/cuda/lib/libnvrtc.dylib", #elif defined(__ANDROID__) #if defined(__aarch64__) "/system/vendor/lib64/libnvrtc.so", #elif defined(__arm__) "/system/vendor/lib/libnvrtc.so", #endif #else "libnvrtc.so", // In case some users does not have correct search path configured in // /etc/ld.so.conf "/usr/lib/x86_64-linux-gnu/libnvrtc.so", "/usr/local/nvidia/lib64/libnvrtc.so", "/usr/local/cuda/lib64/libnvrtc.so", #endif #else #error "Unknown platform" #endif }; static const char* extra_so_paths[] = {}; static const char* g_default_api_name = "nvrtc"; #include "./dlopen_helper.h"