Я новичок в программировании CUDA, поэтому сталкиваюсь с проблемами с компиляцией/связыванием файлов. Я пытаюсь скомпилировать файлы .c
и .cu
. Вот файлы:
p3.c
:CUDA linking Ошибка undefined reference
#include <stdlib.h>
#include <stdio.h>
extern void load_scheduler(int k, int j);
int blocks, threads;
int main(int argc, char* argv[])
{
if (argc > 1)
{
blocks = atoi(argv[1]);
threads = atoi(argv[2]);
}
else
exit(1);
load_scheduler(blocks, threads);
}
И scheduler.cu
файл:
#include <stdlib.h>
#include <stdio.h>
__global__ void sched_func()
{
int j = 6*5*threadIdx.x;
printf("%d\n",j);
}
void load_scheduler(int b, int n)
{
sched_func<<< b,n >>>();
}
компилировать эти два файла, используя nvcc -c scheduler.cu p3.c
и, кажется, прекрасно
Однако, когда я пытаюсь соединить эти два файлы с использованием nvcc -o cuda_proj scheduler.o p3.o
, я получаю сообщение об ошибке:
p3.o: In function `main':
p3.c:(.text+0x58): undefined reference to `load_scheduler'
collect2: ld returned 1 exit status
Возможно, я не буду использовать правильные шаги, чтобы заставить это работать, поэтому, если есть какой-либо другой способ, я должен попробовать, предложения приветствуются. Я также новичок в создании Makefile, поэтому хочу придерживаться команды nvcc на терминале.