Microsoft Word - cover.docx
|
|
- 미희 천
- 5 years ago
- Views:
Transcription
1 Parallel Programming using MPICH2
2 차 례 1. Parallel Programming 환경구축 Parallel Programming using MPICH 병렬처리예제프로그램 참고자료 - 23
3 1. Parallel Programming 환경구축병렬프로그래밍을위하여널리사용되는 Message Programming Interface인 MPICH2를 Windows 에서사용하기위하여아래와같이환경설정을하고, MPICH2를설치한다. MPICH2가하나의문제를여러컴퓨터로처리하게하기위해서는아래와같은환경이필요하다. 작업에참여하는총 n대의컴퓨터는 1. 동일한작업그룹에속해있음 2. 동일한계정이름과비밀번호를사용 3. 방화벽이없어야한다. 4. MPICH2가설치되어있다. a. Windows 작업그룹설정 MPICH2를이용하여여러대의컴퓨터를하나의시스템처럼사용하기위해서는각컴퓨터들은동일한작업그룹에속해있어야한다. 아래메뉴를통하여작업에참여할모든컴퓨터들의작업그룹을동일한이름으로설정한다. [ 참고 ] MPICH2를설치한후작업에참여할컴퓨터들을설정할때이곳에설정되어있는컴퓨터이름을이용하기때문에가급적이면컴퓨터이름을식별하기쉬운이름으로설정하는것이좋다. 아래메뉴를따라작업그룹과컴퓨터이름을설정하자. 시작 -> 제어판 -> 네트워크연결 -> 고급 -> 네트워크식별 -> 변경 < 작업그룹, 컴퓨터이름설정화면 > 1
4 예를들어 PC1, PC2, PC3, PC4, PC5의이름을가진다섯대의컴퓨터를동일한작업그룹으로설정했다면 내네트워크환경 -> 작업그룹컴퓨터보기 에서각각의컴퓨터들의컴퓨터이름을확인할수있어야정상적으로작업그룹이설정된것이다. b. Windows 계정생성 MPICH2를이용한병렬처리작업에참여할모든컴퓨터는동일한계정과비밀번호를사용해야한다. 예를들면, MPICH2의작업에참여하는 5대의컴퓨터 PC1~PC5는 계정 : mpich2, 비밀번호 : campich2 와같이동일한계정과비밀번호를사용해야한다. 아래메뉴에서 MPICH2를위한새로운계정과비밀번호를생성한다. 시작 -> 제어판 -> 사용자계정 -> 새계정만들기 <MPICH2 의사용을위한사용자계정생성 > [ 주의 ] 새로생성한계정은필수적으로비밀번호를사용해야한다. 비밀번호를사용하지않는컴퓨터는 MPICH2에서사용될수없다. 2
5 c. MPICH2 설치이제 1.b 에서새로생성한계정에로그인하여아래주소의웹사이트에접속하여윈도우용 MPICH2 프로그램을다운받고설치하자. MPICH2 웹사이트 MPICH2 다운로드 MPICH2가정상적으로설치되기위해서는아래두프로그램이미리설치되어있어야한다. -Microsoft Visual C Redistributable Package (x86) -Microsoft.NET Framework Version 2.0 Redistributable Package (x86) 위두프로그램이설치되어있지않아 MPICH2가설치되지않으면구글에서위의문장으로검색을하여해당프로그램을다운로드한다. 위두프로그램을설치하였으면 MPICH2를아래와같이설치하자. (1) 기본적인안내메시지들은 Next 를클릭하여넘어간다. 3
6 4
7 (2) Passphrase 설정 Passphrase를설정하는부분은작업에참여할모든컴퓨터들이동일한 passphrase를사용해야하므로주의하자. (3) MPICH2의사용권한설정이컴퓨터내의모든계정에서이프로그램을사용할수있게할것인지, 혹은현재이인스톨러를실행중인계정에서만사용할수있게할것인지설정하는부분이다. Everyone을선택하자. 5
8 (4) 설치시작 Next 를클릭하면설치가시작된다. 설치가완료되면 Close 를클릭하여인스톨러를종료한다. 6
9 d. MPICH2 환경설정 MPICH2를모든컴퓨터에설치한후에 MPICH2가설치된각컴퓨터들이실제로연결이되는지확인하자. 아래메뉴를통하여 MPICH2 환경설정프로그램을실행한다. 시작 -> 모든프로그램 -> MPICH2 -> wmpiconfig.exe (1) 계정과비밀번호등록 MPICH2 환경설정프로그램을처음실행하면계정과비밀번호를물어보는창이나온다. 이때이전단계 1. b 에서생성했던윈도우계정이름과, 비밀번호를입력하고 Register를클릭한다. 다시한번강조하지만지금단계에서입력하는계정이름과비밀번호를이용하여다른모든컴퓨터들에접속하기때문에모든컴퓨터들의계정과비밀번호는동일해야한다. < 윈도우계정이름과비밀번호를입력 > 계정과비밀번호를입력하고 Register를클릭한후 wmpiconfig.exe 프로그램이아래그림과같이나타나야한다. 7
10 <wmpiconfig.exe 실행화면 > 8
11 (2) MPICH2 환경설정 <wmpiconfig.exe 의화면구성 > MPICH2 환경설정프로그램은위의그림과같이크게세가지창이있는데, 각각의용도는아래와같다. (a) 작업에참여할컴퓨터들의작업그룹을설정한다. (b) (a) 에서선택한작업그룹에존재하는 Host의 list가나타나는창이다. (c) 해당호스트의 MPICH2 현재설정상태를표시하고, 사용자가수정할수있게하는창이다. 우선 1.a에서설정한작업그룹내에있는컴퓨터들간의연결상태를체크하기위하여위그림에서 a로표시된부분에서 Domain을이전에설정한작업그룹의이름으로선택하고, Get Hosts 버튼을클릭하여작업그룹내의컴퓨터목록을생성한다. 9
12 <Domain 을작업그룹으로설정하고 Get Hosts 버튼을클릭한모습 > 이시스템에서는 WORKGROUP 작업그룹내에서 PC1, PC2, PC10, PC11, PC12 총 5대의컴퓨터에 MPICH2가모두설치되어있고, 사용자계정과비밀번호가모두동일하게설정되어있는상태이다. 이 5대의컴퓨터들이올바로설정되고연결상태가정상적인지확인하기위하여 Scan Hosts 버튼을클릭한다. 10
13 <Scan Hosts 버튼을클릭한모습 > 지금까지해온방법으로미리설정을해둔 5대의컴퓨터가올바로설정되었음을컴퓨터이름에연두색으로표시하여나타내고있다. MPICH2가연결할수없는컴퓨터는회색으로나온다. 연두색으로표시된컴퓨터는현재이작업을수행하는컴퓨터에서 MPICH2를이용하여병렬처리작업에이용할수있는컴퓨터이다. 만약이때설정한컴퓨터가연두색으로표시되지않는다면앞의과정을다시꼼꼼히읽어본후다시시도해본다. 지금까지의과정으로 MPICH2 의환경설정은모두끝났다. 11
14 (3) 이문서작성에사용된시스템의구성 -총 6대의컴퓨터 PC1, PC2, PC10, PC11, PC12, jaykim_clsab( 이문서를작성할때사용한컴퓨터 ) -작업그룹이름 WORKGROUP -6대의컴퓨터의사용자계정과비밀번호계정 : mpich2 비밀번호 : 방화벽사용안함 -작업그룹내에다른컴퓨터들도있지만 MPICH2가설치되지않았고 mpich2 사용자계정이없기때문에 MPICH2의작업에참여할수없음 12
15 2. Parallel Programming Using MPICH2 이제 Parallel Programming을위한환경구축이모두끝났으니간단한예제를실행해본다. 이예제를실행하는과정에서 MPICH2를이용한프로그램을컴파일하는방법, 컴파일된실행프로그램을다수의컴퓨터에서실행하는방법등을알수있을것이다.. a. 예제프로그램, test.c test.c #include <stdio.h> #include "mpi.h" #define MAX_DATA 100 main(int argc, char **argv){ int rank; int size; char processor_name[mpi_max_processor_name]; int namelen; char buff[max_data]; int i; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Get_processor_name(processor_name, &namelen); if(rank==0){ printf("### Process %d from %s ###\n", rank, processor_name); fflush(stdout); for(i=1;i<size;i++){ MPI_Recv(buff, MAX_DATA, MPI_CHAR, i, 0, MPI_COMM_WORLD, &status); printf("%s\n", buff); fflush(stdout); else{ sprintf(buff, "### Process %d from %s ###", rank, processor_name); fflush(stdout); MPI_Send(buff, MAX_DATA, MPI_CHAR, 0, 0, MPI_COMM_WORLD); MPI_Finalize(); b. 소스컴파일위예제는 MPI 의가장기초적인예제이다. 이를컴파일하고단일컴퓨터상에서실행해보고동작을확인하고, 다수의컴퓨터에서실행해보자. MPICH2 를이용하여작성한프로그램을 Visual Studio 를이용하여컴파일하고실행할때는아래와같은절차가필요하다. (1) 프로젝트를생성한다. (2) include 파일경로에 mpich2\include 를추가한다. (3) library 파일경로에 mpich2\lib 를추가한다. (4) link 명령어에 mpi.lib 를추가한다. (5) 생성한실행파일을실행할모든컴퓨터의동일한위치에복사한다. 13
16 (6) mpiexec 명령어를이용하여프로그램을실행한다. * MPICH2 의기본설치폴더는 C:\Program Files\MPICH2 이다. Visual Studio 를이용하여프로젝트를생성하고위예제를컴파일해보자. (1) 프로젝트를생성한다. 프로젝트파일을임의의디렉토리, C:\MPICH2_Working\test 에저장한다. 14
17 (2) include, library 파일경로에 mpich2\include, mpich2\lib 를추가한다. Visual Studio 메인메뉴 -> Tools -> Options -> Directories 위그림과같이 MPICH2 의 include 파일의위치를추가한다. 15
18 Show directories for: 메뉴에서 Library files 를선택하고위그림과같이 MPICH2 의 lib 파일의위치를추가한다. (3) link 명령어에 mpi.lib 를추가한다. Visual Studio 메인메뉴 -> Project -> Settings -> Link Link 탭의 Object/library modules: 텍스트입력창의가장뒤쪽에 mpi.lib 를타이핑하여추가한다. (4) 컴파일환경설정완료이과정을마치면 MPICH2 를이용하여작성한프로그램을컴파일할수있다. 컴파일을하여실행파일을생성하자. * 생성한실행파일의위치를잘기억하도록하자. 여기서는생성한실행파일의위치를 c:\mpich2_working\test\debug 폴더로가정한다. 16
19 c. 실행 MPICH2 를이용하여작성한프로그램은실행할때별도의프로그램이필요하다. MPICH2 의기본설치폴더내에는 bin lib include examples 등의폴더가있다. 우선 MPICH2 로작성한프로그램을실행하기위해필요한프로그램은 bin 폴더내에위치한다. Console 프로그램을열고, cd c:\program files\mpich2\bin 명령어를입력하여 MPICH2 폴더로이동하고아래명령어를입력한다. [ 참고 ] 환경변수설정에서 MPICH2 의 bin 폴더를 path 에추가해두면 mpiexec 명령어를편하게사용할수있다. C:\Program Files\MPICH2\bin>mpiexec n 5 c:\mpich2_working\test\debug\test.exe < 실행결과 > MPICH2 로작성한프로그램을실행시켜주는 mpiexec 명령어를이용하여위에서작성한예제를실행하였다. 여기서사용한 n 5 파라미터는이프로그램을 5 개의프로세스로생성하라는의미이다. 즉, 이명령어가수행되면 test.exe 프로그램의프로세스가 5 개가생성되는것이다. 이렇게생성된프로세스는 smpd.exe 에의하여관리되기때문에서로통신 (Message Passing) 이가능하다. 그리고각프로세스마다고유한 ID 도할당받기때문에각각의프로세스를구분할수있다. 자세한사항은소스분석을통하여설명하도록하겠다. 17
20 d. 소스분석 test.c #include <stdio.h> #include "mpi.h" #define MAX_DATA 100 main(int argc, char **argv){ int rank; int size; char processor_name[mpi_max_processor_name]; int namelen; char buff[max_data]; int i; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Get_processor_name(processor_name, &namelen); /* 여기까지모든프로그램이동일하게수행된다. rank 는각프로세스를구별하기위해 사용된다. 주로 rank 0 은특별한용도로사용된다.*/ /* 이부분부터프로세스의 rank 에따라수행할코드가달라진다. */ // rank 가 0번인프로세스가수행할코드 if(rank==0){ printf("### Process %d from %s ###\n", rank, processor_name); fflush(stdout); for(i=1;i<size;i++){ MPI_Recv(buff, MAX_DATA, MPI_CHAR, i, 0, MPI_COMM_WORLD, &status); printf("%s\n", buff); fflush(stdout); //rank가 0이아닌프로세스가수행할코드, 이경우에는 rank 가 1~4 인경우 else{ sprintf(buff, "### Process %d from %s ###", rank, processor_name); fflush(stdout); MPI_Send(buff, MAX_DATA, MPI_CHAR, 0, 0, MPI_COMM_WORLD); MPI_Finalize(); 위소스중주요 MPICH2 Function 과기능은아래와같다. MPI_Init(); MPI_Comm_size(); MPI_Comm_rank(); MPI_Recv(); MPI_Send(); MPI_Finalize(); 이예제와같은프로그래밍 Model 을 SMPD(Single Program Multiple Data) 이라한다. 즉, 같은소스코드의프로그램을이용하여여러개의프로세스를생성하는것이다. 동일한소스코드로다수의프로세스가생성되기때문에각각의프로세스를구분할수있어야각프로세스별로작업을달리할당하거나하는일을할수있을것이다. 18
21 가장먼저, MPI_Comm_rank 함수는 mpiexec 프로그램을이용해생성된다수의프로세스를식별할수있는고유번호를할당해준다. 즉, mpiexec n 5 test.exe 명령어를이용하여 5 개의프로세스를생성한다면 0~4 의 rank 가진프로세스가생성되는것이다. MPI_Comm_size 함수는 mpiexec 명령어를이용해몇개의프로세스가생성되었는지를알려준다. mpiexec n 5 test.exe 로실행한경우에는 size 의값이 5 가된다. MPI_Send 함수는목적지프로세스의고유번호 (rank) 와전송할데이터에관한정보들을파라미터로받아해당목적지프로세스에게메시지를전달하는함수이다. 즉, 이함수를통하여같은영역 (MPI_COMM_WORLD) 내에있는다른프로세스에게메시지를전달하는것이다. MPI_Recv 함수는메시지를보내는프로세스의정보와수신된메시지를저장할변수를파라미터로입력받고, 메시지를보내는프로세스가 Send 함수를이용하여메시지를전송하면전송받은데이터를지정한변수 ( 버퍼 ) 에저장한다. MPI_Init 함수는 MPI 를이용하기전에항상호출해야하는함수이다. MPI_Finalizer 함수는 MPI 를이용한프로그램이종료되기전에항상호출해야한다. 위와같은 MPI 함수를이용하여이예제프로그램은, rank 가 0 인프로세스 ( 프로세스 0) 는 4 개의프로세스로부터메시지가전송되기를기다리고, 프로세스 1 ~ 프로세스 4 는프로세스 0 에게메시지를전송한다. 프로세스 0 이프로세스로부터메세지를받은후수신한메세지내용을출력하는동작을하고있다. 여기서중요한사실은각각의프로세스들이동일한소스프로그램을이용하여생성된다는점과 (SMPD Model), 각프로세스는하나의컴퓨터내의메모리에모두생성될수도있고, 여러대의독립적인컴퓨터의메모리에서각각생성될수도있다. 각각의프로세스가하나의컴퓨터내의메모리에생성하는경우는방금해보았고, 이번에는 5 개의프로세스를각각 5 대의별도의컴퓨터의메모리에생성해보겠다. 이렇게생성한프로세스들역시 Send, Recv 함수를이용하여서로통신할수있다. 이런경우에는 MPICH2 의환경설정프로그램을이용하여설정을변경해줘야한다. 19
22 e. 여러대의컴퓨터에프로세스를생성하기위한환경설정 Wmpiconfig.exe 을실행한다. 위와같은화면이나오면가운데에위치한창의메뉴중 hosts 의정보를변경해줘야한다. 이메뉴를이용하여 MPICH2 를이용하여프로세스를생성할때참여할컴퓨터들을정할수있다. 미리설정해둔 5 대의컴퓨터이름을아래와같이추가기입하고 Apply 버튼을클릭하여설정을저장한다.. (ex, PC1 PC2 PC10 PC11 PC12) 20
23 이제다수의프로세스를다수의컴퓨터에서생성할수있게된다. console 에서아래명령어를입력하고실행해보자. 5 개의프로세스들이각각다른컴퓨터에서생성되고서로통신하는모습을볼수있다. 이러한 Message Passing 을이용하여병렬처리를수행할수있다. 21
24 3. 병렬처리예제프로그램 첨부한예제프로그램은특정값 (ex. 1000) 으로초기화되어있는 12X12 행렬의값을특정값 (ex. 1) 으로감산하여 0 이하가될때까지계산하는프로그램이다. 12 개의행을다수의프로세스가병렬로계산한후이결과값을 Master 프로세스 (rank 가 0 인 ) 에게돌려주고 Master 프로세스는이값을자신의행렬에반영하는방식으로동작한다. 아래그림은 12X12 행렬이 1000 으로초기화되어있고, 각행렬의값이 1 씩감소하는과정을나타낸예이다. 3 개의프로세스 ( 컴퓨터 ) 가작업에참여하고프로세스당 4개의행을계산한다. 1 cycle 에서는모든행렬의값이 1000( 초기값 ) 이고, 다음 cycle 에서각프로세스가 1을감소한값을 master process(process 1) 로전달한다. 효율적인메모리사용을위해, Master process 는 12X12 행렬의모든값을가지고있고, process2, process3 은자신의계산영역의행렬만가지고있는다. 그리고자신의계산영역의행렬원소들을계산하고그결과를 process1 에게전송하고, process1 은전달받은값을자신이가지고있는행렬에반영한다. 즉, 2 cycle 이되면 process1~process3 이가지고있는행렬의값은모두 999 가된다. 행렬의값에 1을빼는계산은프로세스 2~3 에서수행되고, 그계산의결과값이 process1 으로전달된다. 이런계산을반복하여 process1 에있는행렬의모든값이 0이하가될때까지반복한다. [ 참고 ] 각각의프로세스가행렬의값에 -1 을하는계산은너무간단한계산이기때문에병렬처리의효과를얻을수없다. 실제소스에서는보다복잡한실수연산인, 을 번빼는등의연산을하여각프로세스에게보다복잡한연산을수행하도록하였다. [ 실험결과, 소스프로그램첨부 ] 22
25 4. 참고자료 Web Sites Books Parallel Programming with MPI, Peter S. Pacheco 23
26 MPI_Example.c #include <stdio.h> #include "mpi.h" //parameter #define ROW_MAX 12 #define COL_MAX 12 #define MAX_DATA 100 int control_array(int type, double value, int row, int col); // 기본자료구조 double array[row_max][col_max]; double t_array[row_max][col_max]; //parameter double init_value = ; double subtracter = 1; int cycle_counter=0; main(int argc, char **argv){ //mpich2 int rank; int size; char processor_name[mpi_max_processor_name]; int namelen; double starttime=0.0, endtime; MPI_Status status; //mpich2 buffer int buf[max_data]; char char_buf[max_data]; // 작업분할 int divider=0; int index_i=0, index_j=0; int index_buf[max_data]; //array int local_row_start, local_row_end; int iszero=1, iszero_gather; //control int i, j, k,l; int print=1; int done=0; //mpich2 MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Get_processor_name(processor_name, &namelen); // 계산에참여하는프로세스수는 ROW_MAX 를정확히나눌수있는수이어야한다. if(row_max % size!=0){ printf("error!\n"); fflush(stdout); MPI_Finalize(); return -1; //divider 에프로세스당처리할 row 의수 divider=row_max/size; if(rank==0){ //parameter broadcasting printf("initial Value : "); fflush(stdout); scanf("%lf", &init_value); printf("subtracter : "); fflush(stdout); scanf("%lf", &subtracter); printf("print results[yes=1,no=0]? "); fflush(stdout); scanf("%d", &print); //start clock starttime=mpi_wtime(); //broadcasting MPI_Bcast(&init_value, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); MPI_Bcast(&subtracter, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); //(1) 작업분할, 각프로세스가처리할 index 의범위를할당 for(i=0;i<size*2;i+=2){ index_buf[i]=i/2*divider; Page 1 of 3
27 MPI_Example.c if(i/2 == size-1) // 마지막프로세스는나머지 Index 를다처리 index_buf[i+1]=row_max-1; else index_buf[i+1]=(i/2*divider)+(divider-1); printf("### rank[%d]-[%s] - Received Index Range = [%d] ~ [%d]\n", rank, processor_name, index_buf[0], index_buf[1]); //index할당 for(i=1;i<size;i++){ buf[0]=index_buf[i*2]; buf[1]=index_buf[i*2+1]; MPI_Send(buf, 2, MPI_INT, i, 0, MPI_COMM_WORLD); // 각프로세스에할당한 Index Range 를확인( 디버깅) for(i=1;i<size;i++){ MPI_Recv(char_buf, MAX_DATA,MPI_CHAR, i, MPI_ANY_TAG, MPI_COMM_WORLD, &status); printf("%s\n",char_buf); fflush(stdout); // 배열초기화 control_array(1, init_value, ROW_MAX, COL_MAX); //print if(print) control_array(0, 0, ROW_MAX, COL_MAX); //(2) 작업시작 local_row_start=index_buf[0]; local_row_end=index_buf[1]; // 할당받은 index 범위내의행렬값들을계산한다. while(1){ iszero=1; cycle_counter++; for(i=local_row_start;i<=local_row_end;i++){ for(j=0;j<col_max;j++){ for(k=0;k<100;k++) for(l=0;l<100;l++){ t_array[i][j] = t_array[i][j]-subtracter; if(t_array[i][j]> 0) iszero=0;// 계산값중 0 이하가아닌것이하나라도있으면 0 으로셋 // 각프로세스가계산한값을 array 에모두저장, MPI_Gather MPI_Gather(t_array, ROW_MAX/size*COL_MAX, MPI_DOUBLE, array, ROW_MAX/size*COL_MAX, MPI_DOUBLE, 0, MPI_COMM_WORLD); // 각프로세스의 iszero 값더하여종료조건계산 MPI_Reduce( &iszero, &iszero_gather, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if(print) control_array(0, 0, ROW_MAX, COL_MAX); if(iszero_gather==size) break; printf("### rank[%d]-[%s] - Finished!!!\n", rank, processor_name); fflush(stdout); endtime=mpi_wtime(); for(i=1;i<size;i++){ MPI_Recv(char_buf, MAX_DATA,MPI_CHAR, i, MPI_ANY_TAG, MPI_COMM_WORLD, &status); printf("%s\n", char_buf); printf("\n### Time = %f\n", endtime-starttime); fflush(stdout); else{ MPI_Bcast(&init_value, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); MPI_Bcast(&subtracter, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); // 배열초기화 control_array(1, init_value, ROW_MAX, COL_MAX); // 할당받은 Index Range 를서버에게전달( 디버깅) MPI_Recv(buf, 2,MPI_INT, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &status); sprintf(char_buf, "### rank[%d]-[%s] - Received Index Range = [%d] ~ [%d]", rank,processor_name, buf[0], buf[1]); MPI_Send(char_buf, MAX_DATA, MPI_CHAR, 0, 0, MPI_COMM_WORLD); local_row_start = buf[0]; Page 2 of 3
28 MPI_Example.c local_row_end = buf[1]; while(done!=1){ // 할당받은 index 범위내의행렬값들을계산한다. iszero=1; for(i=0;i<row_max/size;i++){ for(j=0;j<col_max;j++){ for(k=0;k<100;k++) for(l=0;l<100;l++){ array[i][j] = array[i][j]-subtracter; if(array[i][j] > 0) iszero=0;// 계산값중 0 이하가아닌것이하나라도있으면 0 으로셋 MPI_Gather(array, ROW_MAX/size*COL_MAX, MPI_DOUBLE, array, ROW_MAX/size*COL_MAX, MPI_DOUBLE, 0, MPI_COMM_WORLD); MPI_Reduce( &iszero, &iszero_gather, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); done=iszero; sprintf(char_buf, "### rank[%d]-[%s] - Finished!!! ", rank, processor_name); MPI_Send(char_buf, MAX_DATA, MPI_CHAR, 0, 0, MPI_COMM_WORLD); MPI_Finalize(); return 1; int control_array(int type, double value, int row, int col){ //type==0 : print //type==1 : initialize with the value of the parameter, value int i,j; if(type==0) printf("### %d Cycle\n", cycle_counter); for(i=0;i<row;i++){ for(j=0;j<col;j++){ if(type==0) { printf("%.2lf ", array[i][j]); fflush(stdout); else if(type==1) { array[i][j]=value; t_array[i][j]=value; else return -1; if(type==0) { printf("\n"); fflush(stdout); if(type==0) { printf("\n"); fflush(stdout); return 1; Page 3 of 3
29 프로세스수에의한계산시간의변화 계산에걸린시간 ( 초단위 ) 프로세스의수 subtracter
30 X축 : 계산에사용한감수 ( 이수를이용하여행렬의초기값에서 0이될때까지뺀다 ) Y축 : 계산에참여한프로세스 ( 컴퓨터 ) 의수, ( 프로세스수가 6이상일경우는 1대의컴퓨터에 2개이상의프로세스를생성하여처리함 )
fprintf(fp, "clf; clear; clc; \n"); fprintf(fp, "x = linspace(0, %d, %d)\n ", L, N); fprintf(fp, "U = [ "); for (i = 0; i <= (N - 1) ; i++) for (j = 0
병렬계산을이용한열방정식풀기. 1. 처음 병렬계산을하기전에 C 언어를이용하여명시적유한차분법으로하나의열방정식을풀어본 다. 먼저 C 로열방정식을이해한다음초기조건만다르게하여클러스터로여러개의열방 정식을풀어보자. 2. C 를이용한명시적유한차분법으로열방적식풀기 열방정식을풀기위한자세한이론은앞서다룬 Finite-Difference method 을보기로하고 바로식 (1.10)
More informationMicrosoft Word - 3부A windows 환경 IVF + visual studio.doc
Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More informationuntitled
if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationJDK이클립스
JDK 와이클립스설치 A. JDK 다운로드, 설치및환경설정 지금부터 JDK를다운로드받아설치하고 JDK를윈도우에서활용할수있도록환경을설정하는전과정을소개한다. 다운로드 www.oracle.com 사이트에접속하여 Downloads 메뉴를선택한후 [ 그림 1] 과같이 "Java for Developers" 를클릭한다. [ 그림 1] www.oracle.com 사이트
More information제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More information< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>
Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법
More informationC 언어 프로그래밊 과제 풀이
과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍
More informationuntitled
while do-while for break continue while( ) ; #include 0 i int main(void) int meter; int i = 0; while(i < 3) meter = i * 1609; printf("%d %d \n", i, meter); i++; return 0; i i< 3 () 0 (1)
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationStuduino소프트웨어 설치
Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationPowerPoint 프레젠테이션
Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2
More informationMicrosoft Word - 2부B windows 환경 visual studio 2005.doc
1. 영문 Visual Studio 2005 Visual Studio 2005 설치 Visual Studio 2005 시작하기 new project 파일 > 새로만들기 > 새로운 프로젝트 > Visual C/C++ Project > Console Application File > New >New Project > Visual C/C++ project > Console
More information비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2
비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More information프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음
프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationISP and CodeVisionAVR C Compiler.hwp
USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler
More informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More informationPowerPoint 프레젠테이션
Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.
More informationMicrosoft PowerPoint - 병렬표준.pptx
Parallel Programming & MPI 박필성 수원대학교 IT 대학컴퓨터학과 목차 Why Parallel? Parallel Processing Parallel Programming MPI의기본개념 MPI 표준 MPI 프로그램및실행 Related Topics & Questions Why Parallel? (1) Why parallel computing?
More information<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>
쉽게풀어쓴 C 언어 Express 제 17 장동적메모리와연결리스트 이번장에서학습할내용 동적메모리할당의이해 동적메모리할당관련함수 연결리스트 동적메모리할당에대한개념을이해하고응용으로연결리스트를학습합니다. 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationMicrosoft PowerPoint - AME_InstallRoutine_ver8.ppt
AMESim Install Routine and License Manager Tel : +82-31-608-0434 Fax : +82-31-608-0439 E-mail :support@shinho-systems.co.kr http://www.shinho-systems.co.kr Ssangyong IT Twin Tower 702, Sandaewon-dong,
More informationWindows 8에서 BioStar 1 설치하기
/ 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More informationPowerPoint 프레젠테이션
Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용
More information<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>
쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 // 이중포인터프로그램
More informationch15
쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 C Express 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 //
More informationuntitled
int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015
More informationParallel Programming & MPI 박필성 수원대학교 IT 대학컴퓨터학과
Parallel Programming & MPI 박필성 수원대학교 IT 대학컴퓨터학과 목차 Why Parallel? Parallel Computers Parallel Processing Parallel Programming MPI의기본개념 MPI 표준 MPI 프로그램및실행 Related Topics & Questions Why Parallel? (1) Why
More informationMicrosoft Word - src.doc
IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...
More information<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>
SAM4S Printer Driver Installer 달리명시하지않은한, 인쇄또는복사된문서는통제하지않는문서임 목 차 1. 1. WINDOWS DRIVER INSTALLER 설치 설치...... 2 2. 프린터추가...... 5 3. 프린터제거...... 19 4. 프린터추가 / 제거선택...... 21 5. 프로그램추가 / 제거...... 21 SHC- 11-01-
More informationserver name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지
ArcGIS for Server (Windows) 설치가이드 ArcGIS 10.2 for Server 설치변경사항 1 설치 간편해진설치 -.Net Framework나 Java Runtime 요구하지않음 - 웹서버 (IIS, WebSphere ) 와별도로분리되어순수하게웹서비스기반의 GIS 서버역할 - ArcGIS Server 계정을이용한서비스운영. 더이상 SOM,
More informationPowerPoint Presentation
MPI 를이용한병렬프로그래밍기초 : Point-to-Point Communication Hongsuk Yi KISTI Supercomputing Center 2009-11-09 1 MPI 란무엇인가? MPI Message Passing Interface 병렬프로그래밍을위해표준화된데이터통신라이브러리 MPI-1 표준마련 (MPI Forum) : 1994 년 Procs
More informationuntitled
시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000
More informationMicrosoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More informationPowerPoint 프레젠테이션
KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된
More information버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More information아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다
공유기사용환경에서 MNC-V100 환경설정하기 다음설명은 AnyGate GW-400A (Http://www.anygate.co.kr) 를사용하는네트워크환경에서 MNC-V100 을연결하여사용하는법을설명합니다. 공유기내부네트워크환경설정공유기를사용하는환경에서공유기의설정을아래그림과같이설정하시면 MNC-V100의설정을변경하지않아도모비캠과연결할수있습니다. ( 공유기의환경을변경하기어려운경우에는
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More informationPathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.
PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationMicrosoft PowerPoint - [2009] 02.pptx
원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include
More informationPowerPoint 프레젠테이션
Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More informationvi 사용법
네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More information중간고사
중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX
More informationPoison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3
Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More information이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
More informationSBR-100S User Manual
( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More information본 강의에 들어가기 전
C 기초특강 종합과제 과제내용 구조체를이용하여교과목이름과코드를파일로부터입력받아관리 구조체를이용하여학생들의이름, 학번과이수한교과목의코드와점수를파일로부터입력 학생개인별총점, 평균계산 교과목별이수학생수, 총점및평균을계산 결과를파일에저장하는프로그램을작성 2 Makefile OBJS = score_main.o score_input.o score_calc.o score_print.o
More informationThe Pocket Guide to TCP/IP Sockets: C Version
얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow
More information1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아
LG U+ SMS/MMS 통합클라이언트 LG U+ SMS/MMS Client Simple Install Manual LG U+ SMS/MMS 통합클라이언트 - 1 - 간단설치매뉴얼 1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml
More informationMicrosoft PowerPoint - chap12-고급기능.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 가 제공하는 매크로 상수와 매크로
More informationMicrosoft PowerPoint - e pptx
Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells
More informationMicrosoft Word - windows server 2003 수동설치_non pro support_.doc
Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로
More informationÀ©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾
P a 02 r t Chapter 4 TCP Chapter 5 Chapter 6 UDP Chapter 7 Chapter 8 GUI C h a p t e r 04 TCP 1 3 1 2 3 TCP TCP TCP [ 4 2] listen connect send accept recv send recv [ 4 1] PC Internet Explorer HTTP HTTP
More informationPowerPoint 프레젠테이션
01 OpenGL 과 Modeling 01 OpenGL API 02 Rendering Pipeline 03 Modeling 01 OpenGL API 1. OpenGL API 설치및환경설정 2. OpenGL API 구조 2 01 1. OpenGL API 설치및환경설정 OpenGL API 의상대적위치 System Memory Graphics Application
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More information윈도우즈프로그래밍(1)
제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장
More informationPowerPoint 프레젠테이션
DEVELOPMENT ENVIRONMENT 2 MAKE Jo, Heeseung MAKE Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one 2
More informationPowerPoint 프레젠테이션
Development Environment 2 Jo, Heeseung make make Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one It
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More informationMicrosoft PowerPoint - chap05-제어문.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.
More informationMicrosoft PowerPoint - Install Guide[ ].ppt [호환 모드]
www.viewrun.co.kr User Guide (The Imaging Source devices) 2008. 09 Contents 1 2 3 4 Driver 설치 IC Capture(Image Viewer) 설치 IC Imaging Control(SDK) 설치 Visual Studio 환경설정 (6.0, 2005) 5 Troubleshooting 6 7
More information0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4
Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x
More informationChap 6: Graphs
그래프표현법 인접행렬 (Adjacency Matrix) 인접리스트 (Adjacency List) 인접다중리스트 (Adjacency Multilist) 6 장. 그래프 (Page ) 인접행렬 (Adjacency Matrix) n 개의 vertex 를갖는그래프 G 의인접행렬의구성 A[n][n] (u, v) E(G) 이면, A[u][v] = Otherwise, A[u][v]
More informationChapter 4. LISTS
6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립
More information2009년 상반기 사업계획
소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버
More information<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>
쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 통합개발환경 통합개발환경 (IDE: integrated development environment) 에디터 + 컴파일러 + 디버거 Visual C++: 이클립스 (eclipse): Dev-C++: 마이크로소프트제작 오픈소스프로젝트 오픈소스프로젝트 통합개발환경의종류 비주얼 C++(Visual C++)
More informationMicrosoft PowerPoint - 안드로이드 개발 환경 구축(170411)
Android 7.0 Nougat 개발환경구축 목차 기존방식 JAVA JDK 다운로드및설치 Android SDK 다운로드및설치 Eclipse 다운로드및설치 Eclipse와의연동 AVD 생성과 Android 프로젝트생성및실행 Android Studio 를이용한방식 JAVA JDK 다운로드및설치 Android Studio 설치및프로젝트생성 기존방식 (Android
More informationChapter #01 Subject
Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]
More informationTitle Here
INNOWATCH V3.0.4 IPLAYBACK 설치매뉴얼 작성일 : 2015/04/20 최근업데이트 : 2016/06/27 Software Version : 3.0.4 문서관리 수정내역 일자작업자버전수정내용 2015/05/14 김창희양식수정 2016/05/20 김진규 N/A Preinstall 내용수정, 문서양식변경 검토자 이름 이영상 지위 기술본부이사 Distribution
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationMicrosoft PowerPoint - [Practice #1] APM InstalI.ppt
Practice #1 APM Install 2005. 8. 31 Lee Seung-Bok http://hpclab.uos.ac.kr Contents 2 APM 소개 Apache 설치 PHP 설치 MySQL 설치기타사항 Q & A APM(Apache,, PHP, MySQL) 소개 3 Apache PHP 현재전세계에서가장보편적으로사용되고있는오픈소스웹서버안정성및우수한기능
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More informationPowerPoint 프레젠테이션
Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐
More information슬라이드 1
- 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.
More informationMicrosoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse
More information03장.스택.key
---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():
More informationNTD36HD Manual
Upnp 사용 D7 은 UPNP 를지원하여 D7 의네크워크에연결된 UPNP 기기에별다른설정없이연결하여, 유무선으로네트워크상의연결된 UPNP 기기의콘텐츠를재생할수있습니다. TV 화면의 브라우저, UPNP 를선택하면연결가능한 UPNP 기기가표시됩니다. 주의 - UPNP 기능사용시연결된 UPNP 기기의성능에따라서재생되지않는콘텐츠가있을수있습니다. NFS 사용 D7
More informationMicrosoft PowerPoint - chap-11.pptx
쉽게풀어쓴 C 언어 Express 제 11 장포인터 컴퓨터프로그래밍기초 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 컴퓨터프로그래밍기초 2 포인터란? 포인터 (pointer): 주소를가지고있는변수 컴퓨터프로그래밍기초 3 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다.
More informationInstall stm32cubemx and st-link utility
STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7
More information