getting false negative error by SYCLomatic when migrating external CUDA host device function template
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia con il reproducer C++ fornito ed esamina la gestione da parte di SYCLomatic delle dichiarazioni di template esterne durante la migrazione da CUDA a SYCL. Confronta l'output migrato con le diagnosi del compilatore riportate e il comportamento di icpx; il lavoro è completato quando il reproducer viene migrato senza gli errori di falso negativo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
When I try to migrate the code containing extern template
#include <cuda_runtime.h>
template <typename Outtype>
class foo1{};
template <typename Out>
__device__ __host__ foo1<Out> foo()
{
return foo1<Out>{};
}
extern template foo1<float> foo();
extern template foo1<double> foo();
int main(){
foo1<float> foo();
}
I got the following errors:
error: explicit instantiation of 'foo' does not refer to a function template, variable template, member function, member class, or static data member
16 | extern template foo1<float> foo();
note: candidate template ignored: target attributes do not match
8 | __device__ __host__ foo1<Out> foo()
error: explicit instantiation of 'foo' does not refer to a function template, variable template, member function, member class, or static data member
17 | extern template foo1<double> foo();
note: candidate template ignored: target attributes do not match
8 | __device__ __host__ foo1<Out> foo()
code after migration:
#include <sycl/sycl.hpp>
#include <dpct/dpct.hpp>
template <typename Outtype>
class foo1{};
template <typename Out>
foo1<Out> foo()
{
return foo1<Out>{};
}
extern template foo1<float> foo();
extern template foo1<double> foo();
int main(){
foo1<float> foo();
}
However, icpx is able to compile the migrated code without any issues.
To reproduce
#include <cuda_runtime.h>
template <typename Outtype>
class foo1{};
template <typename Out>
__device__ __host__ foo1<Out> foo()
{
return foo1<Out>{};
}
extern template foo1<float> foo();
extern template foo1<double> foo();
int main(){
foo1<float> foo();
}
Environment
- OS: Linux
- Target device and vendor: Nvidia GPU
- DPC++ version: Intel(R) oneAPI DPC++/C++ Compiler 2024.2.0 (2024.2.0.20240602)
Additional context
No response
- Lingua principale
- LLVM
- Stelle
- 292
- Fork
- 99
- Merge medio
- 5g 5h
- PR unite (30g)
- 1
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di oneapi-src/SYCLomatic
-
Add Thrust APIsApertaenhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
oneapi-src/SYCLomatic#3018 ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
oneapi-src/SYCLomatic#2962 · 1 commento ·
-
migration of uint3Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
oneapi-src/SYCLomatic#2961 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
oneapi-src/SYCLomatic#2920 · 1 commento ·
-
Hackathon
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
oneapi-src/SYCLomatic#2685 ·
Tutte le issue di oneapi-src/SYCLomatic
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
rescript-lang/rescript#8763 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 5 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
partiql/partiql-lang-kotlin#1972 ·
-
area:protocol bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno