I need to ask, like automatic compiler vectorization, can GPU ISA be generated automatically, by skipping the CUDA programming?
For instance if i just write C code there can be 2 possibilities, semi and full automatic.
In case of semi, we can write #pragma directives to say this should be run on gpu. hence can the compiler generates directly gpu ISA, skipping CUDA code?
In case of fully automatic, can we just write simple C code and compiler is intelligent enough to determine which portion is suitable for GPU and generates GPU ISA accordingly?
I need to know the progress made so far in both the above mentioned directions.
You can skip CUDA code generation and target PTX assembly. PTX is a common assembly language for NVIDIA’s GPU. You may want to look at PPCG, Pluto projects to get a hint of how automatic CUDA code can be generated by compilers. They are based on polyhedral model so come with some inherent limitations.
I am asking to generate directly PTX code automatically or by directives without involvement of CUDA. This way, I am talking about avoiding source to source compiler approach where c code is converted automatically into CUDA, instead I am saying directly to convert C code to PTX assembly.
Hmm… AFAIK, state-of-the-art tools use source-to-source approach. You may want to look at current PPCG if they have an option to bypass CUDA (I suspect not).
Is there any reason why you want to avoid that?
Polly supports experimental PTX code generation using PPCG’s mapping algorithm.