Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

idontknow

unregistriert

1

11.07.2018, 18:16

Cuda 9.0 & Boost 1.67

Moin,

ich hab heute das erste mal versucht die binomial_coefficient Funktion aus der Boost.Math Bibliothek zu verwenden und das ganze in einem CUDA-Projekt. D.h. der Aufruf an die Funktion liegt in einer *.cu-Datei. Leider hat das nicht funktioniert und es gab ne ganze Liste an Fehlermledungen mit fehlenden Typdefinitionen in irgendwelchen Boost-Headern. Mit googln habe ich dann herausgefunden, dass Boost manchmal gerne Probleme macht bzw. nvcc das nicht so sehr verkraftet. Da ich durch auslagern in eine .h/.cpp Datei den Fehler umgehen konnte hat das soweit wohl gepasst mit dem was andere auf google dazu gesagt haben.

Trotzdem heißt es auf google eigentlich, dass das eher ein Problem mit älteren CUDA und / oder Boost Versionen ist. Wie schon oben geschrieben verwende ich aber CUDA 9.0 und Boost 1.67 - bin also ziemlich aktuell unterwegs und habe trotzdem diese Probleme.
Da das ganze nicht mein Code ist sondern von jemandem anders muss das ganze wohl mal funktioniert haben. Daher die Frage ob jemand mit der Problematik vertraut ist und das gleiche Problem (oder vielleicht sogar eine Lösung) hat.

Der erste Typfehler tritt in MPL/if.hpp auf mit dem unbekannten Identifier "T3". Also eine typisch kryptische Template-Wahnsinn Fehlermeldung. Die Datei selber ist erreichbar sprich der Pfad dazu hin bekannt.
Ich weiß, dass man argumentieren kann, dass solch "Komplizierte" Aufrufe eigentlich nicht in eine CUDA-Datei gehören bzw. man das einfach strikt trennt, aber darum geht es mir hier explizit nicht. Prinzipiell sollte es nämlich doch möglich sein und mich interessiert hier auch aus Lerngründen der Fehler den ich habe. Das auslagern in eine .h/.cpp hat außerdem den unschönen Nachteil, dass das ganze für konkrete Typen spezialisiert werden muss, damit letztlich das Boost-Template nicht doch wieder einfach im *.cu eingebunden wird!

Gruß,
idk