IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  Multicore acceleration  >

자그마한 브로드밴드 엔진으로 할 수 있는 작업: PS3에서 직접 설치가 가능한 최신 SDK 검토하기

PS3에 딱 맞는 SDK를 위해 만들어진 FC7 커널

developerWorks
문서 옵션

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.

토론

영어원문

영어원문


제안 및 의견
피드백

난이도 : 초급

Peter Seebach, 자유기고가, Plethora.net

옮긴이: 박재호 이해영 dwkorea@kr.ibm.com

2008 년 8 월 26 일

멀티 코어 가속 3.0을 위한 기차 여행에 참여해 개발자 관점에서 달라진 사항과 함께 PS3에 직접 설치, FC7과 RHEL 5.1 지원, 강화된 컴파일러, 포트란과 에이다 지원, BLAS, ALF, DaCS를 포함한 SDK 활용법을 살펴봅시다.

소개

IBM 셀 브로드밴드 엔진(IBM Cell Broadband Engine™, Cell/B.E.) SDK가 다시 한번 갱신되었다. 이 기사는 IBM 외부 사람 관점에서 3.0 버전에 들어있는 새롭고 흥미로운 기능을 소개한다. 버전 3.0은 2007년 10월 19일에 나왔으며, 직전 2.1 버전을 완벽하게 대체한다(실제로 버전 2.1을 사용하지 않는다면 신경 쓸 필요가 없다).

직접 설치하기

3.0 판올림은 몇 가지 주요 변경 사항을 보여준다. 아마도 대다수 개발자에게 가장 눈에 들어오는 사항은 설치 프로그램 변경이나 속임수 없이 리눅스(Linux®)를 돌리는 PS3에 직접 설치가 가능해졌다는 사실이다. 2.1이나 초기 버전은 PS3가 사용하는 하이퍼바이저 환경 대신 실제 하드웨어에서 돌아가는 커널을 설치하지 않고서는 셀/B.E. 기반 시스템 설치를 거부했다.

편집자로부터: 다양한 관점
셀/B.E.는 블레이드 서버에서 하이브리드 슈퍼컴퓨터와 게임 콘솔에 이르기까지 다양한 이질적인 응용 분야에 고개를 내미는 듯이 보인다. IBM 복도를 걷고 있다면, 좀 더 비즈니스에 밀접한 용도와 시스템에 적용하기 위해 셀/B.E. 기술에 초점을 맞추고 있는 수 많은 엔지니어와 디자이너를 만날 수 있다. 여기서 빠진 사람은 (내 친구이자 이 기사 필자인 Peter와 같이) PS3로 장난치기를 원하는 개발자다. 셀/B.E. SDK와 PS3를 대상으로 응용 개발, 이식, 기타 관심이 있는 분야에 노력을 투자한다면 셀/B.E. 프로세서 성장과 발전 방향을 이끄는 중요한 원동력이 될 것이다. 공유를 원하는 경험이나 좋은 생각이 있다면 편집자에게 전자편지를 부탁한다. -- 편집자
물론 셀/B.E. 기반 시스템을 전혀 갖추고 있지 않더라도, 여전히 추가 CD에 포함된 시스템 시뮬레이터 하에서 돌릴 수도 있다. 그럼에도 불구하고 PS3에서 시스템 시뮬레이터를 돌리는 방식을 권장하지 않는다. 성능이 다소 떨어지기 때문이다.

SDK 설치와 동작

페도라 7과 RHEL 5.1 시스템에서 SDK를 지원한다. 다른 배포판에도 설치가 가능할 수도 있겠지만, IBM에서는 다른 배포판을 지원하지 않는다. 제품 CD는 SDK 설치 프로그램을 설치하는 작은 시작 RPM이 따라온다. SDK 설치 프로그램은 나머지 SDK를 설치하는 데 쓰인다. SDK에는 SDK 핵심 기능을 제공하는 개발자 패키지와 실험 코드, 추가 구성 요소, 시스템 시뮬레이터와 같은 부가 기능을 제공하는 추가 패키지를 포함하는 CD가 두 장 들어있다.

