Skip to content

기글하드웨어기글하드웨어

커뮤니티 게시판 : 아주 기본적인 네티켓만 지킨다면 자유롭게 쓸 수 있는 커뮤니티 게시판입니다. 포럼에서 다루는 주제는 각각의 포럼 게시판을 우선 이용해 주시고, 민감한 소재는 비공개 게시판이나 수상한 게시판에, 홍보는 홍보/외부 사용기 게시판에 써 주세요. 질문은 포럼 게시판의 질문/토론 카테고리를 사용해 주세요.

잡담
2018.06.04 11:22

얼어죽을 병렬연산

profile
LeonHeadt https://gigglehd.com/gg/2980974
다음 생엔 부잣집 고양이로 태어나고 싶다.
조회 수 1500 댓글 20

 월요일마다 평생 눈 안뜨고 싶은 레온입니다. 오늘은 업무 얘기를 좀 하려고 합니다.

 

 저는 에기평에서 내 준 과제를 하나 맡고 있습니다. 이 과제는 제가 입사하기 전 부터 계속 진행되었던 과제라서 숟가락만 얹고 오우 개꿀ㅋ 했으면 얼마나 좋았을까 싶지만 역시 인생은 날먹이 아닌지라 몇 가지 트러블이 존재합니다.

 

 

 

1. 학교와 같이 하는 과제라 공대생들의 영원한 친구인 MATLAB으로 코드를 짜놨습니다. FPGA는 Xilinx를 사용하고 있고 Xilinx가 ISE라는 툴을 사용했을 땐 MATLAB(Simulink)을 이용한 VHDL CodeGen 툴을 만들어 놨는데 이 놈들이 ISE에서 Vivado로 아예 툴을 새로 만들더니 이 CodeGen 툴을 짜잔! 하고 없앴습니다.

 덕분에 CodeGen을 사용하려면 제한된 환경에서 제한된 ISE 버전을 통해서 만들어야 합니다.

 

자일링스 망했으면 좋겠네요.

 

 

2. 여기에 한 술 더 떠 MATLAB으로 프론트 엔드마저 만들어 놨습니다. 덕분에 GUI도 MATLAB으로 짜야되는 상황.

물론 MATLAB 자체에서도 Deploytool을 통해 객체 라이브러리를 비주얼 스튜디오로 이식할 수 있지만...

 

그 짓을 언제 다하지? 소스는 누가 새로 짜고 소는 누가 키우지?

 

물론 MATLAB에서도 GUI를 만들 수 있게 GUIDE 툴을 따로 제공은 해주지만 버린 자식 취급인지 추가할 수 있는 콜백 GUI 구성도 몇 개 없습니다. 한 10개 되는 것 같은데 꽤 많은 선택지를 주는 C#이나 Measurement Studio와 비교해 보면 매우 초라하고 볼 품 없죠. 쓰레깁니다. 그냥.

 

 

3. 저 혼자 짭니다. 설명 생략.

 

 

4. 여기가 본론인데, 프로그램이 느립니다. 최적화를 해도 느립니다. MATLAB한테 뭘 바랬겠냐만은...

말하기 전에 구조적인 부분을 먼저 간략하게 설명하면 FPGA에는 DAQ가 달려있어 실시간으로 데이터를 받습니다. 한 번에 1024 byte로 빠르면 0.2초씩 받습니다. 문제는 이걸 실시간으로 표현해줘야 하는데 당연히 느릴 수 밖에....

 

그래서 뭔가 효율적인 방법이 없을까 하다가...

 

parfeval.JPG

 

parfor.JPG

 

이 두 함수를 발견하게 됩니다.

Parallel Pool을 통한 비동기적 함수 호출을 가능케 만드는 함수와 병렬 연산 루프입니다.

 

쓰는 방법은 굉장히 간단하지만 귀찮은 조건이 걸려있어요.

 

1) Parallel Pool을 통한 병렬 연산은 전역 변수를 이용할 수 없다.

2) 연산만 병렬이지 다른 함수들을 병렬로 사용할 수 있다는 얘기는 아니다.

3) 핸들은 Parallel Pool로 넘길 수 있고 실행도 되지만 결과에 반영되지 않는다.

4) 디버깅 불가 ( 오류를 객체를 열어서 알아서 찾아야함 )

 

1번은 병렬 연산의 특성상 그럴 수 있다고 넘어갈 수 있는데 2,3번은 무슨 말이냐면...

 

MATLAB에서 자주 사용하는 plot, imshow같은 Image Processing 관련 함수들은 병렬 호출이 안됩니다.

(다른 특정 함수도 아마 그럴 가능성이 높음)

GUI로부터 만들어진 핸들을 Parallel Pool로 넘겨주면 얘들이 이게 핸들인지 인식을 못합니다.

 

