Обыскивая сеть для ответа на мою проблему, я видел несколько сообщений на форумах и в блогах, посвященных теме «Как настроить, скомпилировать, связать и запустить проект CUDA в VIsual Studio 2008»
(Я пытался дать ссылки, но мне не разрешено, как новый постер: p)
Но чего здесь не хватает?
Чего не хватает, так это того, что во всех вышеперечисленных руководствах или публикациях рассказывается, как настроить один проект VS, который будет проектом запуска и будет запускаться сам по себе. Как следствие, они используют «Правило CUDA Runtime API», которое предназначено для создания CUDA-дружественного файла .exe.
Что мне нужно / нужно?
1) Я хочу иметь решение VS, которое будет содержать несколько проектов, большинство из которых написаны на C ++. Будет один основной проект, написанный на C ++, создающий файл «.exe» (содержащий функцию «main» и, следовательно, управляющий потоком), и несколько других проектов, которые будут создавать соответствующие файлы «.lib», с которыми будет связан основной проект.
2) В простейшей форме мне нужен один проект, который будет выполнять CUDA, который создаст файл lib и основной проект, который будет ссылаться на него и использовать его.
Я искал везде безрезультатно, похоже, никто не использует несколько проектов.
Моя проблема:
1) Проект CUDA создает библиотеку и поэтому должен использовать «Правило API драйвера CUDA», а не вариант времени выполнения (если я осмелюсь сделать это, проект CUDA попытается использовать библиотеки, используемые основным, и есть несколько определенных проектов »
2) При попытке сделать это надлежащим образом основной проект не может ссылаться на проект CUDA
Вот пример кода, который я использую, чтобы показать, в чем заключается сделка (здесь я также приложу файл VS sln для тех, кто хочет попробовать его)
Outline:
VS Solution
Main Project(C++ project producing the .exe and containing the main function)
main.cpp
#include "../CUDAProject/testCuda.h"
int
main(int argc, char** argv)
{
testCudaClass* t2;
t2 = new testCudaClass();
t2->stub_function();
return 0;
}
CUDA Project:
testCuda.h
#include <cstdio>
#include <cstdlib>
#include <iostream>
class testCudaClass
{
public:
void stub_function();
};
testCuda.cpp
#include "testCuda.h"
extern "C" int cuda_function();
void testCudaClass::stub_function()
{
int a;
a=cuda_function();
std::cout<< a <<"\n";
}
test.cu
#include "cuda.h"
extern "C" int cuda_function()
{
return 5;
}
Прикреплено (временные общедоступные ссылки в Dropbox) - это zip-файл с двумя решениями VS2008, в котором у меня есть один проект CUDA, который работает нормально, и в котором я пытаюсь сделать это выше (часть кода проекта описана выше)
http://dl.dropbox.com/u/3091507/CUDA.zip
Я был бы очень признателен за любую информацию или совет, который может помочь мне решить эту проблему
Большое спасибо
Адам