I need compile OpenCL kernels in SPIR-V to use with Vulkan, I tried with Google CLSPV https://github.com/google/clspv, but the problem occur with vectorization, functions like vload8 doesn't work. So I need compile OpenCL kernels in SPIR-V using clang.
How to compile OpenCL Kernels to SPIR-V using Clang
2.6k views Asked by Alex At
3
There are 3 answers
0
changqi.xia
On
https://github.com/KhronosGroup/SPIR/tree/spirv-1.1
You can follow this Khronos project.
clang -cc1 -emit-spirv -triple=spir-unknown-unknown -cl-std=c++ -I include kernel.cl -o kernel.spv #For OpenCL C++
clang -cc1 -emit-spirv -triple=spir-unknown-unknown -cl-std=CL2.0 -include opencl.h kernel.cl -o kernel.spv #For OpenCL C
Related Questions in CLANG
- Cross compile simple standard C program on Linux for Mac
- Automatically wrap C/C++ function at compile-time with annotation
- clang -Xclang -cc1 -O3 mips.c -emit-llvm , clang error: -emit-llvm cannot be used when linking
- clang::HeaderSearch search path ignored
- Apple Mach-O Linker Error - ld: file not found: -ObjC
- different clang and gcc behavior with pointers
- How to use Clang compiler with MSBuild?
- MacPorts clang not using its own headers
- How to set compiler-specific flags with autotools
- Do I need to install all header files and libraries myself when using clang?
- In LLVM IR, how can I print the name of a unnamed value which is represented as an unsigned numeric value with their prefix such as %2?
- Why static_assert calls in unused template methods in LLVM
- Why clang doesn't issued a warning with using uninitialized array?
- How to traverse all nodes of clang AST?
- When can/will a function be inlined in C++? Can inline behavior be forced?
Related Questions in OPENCL
- Disable OpenCL in OpenCV completely
- opencl duplicate memory object on device
- Can I use Julia to program my GPU & CPU?
- openCL CL_OUT_OF_RESOURCES Error
- Debugging OpenCL with Intel SDK for visual studio dont stop at breakpoints
- NetBeans gives segfault, running the prgram using terminal does not
- opencl local memory and workgroup size
- Visual Studio 2013, Intel INDE 2015 update 2, Platform IDS change while debug
- Can I run Cuda or OpenCl on Intel processor graphics I7 (3rd or 4rd generation)
- How much, if any, does the choice of host language affect OpenCL performance?
- Row and Column-Major in opencl and pyopencl
- ClEnqueueCopyBuffer with offset 1
- VexCL vector of structs?
- How many threads/work-items are used?
- Kernel file not opening in XCode: C++ openCL code
Related Questions in LLVM-CLANG
- Unable to run "check-all" target when building LLVM-Clang 3.6.1
- Run All LLVM Passes
- How to use llvm libraries
- Bypass C errors to generate clang debugging information
- clang ast visitor for single line multiple variable declaration
- How to get actual name of invalid/unresolved type in clang AST
- How to detect a thread synchronization in a program in my LLVM pass?
- Set default llvm Pass to Opt and Clang
- On Mac 10.9 Mavericks is the clang configuration different from the gcc link configuration?
- llvm toy example error
- Adding nodes to Clang's AST
- optimization flag '-falign-functions=8' is not supported in Clang
- How to generate llvm bitcode for large programs with many source code files and a huge Makefile (e.g. memcached)?
- Return Void from function LLVM
- LLVM indvars pass
Related Questions in VULKAN
- Vulkan renders only one out of two meshes
- Ubuntu, g++, and Vulkan lib
- Vulkan Limitations / GPU Needed vs opengl
- Size of compressed textures in vulkan
- Greyscale texture format in vulkan
- Unexpected crashes in Vulkan geometry shader
- Wat does the "vkCreateSwapchainKHR:internal drawable creation failed." means
- Are extensions in Vulkan allowed to add new functionality?
- Dynamically uniform expressions with nested for loops in GLSL
- vkAcquireNextImageKHR: Application has already acquired the maximum number of images
- Can I install a Vulkan driver on my 3rd gen Intel Ivy Bridge integrated GPU on Ubuntu 16.04?
- Modifying a HLSL shader to work in Vulkan, do I have to separate textures/samplers?
- Descriptor Set and automatic layout transition
- Vulkan - instance creation fails when loading extensions
- Vulkan - Uniform Buffers Not Sent To Shader
Related Questions in SPIR-V
- Modifying a HLSL shader to work in Vulkan, do I have to separate textures/samplers?
- SPIR-V require locations on user in/out in Vulkan 1.0.51.1 +
- glslc - Missing entry point even with -fentry-point
- Using Vulkan + OpenXR, getting strange transparency results on quest (not present in PCVR)
- How to read a SPIR-V file?
- How to convert uint64_t to sampler2D?
- Generating OpVectorShuffle instead of OpCompositeConstruct
- Validation warning about SPIR-V Capability
- What are The SPIR-V Capability (Geometry) Requirements
- _pdep_u32 in GLSL / HLSL / SPIR-V
- How to compile OpenCL Kernels to SPIR-V using Clang
- Determine if input attachment is valid within shader
- Instanced GLSL shaders in Vulkan?
- Vulkan; Get list of uniforms & attribs from SPIR-V shader
- Generated SPIR-V with -fvk-use-scalar-layout flag using DirectxShaderCompiler causes validation layer error
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
I'm the project lead for Clspv. Jesse is right overall.
The lack of support for vectors of length 8 and 16 is deliberately out of scope for now.
That's because Vulkan itself does not support that.
We haven't added the support to mimic such support, and don't have plans to do so even in the medium term.
There is more info on an old closed issue:
https://github.com/google/clspv/issues/8