결론 : 안됨

:((((((((((((((((((((((((((((((((((((((((((((((((((((((((((

 

이럴거면 왜 만들었나.

솔직히 병렬 연산까진 기대 안하더라도 비동기적 함수 호출은 필요했거든요. MATLAB 함수들이 꽤 느린 편이라...

 

그래... 희소/비희소 행렬 연산, 2-D 컨벌루전, 영상 처리등을 부분적이라도 병렬 연산하면 좀 나아지지 않을까?

그래서 결국 병렬 연산이 가능할 만한 구간을 병렬 연산으로 만들어서 적용을 하고 총 연산 시간을 실험한 결과

 

기존 : 1분 40초

적용 후  : 10분 40초

 

 

 

ㅎㅎ.....

 

 

* 추가

MATLAB도 지들 GUI 툴이 X신같다는걸 알았는지 JAVA Swing 라이브러리가 존재하긴 합니다.

근데 이 라이브러리는 차후 릴리즈 버전에서 폐기된다는 말이 있고, 현재 GUI와 충돌이 일어나는 부분이 간혹 있습니다.

게다가 라이브러리만 있지 딱히 툴이 있는 건 아니라서 정말 쓸려면 코드를 일일히 다 써줘야 합니다. 그리고 라이브러리에 관련된 레퍼런스도 그렇게 많지는 않네요.



  • profile
    title: 가난한카토메구미      카토릭교 신자 입니다.! 카토는 언제나 진리 입니다. 2018.06.04 11:24
    시간이...ㅠ
  • profile
    LeonHeadt      다음 생엔 부잣집 고양이로 태어나고 싶다. 2018.06.04 11:29
    전 지금 하루를 날려먹어서 매우 화납니다 ;((((((((((((((
  • profile
    아란제비아 2018.06.04 11:49
    어려운 용어들이 한가득...!
  • profile
    LeonHeadt      다음 생엔 부잣집 고양이로 태어나고 싶다. 2018.06.04 12:39
    공대생은 나중에 배우게 됩니다.
    그것은 숙명 그것은 무스비
  • profile
    rnlcksk      감사합니다! 2018.06.04 11:51
    끔찍하네요.
  • profile
    LeonHeadt      다음 생엔 부잣집 고양이로 태어나고 싶다. 2018.06.04 12:41
    이 얼마나 끔찍하고 무서운 삽질입니까
  • ?
    쿠쿠리123 2018.06.04 12:17
    호출되는 함수 개별적으로 사용되는 시간을 측정해 보신 다음, 가장 시간이 많이 들어가는 함수가
    병렬호출 불가 함수라면, 직접 구현하여 병렬처리를 하는게 어떨런지 합니다,.

    컨볼루젼이랑 개별적으로 돌릴 수 있을 만한 영상처리 알고리즘이 있으면,
    따로 빼서 병렬처리 가능하면 좋을 것 같네요.

    덩치가 많이 큰 행렬이 있으면, 열이나 행을 블록단위로 나눠서 병렬처리한 후 나중에 합치는 방법도 괜찮습니다.
  • profile
    LeonHeadt      다음 생엔 부잣집 고양이로 태어나고 싶다. 2018.06.04 12:27
    컨벌루전이라고 했지만 사실 쓰는 함수는 Xcorr2 (2D Cross Corelation)이긴 합니다. 원리는 비슷하니까... 뭐..

    그래서 먼저 가장 많이 시간이 드는 연산이나 함수들을 스톱워치로 알아내고 하나씩 거쳐서 테스트 해보긴 했었습니다. 결과적으론 연산양만 따지고 보면 예상대로 고차원 행렬에 대한 연산이 가장 효과가 크긴 했는데 그렇다고 그닥 재미는 많이 보진 못했습니다.

    아무래도 가장 문제가 되는 건 기존 MATLAB에서 제공되는 함수를 병렬화 시킬 수 없다는 거죠. 이게 가장 느리고 리소스도 많이 잡아먹더라구요. 딱히 병렬화를 못시킬건 없어보이긴 한데 왜 안되는지 모르겠습니다. MATLAB Central에서도 '응 못해ㅎ' 라고 말하는 사람이 많더라구요

    https://kr.mathworks.com/matlabcentral/answers/260118-parallel-processing-to-update-plot
  • ?
    dom607 2018.06.04 12:20
    ISE에서 Vivado로 넘어가던 과도기에 VHDL 코딩 업무와는 완전히 손절한게 참 다행이라고 생각하고 있습니다. Matlab 병렬연산은 어떤 경우 오히려 더 느려지는 현상 때문에 너무 빡친 나머지 병렬 처리해야 되는 부분을 CUDA kernel로 구현한 뒤 불러와서 사용했었던 기억이 나네요.
  • profile
    LeonHeadt      다음 생엔 부잣집 고양이로 태어나고 싶다. 2018.06.04 12:38
    저도 VHDL이나 Verilog는 안 쓸 줄 알았는데 VHDL로 백엔드가 짜져있는 장비들이 많아서(특히 제 분야에 가는 장비 중에는 필드 특성상 노후화 된게 많아서) 조금씩 개선할려면 알아야 하더라구요. 근데 Verilog로 짜진건 없네요. Verilog가 더 편한데...

    저도 사실 CUDA 가속을 좀 생각해 봤었는데, 이만큼 재미도 못느끼는 마당에 그걸 해봤자 얼마나 빨라지겠나... 좀 회의적이 되서 그 쪽까진 손을 안댔습니다. :(
  • profile
    이유제 2018.06.04 12:41
    제가아는 다섯이상의 자칭 '젊은-'을 사용하지않으시는 FPGA 엔지니어분들은 자신이 배우고 한창쓰던 툴의 버전을 평생가져간다하더라구요...
    저도 아트웍의경우 알티움을배워야지배워야지하다가 구버전의 ORCAD - LAYOUT PLUS만 사용하게되네요..
  • profile
    LeonHeadt      다음 생엔 부잣집 고양이로 태어나고 싶다. 2018.06.04 13:08
    아직도 쿼터스나 모델심 가르치는 학교도 많죠.
    솔직히 자기 손에 익은 툴이 가장 좋죠. 호환성 문제만 안나온다면....
  • ?
    PHYloteer      🤔 2018.06.04 13:21
    알테라쪽이 학교대상으로 할인을 잘 해주는 편이고 비교적 라이센스비도 싸서 학부 실습용은 알테라를 많이 써요. 알테라 쓰면 쿼터스는 써야죠.. 모델심은 뭐 솔직히 시놉시스나 케이던스쪽 소프트웨어들보다 인기없긴 한데 싼 맛에 현업에서도 쓰긴 할 겁니다.
  • profile
    LeonHeadt      다음 생엔 부잣집 고양이로 태어나고 싶다. 2018.06.04 13:25
    저는 학부때 Vivado를 통해 Zynq쓰는 게 마지막이였네요. 그걸 보면 알테라보단 자일링스가 좀 더 매력적인지는 모르겠네요. 근데 정말 고성능을 쓸게 아니라면 뭘 쓰든 다 또이또이하긴 할테니... 싼 게 좋겠죠
  • ?
    PHYloteer      🤔 2018.06.04 12:57
    그래서 연산속도가 중요한 랩에서는 결국 걍 생짜 C나 포트란 쓰더라고요.. 저는 귀찮아서 그 짓은 못하지만요. 걍 어떻게든 파이썬가지고 기성 선형대수 라이브러리나 잘 갈궈보고 말지.. (매트랩에서는 병렬화를 안 해봐서 잘 모르겠습니다만 넘파이 기준으로는 뭐 잘 쓰레드 파주면 괜찮게 되더랩니다.)

    그런데 0.2초에 1024바이트씩 받는다는 건가요? 아무리 그래도 그렇게 많은 데이터 같지는 않은데요.. 로직이 많이 복잡한가 봐요?
  • profile
    LeonHeadt      다음 생엔 부잣집 고양이로 태어나고 싶다. 2018.06.04 13:16
    4채널의 16비트 ADC를 1024씩 받는데 강한 방사선이 몰리면 이거보다 더 빨라지는 경우도 있습니다. 게다가 한 번에 받는 데이터의 양이 채널당 5배 더 늘어나는 식르로 가변적일 수도 있습니다. 그리고 한 번에 받는 양이 적더라도 이게 10분, 20분 이렇게 모이면 무시할 수는 없는 크기니까요. 게다가 이 축적된 데이터를 가지고 후미에서 연산하는 종류도 다양합니다.

    그래서 어떻게든 속도를 좀 늘리려고 많이 생각해보고 적용도 해봤는데 역시 제 실력과 현실에 타협하게 되더라구요. :( 제 선에서 할 수 있는 가장 효과적인 방법은 애시당초 연산양과 함수 호출을 최대한 억제하면서도 실시간'처럼' 보이게 만드는 것이였습니다. 눈속임이죠 뭐...

    결국 높으신 분들은 정밀한 매커니즘이고 뭐고 알 바 아니고 눈에 보이는게 더 중요하다고 생각하니까요.
  • ?
    PHYloteer      🤔 2018.06.04 13:32
    오오 방사선 오오.. 신기한 일 하시네요 (...)

    뭐 결국 눈속임으로 넘기는 건 이 바닥에선 어쩔 수 없는 것 같습니다.
  • profile
    LeonHeadt      다음 생엔 부잣집 고양이로 태어나고 싶다. 2018.06.04 15:44
    잘 짜이고 정밀한 코드 따위는 장식인거죠. 높으신 분들은 그걸 잘 모르니까요. 쩝...
  • profile
    쮸쀼쮸쀼 2018.06.04 19:00
    이렇게 된 이상 Julia로 간다! 같은 걸 외쳐보시는 건…?
  • profile
    LeonHeadt      다음 생엔 부잣집 고양이로 태어나고 싶다. 2018.06.05 08:59
    사표각 오지게 박습니다!

작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 이벤트 [23일] 마이크로닉스 MA-600T 쿨러를 드립니다 2 newfile 낄낄 2024.04.17 85
68075 잡담 오늘 월식이래요 2 file title: 명사수M16 2022.11.08 248
68074 잡담 4080 12GB의 결말은 70ti였습니다. 14 file title: 컴맹픔스 2022.11.08 1060
68073 잡담 나중에 아이폰15 출시할때.tmp 15 슬렌네터 2022.11.08 977
68072 잡담 너무 답답한 10분간이었습니다..ㅠ.ㅠ.. 26 랩탑 2022.11.08 1057
68071 잡담 KFC 신상 골든 까르보버거 공개 11 file title: 부장님유니 2022.11.08 840
68070 퍼온글 요즘 슬슬 입소문 타는 고급 포도 17 file title: 부장님유니 2022.11.08 2720
68069 장터 갤럭시 1080ti 팔렸습니다 3 file 고자되기 2022.11.08 896
68068 퍼온글 AI의 주식은 고양이 (+ 공익 멕이는 이루다) 11 file 뚜찌`zXie 2022.11.08 3428
68067 잡담 결혼 선물로 아내가 사인본을 줬는데, 사인 상태... 8 file title: 폭8책읽는달팽 2022.11.08 1139
68066 잡담 일단은... 그녀석으로 넘어갑니다... 24 file 360ghz 2022.11.08 885
68065 잡담 곰곰히 생각해보니... 7 file 360ghz 2022.11.08 532
68064 잡담 버거킹 비프 불고기 버거 정말 아니네요... 10 file 낭만 2022.11.07 1176
68063 잡담 콤퓨따 득템! 7 title: 가난한카토메구미 2022.11.07 841
68062 잡담 ??? : 아 싱가폴 우정이니까요ㅋㅋ 20 file 포도맛계란 2022.11.07 1552
68061 잡담 다이소 맥세이프 충전기?? 1 file title: 야행성PARK_SU 2022.11.07 1262
68060 핫딜 [가격 정보] 레이저 크라켄 X 콘솔 2.99만 원 6 file title: 컴맹임시닉네임 2022.11.07 857
68059 잡담 간만의 sff와 의문의 벤치마크 치팅 8 file 멘탈소진 2022.11.07 714
68058 잡담 미국가서 좋은거/싫은거 19 낄낄 2022.11.07 902
68057 퍼온글 내일 저녁 개기월식이 있습니다. 1 title: 몰?루나루카 2022.11.07 463
68056 잡담 장터에 물건을 올리려니 뉴비 제한이 있었군요 13 file 호토리호이 2022.11.07 468
68055 잡담 이젠 AM4 보드를 구하기가 힘드네요. 35 file 벨드록 2022.11.07 1519
68054 퍼온글 국가공인부자 3 file 슈베아츠 2022.11.07 936
68053 퍼온글 중이 떠나니 절이 따라왔습니다.. 5 file title: 명사수포인 2022.11.07 1144
68052 잡담 다들 모니터 바꾸셨다니까 왠지 저도 바꾸고 싶어... 28 포도맛계란 2022.11.07 545
68051 잡담 오타쿠 상품은 가성비로 팔면 안되나봐요 4 file 고자되기 2022.11.07 857
68050 잡담 역시 미련하게 기다리는건 좋지않습니다 11 file 유에 2022.11.07 505
68049 잡담 어제 영등포역 탈선 사고 생각해보면 13 야메떼 2022.11.07 769
68048 핫딜 [지마켓] 레노버 씽크패드 E15. 44만원 9 낄낄 2022.11.07 1040
68047 잡담 레노보 아이디어패드 나눔 당첨자 발표 4 file TundraMC 2022.11.07 372
68046 잡담 새 아이스크림이 나왔군요. 6 file 동방의빛 2022.11.07 781
목록
Board Pagination Prev 1 ... 509 510 511 512 513 514 515 516 517 518 ... 2783 Next
/ 2783

더함
한미마이크로닉스
AMD
MSI 코리아

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소