SDK 설치 프로그램은 SDK CD에 들어 있는 파일과 IBM 바르셀로나 슈퍼컴퓨팅 센터에서 내려받은 파일을 사용한다. ISO 이미지를 이미 내려받았다면, SDK는 이 이미지를 마운트해 여기서 대다수 파일을 복사하지만, 여전히 바르셀로나 사이트에서 몇몇 파일(대략 130MB)를 내려받을 필요가 있다.

버전이 올라감에 따라, SDK 설치 프로그램은 점점 더 사용하기 쉬워지는 추세다. 손으로 조율하던 초기 버전과 비교하면, 지금은 상당히 세련되었다. 설치에 시간이 좀 걸리는데, yum 설치 프로그램이 동작하는 도중에 엄청난 메모리를 잡아 먹기 때문이다. SDK 설치 프로그램은 SDK 구성 요소를 보관할 특수 전용 저장소를 생성한 다음에 yum을 사용한다. 직접 설치하는 방법과 비교해서 이런 방법이 제공하는 개선점이 무엇인지는 분명하지 않지만, 어쨌거나 확실히 동작한다.

설치 프로그램은 추가 구성 요소를 자동으로 설치하지 않는다. 추가 구성 요소는 다소 실험적이라고 간주되므로, 설치를 원한다면 직접 수행해야 한다. 먼저 다른 패키지를 설치할 필요가 있다. 예를 들어, 페도라 7 설치는 필요한 tcl/tk 버전이 빠져 있는 듯이 보이므로, 이런 문제를 해결하려면 yum install tclyum install tk를 사용해 tcl/tk를 설치해야 한다. 몇몇 추가 RPM은 기본으로 설치되지 않는 RPM에 의존한다. 몇 가지 추가 구성 요소 설치에 앞서 trace, pdt, alf-trace, dacs-trace 패키지를 설치해야 하며, 상응하는 개발 패키지 역시 설치해야 한다.




위로


그래서 뭐가 바뀌었나?

SDK에 변경, 갱신, 향상된 사항이 늘어났다. 물론 여전히 알파 단계이긴 하지만 XL C 컴파일러가 0.8.2에서 0.9.0으로 버전이 올라갔다. GNU 컴파일러 역시 자동 벡터화에 상당한 개선을 가져오는 판올림이 있었다. SPE를 위한 몇 가지 알려진 오류(참고자료 참조) 중에서 수정된 내역도 있다. ALF(Accelerator Library Framework) 역시 갱신되었다. 포트란(PPE와 SPE 양쪽 모두)이나 에이다(PPE만), 선형 대수 라이브러리와 같은 새롭게 추가된 몇 가지 기능도 있다.

하지만 아마도 가장 큰 변화는 이제 SDK 일부로 설치되는 문서 갱신이다. (문서가 가장 큰 변화라고 생각하는 필자를 믿어라). 문서는 언제나 상당히 뛰어났지만, 문서를 보려면 찾아 다녀야 했다. 이제 모든 문서는 /opt/cell, 정확하게 말하자면 /opt/cell/sdk/docs에 설치된다. SDK와 함께 제공되는 문서는 이 기사가 다루는 범위를 벗어나 다양한 내용을 다루므로, 해당 문서를 읽어보기 바란다.

SDK 판올림에서 되풀이해서 일어나는 주제는 표준화와 명세를 향한 움직임이다. 초기 SDK는 실험적인 프로토콜을 제공했다. 원본 libspe가 이제 구시대 유물이 되어 버린 이유는 (창의성을 발휘해) 새롭고 개선된 libspe2를 개발하면서 드러난 결함을 내포하고 있기 때문이다. SIMD 수학 라이브러리는 세련되게 다듬어지고 개선되고 디버깅되었다. 예를 들어, 이제 SIMD 수학 명세가 생겼으며, 라이브러리는 이를 완벽하게 구현한다. 이는 엄청난 진전이며, 직전 버전에 나타나는 몇 가지 제약을 해결하기 위한 연재 기사에 실린 참고 사항을 살펴보면 특히 잘 드러난다.

