Napisałem jądro OpenCL w pliku .cl
. Próbuje uzyskać kilka nagłówków.zawierają nagłówki do pliku OpenCL .cl
Jego kompilacja kończy się niepowodzeniem, ponieważ dołączone pliki nagłówkowe są "nieodnalezione". Mam świadomość, że clBuildProgram
może pobrać opcję -I dir
, która dodaje katalog dir
do listy katalogów, które mają być wyszukiwane w poszukiwaniu plików nagłówkowych.
Na forum witryny khronus ten post http://www.khronos.org/message_boards/viewtopic.php?f=37&t=2535 mówi o problemie.
Proponują użyć clCreateProgramWithSource
, która określa wszystkie źródła (w tym pliki .h).
mam pytania dotyczące tej kwestii:
- Która opcja jest lepsza? (
clBuildProgram
vs.clCreateProgramWithSource
, jak opisano powyżej) - Jeśli używam
clCreateProgramWithSource
, w jaki sposób kompilator wie, co należy uwzględnić? Chodzi mi o to, z którego źródła pochodzi nazwa pliku? - Jeśli używam
clBuildProgram
i jest kilka katalogów z plikami włączającymi, jak je określić?
AMD APP ma problemy z -I też z mojego doświadczenia (to po prostu nie działa), chociaż Intel obsługuje go doskonale. – Thomas
To interesujące. Chociaż testowałem to na procesorze. Nie mam procesora graficznego AMD, więc nie mogę go przetestować na GPU. Może to problem z GPU vs. CPU? –
Nie, próbowałem go pod obydwoma urządzeniami pod Windows, kompilator po prostu nie obsługuje względnych ścieżek dołączania. Zasadniczo, mam "-I cl /" w wierszu poleceń kompilatora, a moje jądra są uporządkowane w katalogu cl/i chociaż działa to dobrze w systemie Intel/Linux, AMD po prostu nie będzie miało żadnego z nich, bez względu na to, to, co próbuję, a jedynym rozwiązaniem, które znalazłem, było albo zakodowanie * absolutnej ścieżki * każdego pliku .cl w dyrektywach #include, albo dodanie mojego katalogu cl/do systemu $ PATH. Może to być moja instalacja, która jest zepsuta, nie utrzymuję systemu Windows tak bardzo, jak mój Linux. – Thomas