Partage
  • Partager sur Facebook
  • Partager sur Twitter

CUDA Compilation séparée : édition des liens

    12 septembre 2019 à 13:01:58

    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 :

    main.obj : error LNK2019: unresolved external symbol __main referenced in function main
    main.obj : error LNK2019: unresolved external symbol _Z14initialisationv referenced in function main
    Merci pour votre aide 

    -
    Edité par risocs 12 septembre 2019 à 13:02:53

    • Partager sur Facebook
    • Partager sur Twitter

    CUDA Compilation séparée : édition des liens

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown