Я попытался выполнить пример саксофона из официального руководства cuda nvrtc в эта страница
Он прекрасно работает с компилятором g ++ на терминале и следуя инструкциям по сборке:
g++ saxpy.cpp -o saxpy -I $CUDA_PATH/include -L $CUDA_PATH/lib64 -lnvrtc -lcuda -Wl,-rpath,$CUDA_PATH/lib64
Сейчас я пытаюсь выполнить его на языке go с помощью инструмента cgo.
Я назвал функцию main в my_function и пытаюсь вызвать ее с помощью функции C.my_function.
это мои директивы cgo:
//PATH
#cgo LDFLAGS: -L/usr/local/cuda-7.0/lib64 -L/usr/local/cuda-7.0/lib -lcuda -lnvrtc
#cgo CPPFLAGS: -I/usr/local/cuda-7.0/include/ -I/usr/include/c++/4.8
//FILE
#include "saxpy_header.h"#include <nvrtc.h>
#include "iostream"#include <cuda.h>
Но я получаю это сообщение об ошибке:
/usr/include/c++/4.8/iostream:38:28: fatal error: bits/c++config.h: No such file or directory
#include <bits/c++config.h>
Итак, я попробовал это:
#include "/usr/include/x86_64-linux-gnu/c++/4.9/bits/c++config.h"
И теперь я получаю это новое сообщение об ошибке:
/usr/include/x86_64-linux-gnu/c++/4.9/bits/c++config.h:430:29: fatal error: bits/os_defines.h: No such file or directory
#include <bits/os_defines.h>
После добавления #include "/usr/include/x86_64-linux-gnu/c++/4.9/bits/os_defines.h"
Я получаю ту же ошибку …
Как я могу решить эту проблему?
Просто дикое предположение здесь, так как я ничего не знаю о go / cgo …
Похоже, у вас есть amix-up между версиями 4.8 и 4.9 компилятора g ++.
Я бы попытался изменить строку cgo CPPFLAGS соответственно, на это:
#cgo CPPFLAGS: -I/usr/local/cuda-7.0/include/ -I/usr/include/c++/4.9
Но опять же, просто гадать …