HIP(ROCm) 구축에 대한 cupy on의 노트

10382 단어 ROCmCuPyGPGPU

이마


Radeon GPU에서 Tensorflow와pythorch의 작업을 조작할 수 있는 ROCm은 최근cupy에 대응하고 있습니다.
https://qiita.com/kz_lil_fox/items/05bb375225e80fa99e39
비공식적으로 창고에서 어느 정도 활동을 한 것으로 보이지만 최근 공식 rc창고에서도 대응하고 있다.
이는 지금까지 CUDA 전용 Cupy가 AMD에 대응했고 Chainer/CUPy의 ROCm 대응이 한 걸음 더 나아갔다는 것을 의미한다.
Experimental support of AMD GPUs are added (#1094). See the installation guide for how to install CuPy with AMD support. Note that this feature is still experimental, and we do not guarantee the API stability.
Supported Versions: ROCm 2.6+.
실험적인 지원이기 때문에 (7.00rc1은 당연한 것) 버그가 가득한 틈새 상태라고 생각하지만 환경 구축부터 간단한 테스트까지 모두 해야 한다고 생각합니다.

추가 정보


2019/12/02 현재
방금 주 지점에 구축 오류의fix가 추가된 것 같습니다.
https://github.com/cupy/cupy/commit/04cc7c264b3e6d22ad5093cd1a42a34da388d426
앞으로 잘 발매될 거예요, 바로 하고 싶은 사람 해보세요.

공식 문서


https://github.com/cupy/cupy/pull/1094
https://docs-cupy.chainer.org/en/latest/install_rocm.html
영어 강좌가 있기 때문에, 상세한 상황은 이곳을 참조하세요.
ROCm에 맞게 작동해야 할 것 같습니다.

테스트 환경①


ROCm Version: 2.9.6
OS ubuntu 18.04.1
GPU0 RadeonⅦ
GPU1GTX 1080Ti(테스트 및 이미지 출력용)
CPU Xeon E5-2603 v4
gcc g++ (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0

테스트 환경 ②


ROCm Version: 2.9.6
OS ubuntu 16.04.3
GPU0 RadeonⅦ
GPU1GTX 1080Ti(테스트 및 이미지 출력용)
CPU Xeon  E5-2603 v4
gcc g++ (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
이곳의 구축은 성공했다
주석 테스트 환경에서만 구축 성공

실제 환경 구축

sudo apt update
sudo apt upgrade
git clone https://github.com/cupy/cupy.git -b v7.0.0rc1
7.0.0rc1 clone 좀 주세요.
환경 변수를 지정해야 하기 때문에 임의의 구조와 일치해야 한다
환경 변수를 ~/.bashrc에 설정했습니다.
export HCC_AMDGPU_TARGET=gfx900
#ここ使ってるGPUアーキテクチャにあわせる
export __HIP_PLATFORM_HCC__
export CUPY_INSTALL_USE_HIP=1
export PATH=$ROCM_HOME/bin:$PATH
여기만 더 넣으면 돼요.
sudo apt install hipblas hipsparse rocrand
여기 추가됐는지 다시 확인해 봐.
그리고 comple은 g++가 필요합니다.gcc가 거의 다 넣었을 것 같아요. 신중하게 보기 위해서 확인해 보세요.source ~/.bashrc또한, 파이토존 환경 파괴를 방지하기 위해 미니콘다를 사용합니다.
https://qiita.com/T_keigo_wwk/items/1817b6488526778aa8f2
conda create -n cupy python=3.6
cd cupy #cupyのRepository内に入る
conda activate cupy
pip install -U setuptools pip
pip install cython
이 설치는 대략 시간이 걸린다.
며칠 뒤에 구축된 바이너리나 pip로 바로 들어갈 수 있으면 좋을 것 같아요.$ g++ --version 또는 python setup.py install, pip install .상기 방법으로 구축할 수 있다

구성 오류 정보


아래와 같은 오류가 자주 발생하는데, 지금은 아직 잘 모르겠다.
python setup.py develop

conda 사용 시 주의사항


If you are using certain versions of conda, it may fail to build CuPy with error g++: error: unrecognized command line option ‘-R’. This is due to a bug in conda (see conda/conda#6030 for details). If you encounter this problem, please downgrade or upgrade it.
특정 버전의 건물은 그다지 좋지 않은 것 같다.
아마 최신 판본을 사용하는 것은 문제없을 것이다.
2019년 10월 현재 이 버전은 최신 버전으로 가능하면 콘다를 제외한 포장 관리가 안전할 수 있습니다.

간단한 동작 테스트를 해보겠습니다.

pip install jupyter
jupter notebook 사용
누가 테스트 코드를 썼는데 이걸로 할게요.
https://qiita.com/samacoba/items/d18e6cf09f544477aff4
python에서 GPU 계산을 간단하게 할 수 있는 Cupy를 소개합니다.
git clone https://github.com/samacoba/Mytest.git
jupyter-notebook
/Mytest/No_01_cupy_array.ipynb를 실행해 보세요.

순조롭게 작동하지만 AMD의 GPU에서 실제로 실행되는지는 알 수 없지만 매트릭스 계산은 틀리지 않았다
이제 여기 탑승 테스트를 해볼게요.
https://qiita.com/kz_lil_fox/items/05bb375225e80fa99e39
cd ..
cd cupy
python ./examples/gemm/sgemm.py 
m=1398 n=1197 k=2886
start benchmarking

=============================Result===============================
hand written kernel time 2.475200080871582 ms
cuBLAS              time 1.054854393005371 ms

슈팅

python ./setup.py --install
Options: {'package_name': 'cupy', 'long_description': None, 'wheel_libs': [], 'wheel_includes': [], 'no_rpath': False, 'profile': False, 'linetrace': False, 'annotate': False, 'no_cuda': False, 'use_hip': True}

-------- Configuring Module: cuda --------
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
gcc: warning: /opt/rocm/include/: linker input file unused because linking not done
/home/rocm-test/miniconda3/compiler_compat/ld: /opt/rocm/include/: file not recognized: Is a directory
collect2: error: ld returned 1 exit status
Cannot build a stub file.
Original error: command 'g++' failed with exit status 1

************************************************************
* CuPy Configuration Summary                               *
************************************************************

Build Environment:
  Include directories: ['/opt/rocm/include', '/opt/rocm/rocrand/include']
  Library directories: ['/opt/rocm/lib', '/opt/rocm/rocrand/lib']
  nvcc command       : (not found)

Environment Variables:
  CFLAGS          : /opt/rocm/include/
  LDFLAGS         : (none)
  LIBRARY_PATH    : (none)
  CUDA_PATH       : (none)
  NVTOOLSEXT_PATH : (none)
  NVCC            : (none)
  ROCM_HOME       : /opt/rocm

Modules:
  cuda      : No
    -> Include files not found: ['hip/hip_runtime_api.h', 'hip/hiprtc.h', 'hipblas.h', 'hiprand/hiprand.h']
    -> Check your CFLAGS environment variable.

ERROR: CUDA could not be found on your system.
Please refer to the Installation Guide for details:
https://docs-cupy.chainer.org/en/stable/install.html
이런 느낌으로 패스를 못 하면 혼나요.
export PATH=$ROCM_HOME/bin:$PATH
export ROCM_PATH=/opt/rocm
export ROCM_HOME=/opt/rocm
좀 보태면 된다.

총결산


때로는 아직 안정적으로 세울 수 없다
빌딩은 아직 어려운 단계여서 제대로 사용할 수 없고, 테스트판인 점을 고려하면 좋다.
액션 리포트 같은 건 아직 엄격하지 않은 부분이에요.

참고 자료


부록(Docker 테스트)


Docker로 구축 오류가 발생한 환경을 재현할 수 있기 때문에, 필기 대신 dockerfile을 남깁니다
rocm와 docker가 설치된 환경이라면 재현할 수 있을 것 같아요.

FROM rocm/dev-ubuntu-16.04:2.7


LABEL OBJECT="HIP on Cupy v7.0.0 Run Test"
## rocm-dev  16,04-test

RUN sudo apt update && sudo apt install -y \
    wget software-properties-common \
    hipblas hipsparse rocrand rocthrust

RUN sudo apt install -y  git
RUN sudo apt install -y g++
#python3 setup
RUN sudo apt install -y python3-pip
RUN sudo pip3 install cython

# define parameters
#Test GPU is Radeon7(vega20)
ENV HCC_AMDGPU_TARGET gfx906
ENV __HIP_PLATFORM_HCC__ ''
ENV ROCM_HOME /opt/rocm
ENV CUPY_INSTALL_USE_HIP 1
ENV PATH ${ROCM_HOME}/bin:${PATH}
ENV CFLAGS "-I${ROCM_HOME}/hip/include -I${ROCM_HOME}/hipblas/include -I${ROCM_HOME}/hipsparse/include -I${ROCM_HOME}/hiprand/include ${CFLAGS}"
ENV LDFLAGS "-L${ROCM_HOME}/hipblas/lib -L${ROCM_HOME}/hipsparse/lib -L${ROCM_HOME}/hiprand/lib ${LDFLAGS}"
ENV NVCC hcc
ENV CUDA_PATH ${ROCM_HOME}/bin



#cupy build&install
WORKDIR /opt
RUN sudo chmod 777 /opt
RUN git clone https://github.com/cupy/cupy.git -b  v7.0.0

#RUN git clone https://github.com/cupy/cupy.git 
RUN cd cupy &&  python3  setup.py develop

보충 설명


마스터 브랜치에도 HIP build의 합병이 있기 때문에 이쪽도 체크해야 합니다.
v7.0.0rc1 발표는 위에서 말한 바와 같이 사전 발행이며 아직 정면으로 구축할 수 없습니다.
한편, 11/30까지 cupy위원들이 수정을 했고 우리 쪽에서도 dep지점의 건설 성공을 확인했다.
나는 머지않아 사장의 지점에 합병될 것이라고 생각하기 때문에 창고의 상황을 보고 필요한 지점과 발행을 clone으로 하세요.
12/05 추기!v7.0.0rc잖아!
https://github.com/cupy/cupy/releases/tag/v7.0.0
여러 fix가 추가되었기 때문에 이쪽을 사용하세요.

좋은 웹페이지 즐겨찾기