2020-04-30 00:18:36 -05:00
|
|
|
## OVERVIEW
|
|
|
|
|
|
|
|
|
|
This directory contains the CMakeLists.txt for automatically generating
|
|
|
|
|
the ASCII code object file, "opencl_blit_objects.cpp", which contains the
|
|
|
|
|
blobs of the code object of the Image BLIT kernels for the devices supported
|
|
|
|
|
on ROCm. The blobs are loaded by the image library and required to update
|
|
|
|
|
whenever a new device is introduced.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## ADD NEW DEVICE
|
|
|
|
|
|
|
|
|
|
To add a new supported device, the following steps are required:
|
|
|
|
|
|
|
|
|
|
1. Declare an extern variable of the device XXX, by adding the line of
|
|
|
|
|
"extern uint32_t ocl_blit_object_gfxNNN[];" in "blit_kernel.cpp"
|
|
|
|
|
2. Update the BlitKernel::GetPatchedBlitObject() function to support the
|
|
|
|
|
device by assigning "blit_code_object" to "ocl_blit_object_gfxNNN[]"
|
|
|
|
|
3. Add the gfxNNN to the TARGET_DEVICES list in CMakeLists.txt
|
|
|
|
|
4. If the new device requires XNACK, add it to the XNACK_DEVS list in CMakeLists.txt
|
|
|
|
|
5. Rebuild the image library
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## REQUIREMENT
|
|
|
|
|
|
|
|
|
|
In order to create the code object file, the bitcodes of the kernels are
|
|
|
|
|
generated by the compiler and the following bitcode libraries are required,
|
|
|
|
|
|
2020-07-13 13:56:25 -04:00
|
|
|
opencl.bc
|
|
|
|
|
ocml.bc
|
|
|
|
|
irif.bc
|
|
|
|
|
oclc_correctly_rounded_sqrt_off.bc
|
|
|
|
|
oclc_daz_opt_on.bc
|
|
|
|
|
oclc_finite_only_off.bc
|
|
|
|
|
oclc_isa_version_<GFXIP>.bc
|
|
|
|
|
oclc_unsafe_math_off.bc
|
2020-04-30 00:18:36 -05:00
|
|
|
|
|
|
|
|
where <GFXIP> is the gfxip number of the GPU. The directory contains the
|
|
|
|
|
bitcode libraries is specified in a CMake varaible.
|
|
|
|
|
|
|
|
|
|
There are several variables are required for CMake to build the code
|
|
|
|
|
object file. All of them have default values, and defined as following:
|
|
|
|
|
|
|
|
|
|
OPENCL_DIR - the location of installed OpenCL
|
|
|
|
|
(Default: /opt/rocm/opencl)
|
|
|
|
|
BITCODE_DIR - the directory contains the bitcode library
|
2020-07-13 13:56:25 -04:00
|
|
|
(Default: /opt/rocm/amdgcn/bitcode)
|
2020-04-30 00:18:36 -05:00
|
|
|
LLVM_DIR - the directory contains the clang, llvm-link and llvm-dis
|
|
|
|
|
executables
|
|
|
|
|
(Default: ${PROJECT_BUILD_DIR}/../lightning/bin)
|
|
|
|
|
TARGET_DEVICES - list of gpu types for kernel builds (eg. "gfx900;gfx902")
|
|
|
|
|
(Default: "gfx900;gfx902;gfx904")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## STEPS TO BUILD
|
|
|
|
|
|
|
|
|
|
$ make build
|
|
|
|
|
$ cd build
|
|
|
|
|
$ cmake -D${OPENCL_DIR} -D${BITCODE_DIR} -D${LLVM_DIR} -D${TARGET_DEVICES} ..
|
|
|
|
|
$ make opencl_blit_objects.cpp
|
|
|
|
|
|
|
|
|
|
|