목록Cloud Computing/MAGMA (12)
MJay
먼저 Script로 MKL 설치 그리고 먼저 Nvidia Graphics Card를 깔아야한다. g2.instance는 GRID 520 카드라서 이에 맞는 그래픽 카드를 설치한다. 그 전에 dpkg 사이즈가 커서 storage의 사이즈를 20GB 까지 늘린다. Nvidia Graphics Card 설치하기 wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb $ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1..
일단 DeepSpotCloud에 영향을 주지않아서 다행이다 t2, m4는 hyperthreading을 지원안하고 리얼이다. 그런것도 생각해서 성능을 비교해봐야겠다 자동화 위주로 해야겠다. 일단 t2.large로 한다음에 Free Eligible한 Ubuntu 16.04에서 실행했다. Public AMI라서 key pair을 import했기때문에 ssh ubuntu@ec2-54-245-12-148.us-west-2.compute.amazonaws.com 이렇게만 하지면 들어가진다 일단 랜선은 뽑고 KMU(5G)로 해야 들어가진다. 컴공에서는 port 22번을 닫아놔서 잘 안된다. 일단 뭐부터 해야할지 모르겠으니 Magma부터 깔아보자 링크 http://icl.cs.utk.edu/projectsfiles/m..
행렬의 크기를 조정할수 있는 옵션이 이렇게 있다. 이걸 활용해서 ./testing_zgesv -N 1000:37000:1000 --ngpu 4 --lapack 이렇게 하면 이런 결과를 얻을수 있다. 이렇게 Thread를 조정할수있다.
Magma를 돌리기 위해서 필요한 Library CUDA Toolkit Download | NVIDIA Developer , Intel® Math Kernel Library (Intel® MKL) | Intel® Software, OpenBLAS : An optimized BLAS library 먼저 위 것들을 설치를 하고 경로를 설정해줘야한다 그리고 wget을 통해 magma-2.2.0을 받아서 압축을 푼다음에 make.inc를 손보면 된다. 이렇게 make.inc를 손 본 다음에 make를 해주면 된다. test를 위해 examples 폴더나 testing 폴더에 가서 여러가지 magma의 내장 함수를 해본다. Magma를 돌리기 위해서 필요한 Library CUDA Toolkit Download |..
sudo nvidia-docker run -it --name magma_docker7 -v /usr/local/magma/:/usr/local/magma/ -v /usr/local/cuda-8.0/:/usr/local/cuda-8.0/ -v /home/sonmj/magma-2.2.0/:/magma_folder -v /opt/intel/:/opt/intel/ kmubigdata/ubuntu-tensorflow /bin/bash cuda가 설치되어야하므로 kmubigdata/ubuntu-tensorflow를 썻다. 이렇게 하면 근데 Docker에서 컴파일은 안된다. 이유는 모르겠다. sudo nvidia-docker run -it --name magma_docker7 -v /usr/local/magma/:/..
* PThreads Parallel Threads를 뜻하는거 같다. * OPenMP Open Multi-Processing * GNU GNU 프로젝트는 유닉스(Unix™) 및 리눅스처럼 유닉스와 유사한 운영체제에서 사용할 수 있는 일련의 자유 소프트웨어 도구를 개발해 왔습니다. 이러한 도구를 이용해 사용자는 파일을 복사하거나 지우는 아주 일상적인 작업부터, 프로그램 작성과 컴파일, 여러가지 종류의 문서 편집에 이르기까지 다양한 작업을 할 수 있습니다. 컴파일 해주는 도구라고 생각하면 된다. Thread는 코어 개수라고 보면된다. 즉 GPU기기에서는 코어가 48개라서 Thread도 48개라고 생각하면 될꺼같다. xstr – 공유 캐릭터 라인을 실현하기 위해서(때문에) C 언어 프로그램으로부터 캐릭터 라인을..
GEneral Matrix to Matrix Multiplication multiplies two input matrices together to get an output one C := alpha*op(A)*op(B) + beta*C, scalar-matrix-matirx product op(X) is one of op(X) = X, or op(X) = XT, or op(X) = XH, alpha and beta are scalars, A, B and C are matrices: op(A) is an m-by-k matrix, op(B) is a k-by-n matrix, C is an m-by-n matrix.
Magma_Z_MAKE라는게 있다. 이건 복소수를 만드는 것이다. complex number를 제공해준다고 보면 된다. 총 2개의 parameter가 있는 첫번째는 실수이고 두번째는 복소수이다. 다음으로 zfill_matrix 함수가 있다. MAGMA_Z_MAKE를 이용한다. 즉 복소수로 구성된 행렬을 만든다고 보면 된다. 지금은 1+1i 값만 생성 되겠지만 주석처리된 곳을 보면 저렇게 랜덤함수로 여러개의 복소수를 만든다.
행렬을 보다보면 column-wise라는 말이 나온다 OpenGL에서 나온다고 한다. 예를 들어, 2×4 행렬에 1~8 까지의 데이터가 있다고 합시다. 직관적으로 생각하기에 1~8의 데이터는 1,2,3,4, 5,6,7,8 형태로 저장될 것 같지만, 이는 행 우선 방식(Row wise)입니다. openGL에서 행렬은 열 우선 방식인 1,3,5,7, 2,4,6,8 형태로 저장됩니다. 따라서, 포인터로 4번 째 주소의 데이터를 불러온다면 7이 아닌 4가 출력이 됩니다. 출처 - http://www.heeaecode.com/opengl-matrix-column-wise/
Magma의 코드를 살펴보다 opts를 봤다. 이게 뭘까 그래서 헤더파일에 접근해봤다. testing.h 헤더파일을 보니 magma_opts에 관한 Class가 있다. ngpu도 있고 niter 등등 실행파일에서 보이는 여러가지 option파일이 있었다. testing_zgesv에 보이는 코드들이 있다. 결론은 magma 에서 조절할 수 있는 옵션들을 class로 만든게 magma_opts이다. 그 안에는 여러 변수가 있다고 보면 된다.( 참고로 여긴 자료형이 int가 아니라 magma_int_t이다)