[LLVMdev] CUDA front-end (CUDA to LLVM IR)
Ahmed ElTantawy
ahmede at ece.ubc.ca
Wed Apr 8 12:22:31 PDT 2015
Hi Dmitry,
I tried using the tool you pointed me to and run into a problem, you may be
able to help.
Here is what I did:
- I installed (i.e., downloaded and built) LLVM 3.2 as it seems that this
is the version that is compatible with the tool.
- I changed the hard-coded paths in the nvcc-llvm-ir/makefile as follows
(changes are in bold)
libcicc.so: cicc.cpp
g++ -g -O3 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
*-I/$LLVM_BUILD_DIR/include/
-I/$CUDA_5.5_BUILD_DIR/nvvm/include/* -fPIC $< -shared -o $@ -ldl
*-L/$LLVM_BUILD_DIR/Release+Asserts/lib/
*-Wl,--start-group -lLLVMCore -lLLVMSupport -lLLVMipo -lLLVMipa
-lLLVMAnalysis -lLLVMTarget -lLLVMScalarOpts -lLLVMTransformUtils
-lLLVMInstCombine -Wl,--end-group -lpthread
libnvcc.so: nvcc.cpp
g++ -g -O3 -I/*$CUDA_5.5_BUILD_DIR*/nvvm/include/ -fPIC $< -shared
-o $@ -ldl
-I noticed that some of the required header files from LLVM exists in
*-I/$LLVM_SRC_DIR/include/
*and others are auto-generated into *-I/$LLVM_BUILD_DIR/include/ *so I had
to manually move them to one folder for the make to compiler properly (I
moved them to the build directory).
-It compiles fine and both libcicc.so and libnvcc.so are generated.
- Finally, when I try to run 'CICC_MODIFY_UNOPT_MODULE=1
LD_PRELOAD=./libnvcc.so nvcc -arch=sm_23 test1.cu -c -keep' , it gives
a *Segmentation
fault*.
In fact doing "export LD_PRELOAD=./libnvcc.so" was enough to make the
terminal Segfault with any other command !!! (e.g., it segfault when
simply doing "ls" if LD_PRELOAD is exported)
Any idea what is the problem ?
This is my OS info:
Distributor ID: SUSE LINUX
Description: openSUSE 11.4 (x86_64)
Release: 11.4
Codename: Celadon
On Wed, Apr 8, 2015 at 10:12 AM, Dmitry Mikushin <dmitry at kernelgen.org>
wrote:
> A tool of this kind here: https://github.com/apc-llc/nvcc-llvm-ir
>
> 2015-04-08 19:01 GMT+02:00 Ahmed ElTantawy <ahmede at ece.ubc.ca>:
>
>> Hi,
>>
>> I wanted to ask whether there is ongoing effort (or an already
>> established tool) that enables to convert CUDA kernels (that uses CUDA
>> specific intrinsics, e.g., threadId.x, __syncthreads(), ...) to LLVM IR. I
>> am aware that I can do this for OpenCL with the help of libclc but I can
>> not find something similar for CUDA.
>>
>> Thanks
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150408/98f77392/attachment.html>
More information about the llvm-dev
mailing list