본문 바로가기

병렬처리

(6)
빅데이터... (큰문제는 여러개로 나눠서 처리하는 것이...빅데이터와 항상 같이 따라다닐 수 밖에 없는것이 분산처리, 병렬처리가 아닌가...) 어느 인터넷 기사에서, 내가 공감하고 받아들여야 할, 기존이 이미 왕성하게 활동하고 있는 전문가들의 말...뭐 전문가라고 항상 올바른 정의, 제안하는 미래상을 제시하는 것은 아니지만... 일단은 그들이 나보다 먼저 고민하고 적용해봤으니 내가 생각하는 것과 다르다고 배척할 것은 아닌것 같다.. "데이터는 비즈니스와 서비스의 새로운 '엔진오일'로서 굉장히 귀중한 리소스"라며 "그것을 통해 가치를 만들어낼 수 있느냐가 바로 그 기업이 빅데이터를 성공적으로 활용했느냐를 결정짓는 요소가 될 것" '빅데이터'에서 무엇보다 중요한 것은 빅 'data'가 아니라 빅 'Problem'이라고도 ..
Hadoop 완벽가이드 요즘 관심있게 보고 있는것들이 병렬처리와 MPI(Message Passing Interface) 그리고, 이 Hadoop인데.. 내가 이 책을 보는 이유는 내 연구에 실제 시스템구현에 도움을 줄 수 있기를 기대하기 때문이다.. 기본적인 아이디어를 간단히 말하면 이렇다. 사람의 두뇌가 의식(?)의 이동은 serial인데, 그 내부의 정보수집 및 처리는 parallel이다라는 것에서 시작한다. 다시 말하면, 우리가 동시에 여러가지 생각을 할 수 없다는 것인데, 한가지 생각이나 기억에서 다른 기억으로 전이되는 경우는 있어도 행복한 기억과 슬픈 기억을 동시에 떠올릴수 없는 것처럼, 생각의 흐름이 동시에 일어날 수는 없다. 이런 의식은 serial하게 진행하지만, 실제로 뇌속에 기억을 담당하는 물리적인 저장소는 ..
Intel C++ Compiler 11.1로 Histogram stretching 병렬처리 하기 Intel C++ 컴파일러 11.1을 설치하고, 정수형 Vector Class를 이용하여 이미지 처리를 병렬화 하는 프로그램을 구현해 봤습니다. 성능은 대략 Intel Core2Duo E8400 3.0G에서 약 5~6배의 성능 향상 효과를 보였습니다. 테스트를 위해 사용한 이미지는 lena.bmp 512 x 512 grayscale 이미지입니다. 원본 이미지 Histogram stretching 결과 이미지 일반적인 SISD(Single Instruction Single Data)형태로 Histogram stretching을 구현한것과 SIMD 형태로 구현한 코드의 core 부분의 차이를 보십시오. //영상의 histogram에서 최소값과 최대값을 구하는 함수 int imageProcess::getMin..
동경대 Ishikawa Komuro랩의 초스피드 로봇 Hand 데모 동영상을 보자.. 보는순간 입이 쩍 벌어진다.. 일본 동경대의 Ishikawa Komura Lab.(http://www.k2.t.u-tokyo.ac.jp/)에서 만든 데모이다. 손이 저렇게 빨리 동작하는 것보다 놀라운 것은 아주 짧은 시간에 많은 데이터를 처리하는 프로세싱 속도이다. 가능한 일인가... 가능하다. 이 연구실에서 연구하고 있는 분야중 하나가 병렬처리(Parallel Processing)이다. 이 연구실 홈페이지에 가면 설명이 잘 되어있다. 정리도 깔끔하게 정리되어 있다. 논문이나 동영상도 다운받아 볼 수 있다.(사실 다운가능한 논문이 거의 없다. 보려면 IEEE 사이트에 방문을...) 그런데..... 내가 IREX에 가서 본 실제 이 로봇은..... 분명.. 동경대의 Ishikawa ..
병렬 처리와 관련한 핵심 컨셉 병렬 처리 프로그래밍을 하려고 마음을 먹고, 또 멀티 코어 프로세서에 대해 관심을 가지기 시작하고, 프로그래밍을 하다 보면 많은 컨셉들이 있을것이다. 반드시 이해해야 할 중요하지만 매우 단순한 컨셉들을 살펴보겠다. 안녕하세요 제임스 랜더스 입니다. 오늘은 병렬 처리와 관련한 핵심 컨셉들을 알아보는 시간을 가지도록 하겠습니다. 병렬 처리 프로그래밍을 하려고 마음을 먹고, 또 멀티 코어 프로세서에 대해 관심을 가지기 시작하고, 그리고 실제로 프로그래밍을 하시다 보면 많이 들으시는 컨셉들이 있을 겁니다. 앞으로 제가 설명해 드릴 컨셉들은 반드시 이해해야 할 중요한 것들입니다. 실로 매우 단순한 컨셉들이기도 하죠. 한 번 살펴보겠습니다. 우선 가장 먼저 태스크/데이터 병렬 처리 입니다. 이들이 과연 무엇인지부터..
멀티코어 프로그래밍을 하기위해 어떻게 해야하는가.. 이제 더이상 싱글코어는 사용자에게 잊혀지고 있다. 듀얼코어는 기본, 쿼드코어.. 더 나아가서는 옥토코어가 곧 등장할거라고 한다. 그런데.. 실제로 사용해보니 싱글코어랑 듀얼코어랑 큰 차이를 못느끼겠다. 왜냐.. 바로 대부분의 프로그램이 싱글코어 기준의 프로그램이기 때문이다. 듀얼코어를 효과적으로 사용하려면 멀티코어 기준으로 프로그램이 되어있어야 하겠다. 즉, 코어가 여러개이기때문에 병렬처리를 해야 진정한 멀티코어에 맞는 프로그램이라 할 수 있겠다. 그럼, 멀티코어 프로그래밍을 하기위해서 어떻게 해야하는가.. 아래 동영상을 보자. 프로그램 내에 병렬처리를 가능케 하기 위해 어떻게 해야 하는가? 병렬 처리의 도입을 처음 고려할 때 가장 피해야 할 것은, 병렬 처리에 있어서 가장 낮은 단계의 프로그래밍 모델을..