페도라 SDK 버전은 셀/B.E. 하드웨어에서 동작하도록 특별히 빌드한 판올림된 2.6.23 커널을 포함한다. 페도라 7이 하드웨어에서 직접 돌아가는데, 이런 환경을 대상으로 빌드된 커널 크기는 아주 작다. 예를 들어, initrd 파일은 표준 페도라 크기의 대략 40%며, 커널을 위한 환경 설정 파일 크기는 훨씬 더 작다. 남은 공간으로 단지 몇 메가바이트도 아까워 쩔쩔매는 상황이므로 일반적인 PS3 개발 플랫폼에서 이런 절약은 상당히 중요하다.




위로


SDK 예제 코드 탐험

실제 개발 작업을 염두에 두고 있다면, SDK에서 가장 중요한 부분은 예제 코드다. 문서에는 한계가 있다. 문서를 읽느라 하루를 보냈다면 동작하는 코드 읽기가 시스템 사용법을 배우는 최선의 방법이다. 매뉴얼 페이지 추가도 상당한 도움을 준다. 예를 들어, man spe_context_create_affinity는 친화도로 문맥을 생성하는 방법에 대해 알아야 할 필요가 있는 지식이 무엇인지 보여준다. (참고: 매뉴얼 페이지가 말해주는 중요한 정보는 PS3 목표 하드웨어에서 이렇게 하지 못한다는 사실이다).

예제 코드는 tar 파일 네 개로 만들어져 있다. tar를 /opt/cell/sdk/src 디렉터리에 풀어낸 다음에 make 명령을 내려 모든 예제 코드를 빌드한다.

예제 프로그램은 다섯 가지 범주로 나뉜다.

벤치마크
간단한 벤치마크 프로그램이지만 아주 멋지다.

데모
특정 기능을 시연하는 데모 프로그램이다.

예제
예제 프로그램은 아주 간단한 프로그램으로, 각각은 작업 하나를 수행하기 위한 특정 코딩 기법이나 용법을 강조한다. 예를 들어, examples/cache 디렉터리를 보면 SPE를 위한 소프트웨어 관리 캐시 구현의 장점을 살리는 방법을 보여주는 프로그램 쌍이 들어있다.

튜토리얼
튜토리얼 코드는 경험 수준에 따라 가장 유용하거나 가장 유용하지 않거나 양극단을 달린다. 어디서 시작해야 할지 모르겠다면, 튜토리얼부터 챙겨보는 편이 바람직하며, 오일러 튜토리얼은 거의 모든 사항을 조금씩 다루는 아주 간단한 프로그램 개발 과정을 순차적으로 보여준다. 특히 흥미로운 부분은 반복 과정을 거듭하며 파일이 바뀌지 않고 남아 있을 때, 심볼릭 링크를 통해 직전 버전에 연결되므로 뭐가 변경되었는지를 추측하느라 보내는 시간을 상당히 절약해준다.

라이브러리 코드
라이브러리 코드는 한걸음 더 나아가 공통 작업을 수행하는 과정에서 우아한 (최소한 효율적인) 방식으로 요리책에 실린 조리법과 재사용을 위한 코드 조각을 제공한다. 자료 배열에서 합성곱이나 FFT(Fast Fourier Transform)와 같은 문제 때문에 씨름했다면, 이런 코드를 다른 사람이 이미 어떻게 작성했는지를 살펴보면서 행복을 느낄 것이다. 이런 코드 대다수는 PPE와 SPE에서 모두 돌아간다. 예를 들어, Listing 1은 두 벡터의 구성 요소를 비교해 최대값을 찾아내는 아주 간단한 함수를 보여준다.

Listing 1. 최대값 찾기
                
static __inline vector signed int
_max_int_v(vector signed int in1, vector signed int in2)
{
#ifdef __SPU__
  vector unsigned int cmp;

  cmp  = spu_cmpgt(in1, in2);
  return (spu_sel(in2, in1, cmp));
#else
  return (vec_max(in1, in2));
#endif
}

흥미로운 변경 사항 하나는 PPE와 SPE 양쪽에서 벡터 연산을 처리하기 위해 PPE의 VMX 벡터 유닛을 활용하도록 개선한 부분이다. PPE를 스칼라 프로세서로 착각하기 쉽지만, PPE는 훌륭한 벡터 하드웨어이기도 하다.




