본문 바로가기

Programming/병렬프로그래밍9

CUDA와 OpenCL. 그리고 GP GPU. AI가 대세가 되면서 학습을 위한 과정에서 CUDA를 이용한 고속화가 큰 혜택을 보았다고 생각한다. 15년전 내가 GP GPU를 연구할때만 해도 이정도까지 대세가 될거라 생각은 솔직히 못했다. 특정 분야에서 주로 사용될 것으로 예상했었지;; (AI라는 특정분야이긴 하니까 맞긴 한건가? AI가 완전 대세일뿐 ㅎ) GP GPU는 기본적으로 연산을 담당하던 CPU의 부담을 덜어주고자 시작했다. CUDA가 처음 나올 시기에도 GPU는 훌륭한 co-processor로서의 역할을 충분히 감당할 수 있었다. 실수(float, double)연산에 있어서는 특화되어있었다. 그리고 그때에도 GPU코어는 100개 이상씩 달고 나왔다. (엔비디아 기준) 실수 연산만 가능하다고 하지만 물량빨로 충분히 고성능 컴퓨팅을 할 수 있.. 2023. 9. 27.
MPICH vs OpenMP 요즘 블로그 유입통계를 보니 LAPACK을 찾아 유입된경우가 있더라.. 졸업논문 쓰려고 MPI 클러스터 구축하던 때에 기록하기 위해 작성했던 글.. 15년전에 CUDA로 졸업논문을 쓸지, Hybrid MPI (OpenMP + MPICH)로 졸업논문을 쓸지 고민하다 Hybrid MPI로 선택하고 클러스터 구축하느라 고생했던(삽질했던)기억이 나면서 블로그 보다보니 어? OpenMP와 MPI에 대해 정리해둔게 없었네? 그냥 까먹지 말자고 대략적으로 내용 정리. 물론.. 내 졸업논문쓰던때 기준(2008년)이라 많이 바뀌었을수도 있다. 구분 MPI OpenMP 특징 - 클러스터에 속한 프로세서들을 사용하여 병렬화를 구현함. CPU수가 모자라면 클러스터에 노드 추가하여 확장하면 된다.(확장성이 좋다. 그리고 싸다... 2022. 7. 22.
MPI on Multicore, an OpenMP Alternative? 원문보기 : http://www.linux-mag.com/id/4608 위의 글이 영문으로 되어있어서.. 영문을 적어놓고 해석을 달까.. 했으나... 솔직히.. 오역을 한 이후에 딴지걸릴것도 무섭고해서.. 그냥 제가 아는것 + 해석한 내용으로 작성을 하겠습니다. 최근의 PC들은 다 멀티코어를 탑재하였고, 그에 따라 병렬 프로그래밍이 필요하게 되었다. 기존의 코드들을 확장성 있게 만들고싶다면, 코드를 다시 작성하여야 할 것이다. (이거는 좀 해석이..-_-..) Multicore Programming의 과제는, 병렬 프로그래밍이고, 이것은 개발자에게 있어서 조금 더 하드웨어에 가까워져야하고 응용 프로그램의 용량이나 문제도 고려해야한다. (실제로 MPI로 프로그래밍을 하면..-_-.. 각 노드별로 실행될 프.. 2009. 6. 17.
MPI실행시에 노드별로 프로세스 수 할당하기. 아마 독자적으로 클러스터를 구축하신분들이 있으시다면...... mpi를 사용하실 것입니다. 여기에 제가 만약 노드별로 프로세스수를 할당하고싶으신적없으신지? 특히 OpenMP + MPI하이브리드를 하려면 노드당 프로세서 수를 지정해주어야합니다. 쿼드코어로 구성된 4개의 노드에서 실행을 할때, 노드1에 모든 job이 다 올라가면 매우 곤란한 상황이니까요. 그러한 경우에 사용할 수 있는 방법입니다. 실행시에 옵션을 줄수가 있네요 ㅡㅡㅋ mpirun -np 프로세서 수 -perhost 노드당 프로세서의 수 command 이렇게 실행하여야하는군요.... 음.... 왜 이걸 몰랐을까 - -; 2008. 11. 10.
SPEC MPI2007에서 소스코드 수정하기.. 그냥 무턱대고 수정하면.. 빌드시에.. 에러가난다... 에러메시지도 무서운 에러가난다... "파일내용이 원래랑 뭔가 다른데? 미치겠어~"라고.. -_-; 그래서 해결방안을 찾던차에.. SPEC에 메일을보내서 회신이왔다... 소스 디렉토리로가서.. 소스디렉토리$ mkdir src.alt 소스디렉토리$ cd src.alt 소스디렉토리/src.alt$ mkdir dir_name(내마음대로지정해주어도 됨) 소스디렉토리/src.alt$ cd dir_name 소스디렉토리/src.alt/dir_name$ cp ../../sourcename . 소스디렉토리/src.alt/dir_name$touch README 이제 dir_name안의 소스파일을 수정하면 된다 ㅎㅎㅎㅎ 아 그리고 수정되었다는 사실을 알게하기위해서 top.. 2008. 11. 3.
아.. OpenMP 다까먹었다.. 빨리 라이브러리 다시 찾아가면서 해야겠다... 현재 8 rank의 MPI와 8Thread의 Omp를 하니까 시간이 200초정도 단축되었다. 흠... 원래시간이 4400~4500sec.이었으니까 4200이면 200초정도라고 봐도될듯.. 성능향상률은 그닥 높지않네... 하지만 아직 완전히 병렬화를 시킨게 아니니까... 앞으로 더 해보면 무언가 달라지겠지. 열심히해보자 #pragma omp parallel for schedule (static, 8) ㅋㅋ 2008. 9. 21.
728x90