关键问题说明
numba版本敏感,各库请符合如下版本。
dtk-23.04、python-3.8、numba-0.58、llvm-lite-0.41
pip install numpy
conda install llvmlite=0.41
或者
pip install llvmlite==0.41
# 源码编译
需要用适配版源码安装,或者用编译好的动态库
git clone http://developer.hpccube.com/codes/liupw/rocmlite.git
cd rocmlite
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_BITCODE_ROOT=${ROCM_PATH}/amdgcn/bitcode/
make
git clone http://developer.hpccube.com/codes/liupw/numba-dtk.git
cd numba
python setup.py bdist_wheel
pip install dist/numba-0.58.1-cp38-cp38-linux_x86_64.whl
当前环境安装好numba后,可以检测当前的numba是否可用。
注意需要先加载环境变量,以便于numba能够找到关键的动态库librocmlite.so,环境变量ROCMLITE_LIBRARY_PATH为librocmlite.so文件实际所在的路径
source dtk/env.sh
export ROCMLITE_LIBRARY_PATH= xxx
export NUMBA_CAPTURED_ERRORS="new_style"
这里有一些不需要强制加载的环境变量,若有报错文件找不到时,部分环境变量可尝试加载来解决问题(以下是示例路径,请根据实际情况修改)
export HSAILBIN=${ROCM_PATH}/llvm/bin
export NUMBA_ROCM_BC_PATH=${ROCM_PATH}/amdgcn/bitcode
export NUMBA_HSA_DRIVER=${ROCM_PATH}/lib/libhsa-runtime64.so
numba -s
# 整体测试
python -m numba.runtests numba.roc.tests -v
# 单测
python -m numba.runtests numba.roc.tests.hsapy.test_compiler.TestExecution -v
numba从0.54版本废弃roc,且废弃后对整体框架有了较大的调整。
同时,废弃的很大原因,也是ROCM本身有了较大的改变,不再单独提供hsa层接口,而是主推runtime层的接口。
两边都存在较大的变化,导致很难完全适配。目前仅通过了单元测试,其它场景未进一步测试。后期可根据实际需求,对部分功能实现进行调整。
DTK的CUDA兼容模块目前不能支持numba-cuda,主要是因为缺少nvvm这个库,这个库和PTX翻译相关,较难支持。
jit环境创建
转义阶段
hsa运行
numba-0.60适配
新增numba-0.60适配,可支持dtk-24.04.3,在KM上运行。额外需要配置环境
pip install numpy==1.24
pip install llvmlite==0.43
解压numba-0.60_install_dep.tar,安装numba包,并配置环境变量
tar -xf numba-0.60_install_dep.tar
cd numba_install_dep
pip install numba-0.60.0-cp39-cp39-linux_x86_64.whl
source dtk/env.sh
export ROCMLITE_LIBRARY_PATH=/xxx/xxx/numba_install_dep
export NUMBA_CAPTURED_ERRORS="new_style"
可用如下命令检查numba是否安装成功
python -m numba.runtests numba.roc.tests -v
python -m numba.runtests numba.roc.tests.hsapy.test_compiler.TestExecution -v
numba roc版本和CUDA的用法存在差异,可以参考如下手册,以及测试用例进行代码修改。
https://numba.readthedocs.io/en/0.53.0/roc/index.html
暂无数据
暂无数据