Skip to content

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

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

잡담
2018.06.04 11:22

얼어죽을 병렬연산

profile
LeonHeadt https://gigglehd.com/gg/2980974
다음 생엔 부잣집 고양이로 태어나고 싶다.
조회 수 1506 댓글 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
번호 분류 제목 글쓴이 날짜 조회 수
공지 이벤트 [발표] 마이크로닉스 MA-600T 쿨러 선정 결과 8 new 낄낄 2024.04.24 135
69926 잡담 훌륭한 노래는 훌륭한 반찬이지 않겠어요? 3 file 슈베아츠 2023.01.04 351
69925 잡담 돌이킬 수 없는 선택.BUY 10 file T.Volt_45 2023.01.04 1606
69924 잡담 롱코너 드릴척 2 file title: 오타쿠아라 2023.01.04 326
69923 잡담 [잡담] SEM-DT35 (SDL3510) 5 file title: 컴맹임시닉네임 2023.01.04 482
69922 잡담 오, 발송되었군요? 4 file 포도맛계란 2023.01.04 338
69921 잡담 다이소도 싼게 비지떡.. 16 file 뚜찌`zXie 2023.01.04 969
69920 퍼온글 행복 스파이럴.youtube 4 file title: 부장님유니 2023.01.04 4163
69919 잡담 뉴스에서만 나오는 이야기인 줄 알았죠 5 file 공탱이 2023.01.04 774
69918 방구차 흑묘년, 나랑 잘 맞는 토끼는? 7 file 뚜찌`zXie 2023.01.04 431
69917 장터 판매완료) m1 맥북 에어 256gb/8gb 깡통 판매합니... 8 file 가지 2023.01.04 1343
69916 잡담 그러고 보니 올해가 흑묘년 이라고 하더군요 3 file title: 명사수포인 2023.01.04 441
69915 퍼온글 [볼거리] 한 장으로 알아보는 2023 공휴일 4 file title: 컴맹임시닉네임 2023.01.04 745
69914 잡담 그분이 오나보네요... 7 file 360Ghz 2023.01.04 691
69913 잡담 이제는 CPU 실리콘 면적만한 애가 799달러를 달고... 12 file 360Ghz 2023.01.04 1067
69912 잡담 다크 초콜렛에 납과 카드뮴이 있을 수 있습니다 15 낄낄 2023.01.04 1266
69911 잡담 논K 13세대 가격이 공개됐습니다. 12 file 360Ghz 2023.01.04 676
69910 잡담 짭플워치 울트라 신형 10 file 스파르타 2023.01.03 2097
69909 잡담 만년필을 질렀습니다. 10 file 유지니1203 2023.01.03 549
69908 잡담 계묘년 굿즈 샀습니다 4 file 쿤달리니 2023.01.03 308
69907 잡담 풀배열 빡시네요 9 file 유입입니다 2023.01.03 491
69906 잡담 날틀은 재미있네요. 7 file title: 삼성DontCut 2023.01.03 360
69905 잡담 TV 뭐 살까...고민이네요.. 11 file cowper 2023.01.03 399
69904 잡담 intel a770 이 와서 제 pc 에서 3dmark 를 한 결... 7 file 찬밥 2023.01.03 740
69903 잡담 캐스퍼는 마샘이네요. 14 file 뚜찌`zXie 2023.01.03 787
69902 잡담 인터넷 속도 순위 한국 34위 15 file title: 명사수가네샤 2023.01.03 762
69901 잡담 2022 치킨 결산 2 file 360ghz 2023.01.03 940
69900 잡담 파파이스 새우버거 후기 8 file title: 부장님유니 2023.01.03 1870
69899 퍼온글 개발자인 당신의 경쟁상대들 24 file 360ghz 2023.01.03 2497
69898 잡담 윈도우 10 이후로 윈도우 안정성은 저세상 갔어요 48 Meili 2023.01.03 1575
69897 잡담 감사합니다 Lave님 2 file 슬렌네터 2023.01.03 287
목록
Board Pagination Prev 1 ... 453 454 455 456 457 458 459 460 461 462 ... 2788 Next
/ 2788

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

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


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

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소