'Previous Contents/Programming'에 해당되는 글 3건

  1. 2009.12.04 CUDA Programming
  2. 2009.07.14 윈도우에서 Sleep 함수 사용
  3. 2009.05.09 Google MAP 을 ASP.NET 으로 제어하는 방법들
병렬처리는 결국 필수 불가결한 요소가 될 것임에는 분명하다. 확실히 단일 코어 발전 대비 성능 비율이 언젠가부터 매우 낮아진다는 것을 확인할 수 있다. CPU 를 듀얼 혹은 쿼드로 쓰는 것도 꽤 매리트가 있지만, 알고리즘을 연구하는 사람으로써 그런 한 두개의 병렬을 가지고 큰 효과를 보기에는 그 한계가 명확하다.

결국 요래저래 살펴보다가 또다시 GPU 쪽으로 눈이 돌아가게 되었는데, 그 당시에는 그렇게 어렵게만 느껴지던 CUDA 라는 것이 그렇게 어려운 녀석이 아니었다.

일련의 흐름에 따라서 프로그래밍을 하면 되는데,

1. 디바이스의 초기화
2. GPU 상의 메모리 할당 ( cudaMalloc )
3. CPU 상에서 GPU 상으로 처리할 내용을 복사 ( cudaMemcpy )
4. 커널을 수행함으로써 원하는 연산 처리 ( function <<< blocks, threads, sharedmem >>> ( parameters ) )
5. GPU 상에서 처리된 내용을 CPU 상으로 재 이동 ( cudaMemcpy )
6. 할당했었던 메모리를 모두 해제 ( cudaFree )
7. 디바이스 종료

이러한 큰 흐름을 순서로 움직이면 된다.
얼마나 쉬운가?

마치 포인터를 처음 볼때의 그런 느낌이었다. 어라? 별거 아니네?
그런데 이놈도 포인터랑 똑같은 놈이더라. 결국 잘 쓰려고 하다보니 메모리 구조에 대한 것을 다시 확인해야 했다. CUDA 의 처리는 Block 단위의 다수의 스레드를 어떻게 관리하느냐, 그리고 이들이 처리될 때의 Shared Memory 를 잘 관리해 줘야 올바른 결과를 얻을 수 있고, 획기적인 병렬처리의 성능을 만끽할 수 있다는 것. 게다가 망할 포인터보다도 하나 더 많은 요소가 있었으니, Block 과 Thread 의 숫자를 결정해주는 것이다.

하지만 확실한 건 포인터와 마찬가지로 이놈도 쉽게 생각하면 될 것 같은 기분이 든다.
다음 번엔 SGA 에 Evaluation 과정을 CUDA 를 이용해 처리한 소스나 올려봐야 겠다. 아직 Thread 동기화에 문제가 있는지, 자꾸 마지막 변수값만 들어가는 현상이 발생하던데 요고만 해결하고 나서 하나씩 또 정리해봐야겠다.

Posted by SHHyun

#include <windows.h>

#include <math.h>

   

void wait(double sec)

{

unsigned int msec;

   

assert(sec > 0);

msec = (unsigned int) floor(sec * 1e3);

assert(msec >= 10);

Sleep(msec);

}

 

리눅스용 프로그램을 윈도우로 변환하다가 가끔씩 애를 먹었던 부분인데 ( 나만 그런지 모르겠지만…;;

윈도우에서 Sleep 함수는 저런 형태로 사용할 수 있다.

 

리눅스에서는

 

#include <unistd.h>

#include <math.h>

   

void wait(double sec)

{

unsigned int msec;

   

assert(sec > 0);

msec = (unsigned int) floor(sec * 1e3);

assert(msec >= 10);

usleep(msec);

}

 

단지 usleep (리눅스) -> Sleep (윈도우) 로 변경했을 뿐…

서로 호환 안되는 부분은 역시 짜증난다.

 

별 것 아니지만 자꾸 까먹는 관계로 정리를 =ㅠ=

Posted by SHHyun
http://www.shabdar.org/google-maps-user-control-for-ASP-Net-part1.html

http://www.codeproject.com/KB/custom-controls/LatLaysFlat-Part1.aspx

개인적으로는 위의 것을 더 추천한다.
훨씬 사용하기가 간단하고 수월하다는 이유 하나만으로.
아래쪽의 것은 더 체계적으로 잘 되어 있는 듯 싶지만, 사실 좀 복잡하다.

음...
이걸 찾아서 사용하게 된 이유라면
C# 이 왠지 손에 익숙해지기 시작했고,
작업속도가 C#을 쓰는것과 JAVA 를 쓰는것 중에 C# 을 쓰는것이 월등히 빨라졌기 때문이랄까...
거기에 Dreamspark 덕분에 공짜로 IIS 를 맘놓고 사용하고 있으니...

혹시라도 구글맵을 ASP.NET 으로 제어하기를 원하신다면, 위의 링크들을 따라가시면 도움이 될듯.

P.S. 아차차... 이 내용이 중요한데 빠졌군요. 위의 것의 목적은 말그대로 구글맵 자체의 제어고, 아래것의 목적은 Display 에 해당 하는 부분들 입니다. 즉, 동적으로 입력을 받아 이를 제어하기 위해서는 천상 위의 것이 낫습죠;; 아래 것은 또 수정해야하니;;
Posted by SHHyun