위로


도구와 라이브러리

SDK는 도구와 지원 기능을 포함하는 광범위한 기술 요소를 개발해왔다. 새로운 SDK는 성능 조율을 위한 상당히 많은 지원을 제공한다. PDT(Performance Debugging Tool)는 추적 지원과 추적 결과 시각화를 제공한다. DaCS(Data Communication and Synchronization)는 PPE와 SPE 사이에 프로세스 관리, 자료 이동, 동기화를 지원하는 함수를 제공한다.

SDK는 과거에 모든 사람이 스스로 개발해야 했던 항목을 포함하기 시작했으며, 사람들이 지속적으로 요구한 사항을 추가했다. 근사한 아키텍처를 위한 코드 성능 조율은 항상 어려운 작업이지만, 몇 가지 작업은 상당히 일관성이 있다. 제공된 선형 대수 라이브러리가 유용한 이유는 선형 대수를 필요로 하는 프로그램 사이에 상당한 공통점이 있기 때문이다. 선형 대수를 위해 조율과 디버깅이 끝난 라이브러리는 상당한 개발 비용을 줄여준다. 비슷하게 시뮬레이션급 난수 생성기를 위한 추가 요소도 있다. 진짜로 나쁜 난수 생성기를 한번이라도 작성해보지 않은 프로그래머를 만나본 적이 없다. SDK에 이런 난수 생성기를 제공하는 생각은 정말로 멋지다.




위로


결론과 다음 연재 소개

2.x 셀/B.E. SDK 버전은 정말 실험적인 단계를 벗어나 실용적이며 다듬어진 시스템으로 도약했지만 여전히 덜 다듬어지고 완료되지 않은 부분이 있었다. 3.x SDK가 developerWorks에서 배포되면서 알파 제품 티를 벗어나 개발 시스템으로 이동함으로써 상용 제품에서 일반적으로 기대하는 품질 이상을 제공한다. 특히 추가 CD를 살펴보면 여전히 실험적인 구석이 있지만, 핵심 SDK는 테스트, 검증, 심지어 디버깅 작업까지 상당히 진행된 상태다. API는 계속 변하는 듯이 보이기에 셀/B.E. 개발로 뛰어들기를 주저했다면, 지금은 SDK가 훨씬 안정화된 듯이 보인다.

기본 SDK에서 IDL을 제거해서 예전에 만든 IDL 기반 프랙탈 생성기를 고쳐 좀 더 실전에 가까운 프로토콜을 사용하도록 만들어야 할지도 모른다. 이는 재미있는 프로젝트처럼 보이며, 성능에 영향을 미치는 부분이 무엇인지를 살펴보는 작업은 흥미로울 것이다.

이 연재물 다음 기사에서는 좀 더 자세히 DaCS 라이브러리를 소개할 예정이다.



참고자료

교육

제품 및 기술 얻기

토론


필자소개

Peter Seebach 사진

Peter Seebach는 대다수 사람들이 겉포장이 화려한 선물에 반응하듯이 새로운 API에 반응한다. 즉 뭐가 들어있는지 흔들어 본다. Seebach는 추억을 기리려고 포장지와 낡은 문서를 똑같이 보관한다.




기사에 대한 평가


보다 나은 서비스를 제공하기 위함이오니 잠시 짬을 내어 이 양식을 제출하여 주십시오.



 


 


 


이 문서 북마킹 하기

mar.gar.in mar.gar.in naver naver eolin eolin del.icio.us del.icio.us





위로


IBM and POWER are trademarks of IBM Corporation in the United States, other countries, or both. Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. Other company, product, or service names may be trademarks or service marks of others. 기타 회사, 제품, 및 서비스명은 다른 상표나 서비스 마크일 수 있습니다.

developerWorks 콘텐트를 다른 사이트에 전재하기:
developerWorks 콘텐트에 대한 저작권은 IBM에 있습니다. IBM의 서면 허가나 원본 저자의 허락이 없이는 전재를 금합니다. 저희 콘텐트를 전재하시려면 IBM developerWorks 담당자 에게 문의하십시오.
    IBM 소개 개인정보 보호정책 문의