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
번호 분류 제목 글쓴이 날짜 조회 수
79995 장터 [삽니다]어딘가에 잠들어있을 mbook 시리즈를 구... 2 title: 몰?루모래맛사탕 2023.12.08 589
79994 잡담 12/16~ 경원선 동두천역-연천역 구간 열차운행 시... 6 title: 컴맹임시닉네임 2023.12.07 757
79993 잡담 HDMI 포트를 1개만 넣어주는 그래픽카드... 29 title: AINormie 2023.12.07 1149
79992 잡담 쏘니 매물은 많은데... 4 포도맛계란 2023.12.07 538
79991 잡담 후.. 18테라 이지스토어 200불짜리 두개 질렀는데 5 하늘군군 2023.12.07 726
79990 잡담 내일은 매입콘센트를 분해하게 생겼군요 17 file 포도맛계란 2023.12.07 577
79989 잡담 한번도 가본적 없는 킨텍스를 갈 것 같아요. 6 file 스이드림 2023.12.07 372
79988 잡담 대부분 채널에서 뭔가 보도를 누락하길래... 6 file 360Ghz 2023.12.07 581
79987 잡담 첫 커피를 잘못 선택했습니다 6 한우 2023.12.07 410
79986 잡담 드디어(?) 파파이스 치밥 먹었습니다 6 file 쿠민 2023.12.07 425
79985 잡담 억울해요 6 공탱이 2023.12.07 307
79984 퍼온글 국립전파연구원, (주)앱코 디지털 도어락(ABKO_Do... 9 file title: 컴맹임시닉네임 2023.12.07 651
79983 잡담 예전에 11월에 모기가 돌아다닌다고 글을 쓴적이 ... 7 file 평범한드라이버 2023.12.07 393
79982 잡담 매콤하면서 감칠맛 나는 잡채밥 14 file title: 부장님유니 2023.12.07 432
79981 잡담 내일 낮기온 18도래요 4 file title: AI아즈텍 2023.12.07 569
79980 잡담 친구를 꼬셔서 대리지름을 했는데 3 title: 가난한까마귀 2023.12.07 597
79979 퍼온글 미국의 어느 음원차트 근황 3 file 고자되기 2023.12.07 894
79978 잡담 교과서에 실려있던 수필의 말도 안 되는 가스라이팅 18 file title: 부장님유니 2023.12.07 1177
79977 잡담 슈뢰딩거의 통관이 '관찰' 되었습니다 8 file 포도맛계란 2023.12.07 688
79976 퍼온글 2023년 12월 소래포구 근황 10 file title: 컴맹임시닉네임 2023.12.07 754
79975 퍼온글 청주시, 시내버스 노선 개편 및 운행시간표 변경 2 file title: 컴맹임시닉네임 2023.12.07 662
79974 퍼온글 트위치코리아 매출20억 20 file 고자되기 2023.12.07 1963
79973 잡담 aiCarBox (카링킷)을 바꿧습니다. 7 file 스파르타 2023.12.07 439
79972 잡담 HP가 제어판에 독을풀었다!!!! 6 file title: 명사수AZUSA 2023.12.07 728
79971 잡담 요즘 K-타코야끼 근황 7 file title: 부장님유니 2023.12.07 797
79970 잡담 김유신이 견휜 상대로 쓴 비장의무기 9 file title: 명사수AZUSA 2023.12.07 637
79969 잡담 구글 챗 지피티인 제미니가 나왔네요 5 911 2023.12.07 552
79968 잡담 기대하고 있는 TV 드라마 티저 트레일러 9 title: 폭8책읽는달팽 2023.12.07 468
79967 퍼온글 ChatGPT로 AI 여자친구 만들기 11 title: 컴맹임시닉네임 2023.12.06 887
79966 퍼온글 AliExpress, 서울 기자간담회 개최 15 title: 컴맹임시닉네임 2023.12.06 882
목록
Board Pagination Prev 1 ... 119 120 121 122 123 124 125 126 127 128 ... 2790 Next
/ 2790

최근 코멘트 30개

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

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


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

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소