#pytorch #shared-libraries
Вопрос:
Все мои операторы являются:
- Запишите функцию в
.cu
файл. - Компиляция
.cu
с использованиемnvcc xxx.cu -o xxx.so -shared -Xcompiler -fPIC
- Загрузите его с помощью
ctypes.cdll
Ошибка произошла во время:
lib = ctypes.cdll.load('xxx.so')
tmp = torch.ones((1, 1)).cuda()
a = np.ones((1, 1))
b = lib.xxx(a)
tmp = torch.ones((1, 1)).cuda()
Ошибка при выполнении второго tensor.cuda()
RuntimeError: CUDA error: invalid argument
Но даже если ошибка произошла, torch.cuda.is_available()
это все равно Правда.
Ошибка исчезнет, если я никогда не загружу тензор на графический процессор, то есть:
lib = ctypes.cdll.load('xxx.so')
tmp = torch.ones((1, 1))
a = np.ones((1, 1))
b = lib.xxx(a)
tmp = torch.ones((1, 1)).cuda()
выполняется без ошибок.
Я хочу найти метод для выполнения функции в .so
любом месте.