Bonjour je viens demander de l'aide car je n'y arrive pas.
J'essaie de compiler un programme CUDA C ecrit sur plusieurs fichier different.
Voici la structure de mon code (ce n'est pas mon vrai code mais un autre plus court ayant le meme type de strucure):
-----main.c-----
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include <stdio.h> #include <stdlib.h> #include "initialisation.h" int main() { int *res = initialisation(); free(res); return 0; }
----initialisation.h----
Code C : Sélectionner tout - Visualiser dans une fenêtre à part int* initialisation();
----inititialisation.cu---
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <cuda_runtime.h> #include <stdio.h> __global__ void init(int* c_tab) { int idx = threadIdx.x; c_tab[idx] = 0; } int* initialisation() { int nBytes = sizeof(int) * 100; int* tab = (int*)malloc(nBytes); int* c_tab; cudaMalloc(&c_tab, nBytes); init <<< 1,100 >>> (c_tab); cudaMemcpy(tab, c_tab, nBytes, cudaMemcpyDeviceToHost); cudaFree(c_tab); return tab; }
-------------
Et voici mon makefile :
----makefile----
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ARCH=--gpu-architecture=sm_60 EXTENSION_OBJET=obj #pour pouvoir switch entre mon ordi windows et linux all: test test: main.$(EXTENSION_OBJET) initialisation.$(EXTENSION_OBJET) nvcc $(ARCH) -rdc=true --output-file test main.$(EXTENSION_OBJET) initialisation.$(EXTENSION_OBJET) main.$(EXTENSION_OBJET): main.c initialisation.h g++ -o main.$(EXTENSION_OBJET) -c main.c initialisation.$(EXTENSION_OBJET): initialisation.cu nvcc $(ARCH) -rdc=true --output-file initialisation.$(EXTENSION_OBJET) -c initialisation.cu
Et voici l'erreur que j'obtiens :
Merci pour votre aidemain.obj : error LNK2019: unresolved external symbol __main referenced in function main
main.obj : error LNK2019: unresolved external symbol _Z14initialisationv referenced in function main
Partager