2013-01-20 1 views
0

Mon algorithme (élimination gaussienne multi-frontale parallèle) doit allouer dynamiquement de la mémoire (construction d'arbres) à l'intérieur du noyau CUDA. Est-ce que quelqu'un sait si gpuocelot supporte de telles choses?Est-ce que gpuocelot prend en charge l'allocation de mémoire dynamique dans un périphérique CUDA?

Selon ce: stackoverflow-link et le guide de programmation CUDA Je peux faire de telles choses. Mais avec gpuocelot, j'obtiens des erreurs pendant l'exécution.

Erreurs:

  1. Quand j'appelle malloc() à l'intérieur du noyau je reçois cette erreur:
    (2.000239) ExternalFunctionSet.cpp:371: Assertion message: LLVM required to call external host functions from PTX. 
    solver: ocelot/ir/implementation/ExternalFunctionSet.cpp:371: void ir::ExternalFunctionSet::ExternalFunction::call(void*, const ir::PTXKernel::Prototype&): Assertion false' failed.
  2. Lorsque je tente d'obtenir ou de définir la taille de tas malloc (à l'intérieur du code hôte):
    solver: ocelot/cuda/implementation/CudaRuntimeInterface.cpp:811: virtual cudaError_t cuda::CudaRuntimeInterface::cudaDeviceGetLimit(size_t*, cudaLimit): Assertion `0 && "unimplemented"' failed.

Peut-être que je dois pointer (en quelque sorte) au compilateur que je veux utiliser le dispositif malloc()?

Un conseil?

+0

Je suis raisonnablement sûr que l'émulateur a cuit dans 'malloc', le soutien' 'free' et printf', mais je ne suis pas certain sur le backend LLVM. Vous devriez vraiment demander cela sur la liste de diffusion Ocelot. Ce n'est pas du tout une question CUDA et je suis tenté d'enlever le tag CUDA. – talonmies

Répondre

Questions connexes