1
votes

Intel OpenCL SDK pour le noyau de compilation FPGA pour l'émulation avec la commande aoc donne une erreur de l'éditeur de liens

J'essaie de compiler un noyau pour l'émulation avec aoc dans le SDK Intel FPGA, j'ai défini toutes les variables d'environnement comme possible même en utilisant le init_opencl.bat inclus dans le SDK. J'exécute la ligne suivante en utilisant l'invite de commande des développeurs de Visual Studio 2017 afin d'utiliser l'éditeur de liens de Visual Studio:

aoc -march=emulator -v -board=a10gx my_kernel.cl -o my_kernel.aocx

mais cela génère toujours une erreur de l'éditeur de liens (les erreurs sont en espagnol, désolé pour cela).

Creando biblioteca libkernel.lib et objeto libkernel.exp

libkernel.obj: erreur LNK2019: sÃmbolo externo __imp___translate_sampler_initializer sin resolver al que se hace referencia en la fonction my_kernel

libkernel.obj: erreur LNK2019: sÃmbolo externo floorf sin resolver al que se hace referencia en la función __acl__copysignf

libkernel.obj: erreur LNK2019: sÃmbolo externo ceilf sin resolver al que se hace referencia en la función __acl__copysignf

libkernel.obj: erreur LNK2019: sÃmbolo externo log2 sin resolver al que se hace referencia en la función __acl__sppow_approx

libkernel.obj: erreur LNK2019: sÃmbolo externo exp2 sin resolver al que se hace referencia en la función __acl__sppow_approx

LINK: erreur LNK2001: sÃmbolo externo _DllMainCRTStartup sin resolver

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.16.27023 \ lib \ x86 \ msvcrt.lib: avertissement LNK4272: el tipo de máquina de biblioteca 'x86' está en conflicto con el tipo de máquina de destino 'x64'

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.16.27023 \ lib \ x86 \ legacy_stdio_definitions.lib : avertissement LNK4272: el tipo de máquina de biblioteca 'x86' está en conflicto con el tipo de máquina de destino 'x64'

libkernel.dll: erreur fatale LNK1120: 6 externos sin resolver

Je ne sais pas quoi faire d'autre.

Remarque: Le noyau utilise des objets image2d dont je ne suis pas tout à fait sûr d'être compatibles avec les FPGA. En fait, c'est une autre question.


1 commentaires

Mise à jour: en exécutant la commande à l'aide de l'invite de commande X64 Visual Studio Developers, il parvient à résoudre la plupart des symboles externes, mais il en reste un qui n'est pas résolu __imp___translate_sampler_initializer. Ce symbole est-il lié à l'échantillonneur d'images dans le noyau ??? Puis-je utiliser images2d_t avec des FPGA ????


3 Réponses :


0
votes

Le problème vient probablement du fait qu'ils (Altera, maintenant Intel) ont toujours besoin sous Windows d'utiliser MSVC 2010 pour réussir à lier leurs bibliothèques avec le projet hôte.

C'est au moins le cas pour fft-2d où est une telle exigence.

Vous avez donc probablement 2 choix:

  1. Installez MSVC 2010

  2. Découvrez comment réussir la liaison avec leurs bibliothèques en cours de création à l'aide de MSVC 2010


<₹Mise à jour

J'ai vérifié mes notes. Pour pouvoir créer une liaison avec les bibliothèques Altera à l'aide de VS 2015, je me suis également lié avec legacy_stdio_definitions.lib . Cela devrait aller dans AdditionalDependencies dans la section de l'éditeur de liens. Je ne peux pas garantir que cela aidera également votre cas, mais cela vaut la peine d'essayer.


0 commentaires

0
votes

Tout d'abord merci doqtor pour votre réponse ... à la fin, j'ai finalement été capable de compiler sans avoir à changer grand-chose ... en fait si vous exécutez le compilateur hors ligne aoc à partir de l'invite de commande Visual Studio Developers x64 les problèmes sont résolus.

J'ai décidé de réinstaller proprement tout le SDK Intel FPGA et cette fois j'ai configuré correctement chaque variable d'environnement ... et tout a parfaitement fonctionné ... J'ai pu compiler et exécuter les exemples du SDK.

Mais un problème n'a pas pu être résolu .... mon noyau utilise des objets image2d_t et bien sûr sampler_t .... s'avère selon le Guide de programmation du SDK Intel ... le SDK ne prend pas en charge les images et les échantillonneurs lorsque vous travaillez avec OpenCL 1.0.

Ce qui est étrange, c'est que la plate-forme FPGA Emulator le prend en charge, donc j'ai pu compiler à l'aide de l'émulateur ... même si cela ne résoudra pas grand-chose pour moi ..... J'ai décidé de changer de noyau et de trouver un alternative à l'image et aux échantillonneurs.

Merci


0 commentaires

0
votes

Répondre à vos questions:

  1. L'émulateur FPGA ne prend pas en charge la plate-forme x86, juste x86_64 (mais je vois que vous êtes déjà résolu, je suppose).
  2. À propos des images. Le SDK ne prend en effet pas en charge le type d'image, mais cela ne signifie pas que aoc échouera lors de la compilation. Vous échouerez plus tard lorsque vous tenterez d'exécuter votre application.

0 commentaires