2023년 9월 9일 토요일

[주간 세미나/심화학습 토의과제] Parallel Computing 과 Computing-in-Memory

[주간 세미나/심화학습 토의과제] Parallel Computing 과 Computing-in-Memory

[개요]

인공지능, 기계학습의 구현에 많은 컴퓨팅 자원이 소요 되는 만큼 고전적인 컴퓨터 구조의 약점이 드러나자 계산 전용 반도체 대한 관심이 증가하고 연구개발이 활발하다.

병렬 컴퓨팅에 대한 연구개발은 이미 한세대 전부터 상당한 관심속에 수행되었고 슈퍼 컴퓨터라는 결과를 낳아 활용되고 있다.

Parallel Computing
https://en.wikipedia.org/wiki/Parallel_computing

최근 그래픽 처리장치 GPU를 병렬 게산 장치로 활용하게 됨으로써 대규모 슈퍼 컴퓨터에서 개인형 슈퍼 컴퓨터라 할 수 있는 단계에 이르게 되었다.

CUDA

계산전용 고속 반도체의 개발은 알고리즘의 분석에서 시작한다. 알고리즘의 데이터 의존성을 분석하여 병렬성을 도출하고 이를 빠르게 수행하도록 재구조화 한다. 벡터화는 가장 널리 활용되는 구조라 할 것이다.

Vector Processor
https://en.wikipedia.org/wiki/Vector_processor

디지털 신호처리, 인공지능의 뉴럴 네트워크 알고리즘은 병렬 벡터 처리하기 적합한 계산 구조를 가지고 있다.

Parallel Processing (DSP Implementation)
https://en.wikipedia.org/wiki/Parallel_processing_(DSP_implementation)

[토의사항]

* 심화학습 참여 학습조는 아래 내용에 대하여 조별 토론 후 9월 15일까지 제출 할 것

1. Concurrency vs. Parallelism 의 차이에 대하여 논의해 보라. 아울러 고전적인 컴퓨터 구조에서 병렬처리가 어려웠던 원인을 논의해 보라.

2. Parallel Processing 과 Computing-in-Memory [관련글] 의 관계(또는 발전 과정)에 대해여 토론해 보자.

3. Matrix-Vector 곱셈 알고리즘의 병렬성을 찾아보라.

void dct_1d(dct_data_t src[DCT_SIZE], dct_data_t dst[DCT_SIZE])
{
  unsigned int k, n;
  int tmp;
  const dct_data_t dct_coeff_table[DCT_SIZE][DCT_SIZE] = {
    8192,  8192,  8192,  8192,  8192,  8192,  8192,  8192,
   11363,  9633,  6436,  2260, -2260, -6436, -9632,-11362,
   10703,  4433, -4433,-10703,-10703, -4433,  4433, 10703,
    9633, -2260,-11362, -6436,  6436, 11363,  2260, -9632,
    8192, -8192, -8192,  8192,  8192, -8191, -8191,  8192,
    6436,-11362,  2260,  9633, -9632, -2260, 11363, -6436,
    4433,-10703, 10703, -4433, -4433, 10703,-10703,  4433,
    2260, -6436,  9633,-11362, 11363, -9632,  6436, -2260

  };

  for (k = 0; k < DCT_SIZE; k++) {
    for(n = 0, tmp = 0; n < DCT_SIZE; n++) {
      int coeff = (int)dct_coeff_table[k][n];
      tmp += src[n] * coeff;
    }
    dst[k] = DESCALE(tmp, CONST_BITS);
  }
}

----------------------------------------------------------------------------------


댓글 없음:

댓글 쓰기