--- TABLE PC 쓰레드 제안 ---
----- Xeon_Phi 프로세서를 예를들어서 ------
A_____ 방식
1 에서 천만까지 더하는 예를 들어서 openMP에서는 이 한가지 문제에 대해서 수십개 이상의 수많은 물리적 코어가
한꺼번에 달려들어 순식간에 계산하는 구조다
한가지 산술적인 문제에 대해서 병렬로 순식간에 처리하는 쓰레드 방식도 물론 중요하다
B____ 방식
그러나 프로그램이 좀 어렵더라도 여러문제에 대해서 수많은코어가 해결하는 것이 인공지능의 기본이 된다
그래서 TABLE PC 에서는 위의 두가지를 수행할수 있도록 Xeon_Phi 같은 것이 두개로 배치하면 좋겠다
하나는 Xeon_Phi 그냥 두어서 A_____ 에 관한 역활을 수행하고
나머지 Xeon_Phi는 B____에 관한 문제를 하나하나 해결하면서 하드웨어를 수정하는것이 좋을 것이다
나는 추측컨데 현재의 모든 슈퍼컴퓨터는 모두 A_____ 방식을 따르는 것 같다
가령 타이탄 슈퍼컴퓨터의 예를 들어서 우주선의 렌더링 모델을 아주빨리 처리하고
반도체의 설계를 아주 빨리 처리하는 방식일 것이다
이러한 한가지 작업을 빨리 처리하는 방식은 물건을 빨리 만들때 아주 긴요하게 써먹을 수 있지만
궁극적인 인공지능으로 가는 올바른 방법이 아니라고 본다
기본적으로 A_____ 기능을 가지고 있으면서 B____ 가 주인 행세를 하는것이 가장 이상적이다
그래서 B____ 방향으로 가기 위한 쓰레드 처리에 대해서 아래와 같이 제안을 하는 바이다
//---------------------------------------------------------------------------------------------
Xeon_Phi 하나에는 5십억개의 트랜지스터가 있다고 한다
GK110 하나에는 무려 7십억개가 넘는 트랜지스터가 있다고 한다
내가 옛날 어셈블리어로 프로그램을 만들때의 인텔8086은 3만개 , 1MB의 램이 한없이 많게
여기던 80286은 13만개의 트랜지스터가 들어 있다
이론적으로 하나의 칩안에 5만개의 80286을 집어 넣을수 있다
하나의 코어가 1GHz의 속도라고 가정하면 1초에 50조번의 연산을 할수 있다(50 T flops)
물론 이렇게 풀로 작동하면 열발생 문제와 메모리 병목 현상에 의해서 실제적으로 많이 떨어질수 있다
그러나 현재의 Xeon_Phi 가 60개의 코어를 갖는것은 너무나 적다고 본다
그래서 TABLE_PC 의 Xeon_Phi 2개중 나머지 Xeon_Phi 로 멀티쓰레드 프로그램을 만들고 실행시켜 가면서
문제를 발견하면서 Xeon_Phi 칩 안의 코어수를 점차로 늘려나가는것이 합당하다
물론 하나의 Xeon_Phi 칩안에 80286 같은 코어가 2만개 이상 들어가는 것은 무리라고 보지만
직접 만들지 않고 해보지 않는 이상 아무것도 단언할수 없다 ....
새로운 쓰레드 시스템에서는
가령 100개의 물리적 코어가 있을때 30개정도는 쓰레드 만들면 시스템에서 자동으로 알아서
쓰레드를 배분해주고
예 --> pthread_create(&pthread_ARR[Thr_Num7], NULL, &Thread_170, (void *)Thr_Num7);
나머지 70개는 개발자가 확실히 통제하는 방식으로
물리적 코어번호를 지정할수 있고 이 코어 번호로 오직 한개의 프로그램 루틴만을 실행할수있고
예 --> Core_Set_Run_Adr( int CoreNum , &Thread_170, (void *)Thr_Num7 );
예 --> Core_Run( int CoreNum );
이코어의 퍼포먼스 퍼센티지를 알수 있어야한다 그리고 실행을 KILL 할수 있어야한다
void Thread_170(void *Thr_Num7){//----
int Thr_Num71 = (int)Thr_Num7;
while( true ){//------
// Sleep_While_Zero( int &mem_flag17 );
// if( mem_flag17 == -443344 ){ break; }
Sleep_this_core();
//---- 그리기 ------ 시작 ------------------------
.....
.....
glColorPointer ( int Vdeo2C , 4 ,GL_FLOAT, 0, color_xyzLine );
glLineWidth( int Vdeo2C , 5.0f);
glDrawArrays( int Vdeo2C , GL_LINES, 0, 6);
......
......
//---- 그리기 ------ 끝------------------------
// Vdeo1C(120MB) 에서 그려진 화면을 Vdeo1 에 카피한다 ...( swapBuffer 와 비슷 )..
Copy_Rectcp( int Vdeo2C , RECT *SRC_rect , RECT *DST_rect, int Vdeo1 , int DataLen );
}//----- end while -----------------
return;
}//----- end ================
pthread_create(&pthread_ARR[Thr_Num7], NULL, &Thread_170, (void *)Thr_Num7);
위의 명령어를 대체하는 새로운 명령어는
나머지 70개는 개발자가 확실히 통제하는 방식으로 직접 코어를 지정한다
// CoreNum = 1 <--> 70
Core_Set_Run_Adr( int CoreNum , &Thread_170, (void *)Thr_Num7 );
Core_Run( int CoreNum );
Core_Get_Perfomance( int CoreNum , int &ret_performance ); // 0 ---- 1000
//Sleep_While_Zero 상태에 있으면 0
Core_Kill( int CoreNum );//현재코어나 실행되고 있더라도 강제로 종료된다
Core_is_Running( int CoreNum , int &ret_tf); // ret_tf = 1 --> true //Sleep상태에 있더라도 true
Core_Have_Run_Adr( int CoreNum , int &ret_tf); // ret_tf = 1 --> true
Core_Delete_Run_Adr( int CoreNum , int &ret_tf); // ret_tf = 1 --> true
Core_is_Sleep( int CoreNum , int &ret_tf); // ret_tf = 1 --> true
Core_WakeUP ( int CoreNum , int &ret_tf); // ret_tf = 1 --> true
//-------- Xeon_Phi 가 2개 이상일 경우 --------------------------------------
Xeon_Phi 가 2개 이상일 경우
CPU = APU ( Application Processor Unit )
Core_Set_Run_Adr( int ApuNum , int CoreNum , &Thread_170, (void *)Thr_Num7 );
Core_Run( int ApuNum , int CoreNum );
Core_Get_Perfomance( int ApuNum , int CoreNum , int &ret_performance ); // 0 ---- 1000
//Sleep_While_Zero 상태에 있으면 0
Core_Kill( int ApuNum , int CoreNum );//현재코어가 실행되고 있더라도 강제로 종료된다
Core_is_Running( int ApuNum , int CoreNum , int &ret_tf); // ret_tf = 1 --> true //Sleep상태에 있더라도 true
Core_Have_Run_Adr( int ApuNum , int CoreNum , int &ret_tf); // ret_tf = 1 --> true
Core_Delete_Run_Adr( int ApuNum , int CoreNum , int &ret_tf); // ret_tf = 1 --> true
Core_is_Sleep( int ApuNum , int CoreNum , int &ret_tf); // ret_tf = 1 --> true
Core_WakeUP ( int ApuNum , int CoreNum , int &ret_tf); // ret_tf = 1 --> true
//-------------------------------------------------------------------------------
위와같은 개발자 코어지배 방식으로 하면 각코어가 같은 메모리를 공유하는 경우가 많은데
각코어가 동시에 쓰는경우 에러의 발생의 우려가 있지만 이는 개발자의 능력으로 충분히 극복할수 있는
문제이며 여러코어가 한 메모리를 공유한다고 해서 반드시 나쁜것만 아니고 오히려 좋은점도 있다
그리고 CPP 로 class 화 하면 더울 안전하게 각 코어를 자유자재로 다루면서 수십가지의 일들을
동시에 처리할수 있으므로 컴퓨터 화면이 아주 SF하게 움직일 것이다
//-----------------------------------------------------------
옛날 전두환 시절에도 블루마를 입은 배구경기를 보면서 딸딸이 치는 낙으로 살았는데
지금의 이명박 치하에서는( 이명박 개새끼라고 욕하고 싶지만 국가원수 모독죄가 무서워서 나는 절대로
이명박 개새끼라고 욕하지 안했음 , 우리모두 이명박 개새끼라고 욕하지 맙시다... )
요즘의 배구선수 들은 모조리 반바지만 입는다
이래가지고는 딸딸이를 칠수가 없다 , 나의 불알이 터질것만 같다
다음의 박근헤 정부는
노무현때처럼 쓸데없는 재벌개혁 , 군개혁 , 검찰 개혁 , 통일세 , 연금늘리기 등 이딴거
신경 쓰지 말고 다시 배구 블르마를 환원 시켜야한다 -- 딸딸이좀 치자.....
최소한의 국민 기본권은 유지시켜 주어야 한다
군개혁은 이북의 빨갱이 군대에 밀리면 하지말라고 해도 한다
검찰 개혁 은 대한민국 망해도 검찰은 영원하다 그냥 냅둬...
옛날 서울시청 도서관에 갔었는데 유럽풍의 대리석 건물에 포근함을 느꼈다
중앙도서관의 최신식 건물과 는 다른 뭔가 따뜻함을 느꼈다
옛날 조선 총독부 건물도 환원 시켜야한다
총독부 건물은 유럽풍의 대리석 건물이다 일제 잔제가 아니다
교보문고 옆에있는 방통위 건물과 그옆에 있는 미국 대사관을 허물고
여기에다 다시 짓고 대형 도서관으로 만들어야 한다
대리석의 따뜻하고 포근함을 느끼고 싶다
김영삼 전대통령이 디지면 그 건물 까부수고 그 자리에 50층짜리 미국 대사관을 지어야한다
김영삼이가 민주화를 위해서 공헌한것은 인정하지만
중앙청은 일본풍이 아니라 유럽풍의 건물이다 이것을 까 부순건 역적이다
노무현때는 남산의 식물원을 없앴다
겨울철 눈이 올때 식물원에 가서 인류공영을 위한 연구를 했는데...
노무현은 역적이다
대한민국이 쫄딱망해서 일본이나 중국에 넘어가도 청와대를 제일 먼저
까부수지 남산 식물원을 없애지 않는다
노무현이가 계륵이라 말한것은 히틀러가 600만 유태인을 처형한것보다
더 나쁘다. 히틀러의 입장에서 보면 그만의 정치적 논리가 있었지만
계륵은 노무현의 입장에서 보더라도 아무런 정치적 논리가 없다
이것은 상대방을 완전히 무시하는것이다
전두환이가 광주에서 학살한것보다 더 나쁘다
물론 노무현이가 민주화를 위해서 노력한것은 인정한다
일년에 수십번 전용기를 타고 외국에 놀러다나면서 주둥아리로
계륵이라 말한것은 대통령의 품격을 무너뜨리는 것이다
전두환이도 할말은 가려서 했다
퇴임후 고향에도 으리으리 초호화 건물을 지었다..
이런 주둥아리로 놀린 죄로 노무현은 역적중의 역적이다
노무현의 자살로 끝내는 것이 아니라 9족을 멸해야 한다
//-----------------------------------------------------------------------------------------------------
//--------------------------- end -------------------------------------------------------------
'각종 보고서' 카테고리의 다른 글
엔진개량, 내구성_출력 강화 (0) | 2013.06.01 |
---|---|
CPR 엔진... (0) | 2013.05.14 |
-- 휴대폰 배터리 ( 배터리 교체시 휴대폰 끌 필요 없음 ) -- (0) | 2013.01.22 |
TABLE PC SSD ---------- (0) | 2013.01.20 |
-- 11K5K TABLE PC --- (0) | 2013.01.18 |