- ÇöÀç À§Ä¡
- home > ÄÄÇ»ÅÍ¡¤ICT¡¤¾îÇÐ > ÄÄÇ»ÅÍ¡¤IT µµ¼ > ÇÁ·Î±×·¡¹Ö/¾ð¾î > ÀÔ¹®ÀÚ¸¦ À§ÇÑ º´·Ä ÇÁ·Î±×·¡¹Ö[Á¦ÀÌÆà]
º´·Ä ÇÁ·Î±×·¡¹ÖÀº ´õ ÀÌ»ó Àü¹®°¡µé¸¸À» À§ÇÑ ±â¼úÀÌ ¾Æ´Ï´Ù. ¿©·¯ºÐµéÀÌ Å¬·¯½ºÅͳª ¸ÖƼÄÚ¾î ÇÁ·Î¼¼¼ÀÇ °·ÂÇÑ ±â´ÉÀ» ÃæºÐÈ÷ »ç¿ëÇÏ°í ½Í´Ù¸é, ºÐ»ê ¸Þ¸ð¸® º´·Ä ÇÁ·Î±×·¡¹Ö°ú °øÀ¯ ¸Þ¸ð¸® º´·Ä ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ ¹è¿ö¾ß ÇÑ´Ù.
?Ã¥ÀÇ ÀϺΠ³»¿ëÀ» ¹Ì¸® Àо½Ç ¼ö ÀÖ½À´Ï´Ù. ¹Ì¸®º¸±â
?Ã¥ÀÇ ÀϺΠ³»¿ëÀ» ¹Ì¸® Àо½Ç ¼ö ÀÖ½À´Ï´Ù. ¹Ì¸®º¸±â
ÀúÀÚ: ÇÇÅÍ ÆÄüÄÚ Àú / ±è¼º¹Î ¿ª
CHAPTER 1 ¿Ö º´·Ä ÄÄÇ»ÆÃÀΰ¡?
1.1 ¼º´É Áõ°¡ÀÇ Çʿ伺 2
1.2 º´·Ä ½Ã½ºÅÛÀ» ±¸ÃàÇØ¾ß ÇÏ´Â ÀÌÀ¯ 3
1.3 º´·ÄÈ ÇÁ·Î±×·¡¹ÖÀÌ ÇÊ¿äÇÑ ÀÌÀ¯ 4
1.4 º´·ÄÈ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹æ¹ý 8
1.5 ¹è¿ï ³»¿ë 11
1.6 º´Çà, º´·Ä, ºÐ»ê 13
1.7 Ã¥ÀÇ ±¸¼º 14
1.8 ´çºÎÀÇ ¸» 14
1.9 ÀÌ Ã¥ÀÇ Ç¥±â ¹æ¹ý 15
1.10 ¿ä¾à 16
1.11 ¿¬½À¹®Á¦ 17
CHAPTER 2 º´·Ä Çϵå¿þ¾î¿Í º´·Ä ¼ÒÇÁÆ®¿þ¾î
2.1 ¾à°£ÀÇ ¹è°æ Áö½Ä 22
2.1.1 Æù ³ëÀ̸¸ ¾ÆÅ°ÅØó 22
2.1.2 ÇÁ·Î¼¼½º, ¸ÖƼŽºÅ·, ±×¸®°í ½º·¹µå 24
2.2 Æù ³ëÀ̸¸ ¸ðµ¨ÀÇ ¼öÁ¤ 26
2.2.1 ij½ÃÀÇ ±âº» °³³ä 26
2.2.2 ij½Ã ¸ÅÇÎ 29
2.2.3 ij½Ã¿Í ÇÁ·Î±×·¥: ¿¹Á¦ 30
2.2.4 °¡»ó ¸Þ¸ð¸® 32
2.2.5 ¸í·É¾î ·¹º§ º´·ÄÈ 35
2.2.6 Çϵå¿þ¾î ¸ÖƼ½º·¹µù 39
2.3 º´·Ä Çϵå¿þ¾î 40
2.3.1 SIMD ½Ã½ºÅÛ 40
2.3.2 MIMD ½Ã½ºÅÛ 44
2.3.3 ÀÎÅÍÄ¿³Ø¼Ç ³×Æ®¿öÅ© 48
2.3.4 ij½Ã ÀÏ°ü¼º 57
2.3.5 °øÀ¯ ¸Þ¸ð¸®¿Í ºÐ»ê ¸Þ¸ð¸® 61
2.4 º´·Ä ¼ÒÇÁÆ®¿þ¾î 62
2.4.1 °æ°í 63
2.4.2 ÇÁ·Î¼¼½º/½º·¹µåÀÇ Á¶Á¤ 63
2.4.3 °øÀ¯ ¸Þ¸ð¸® 65
2.4.4 ºÐ»ê ¸Þ¸ð¸® 71
2.4.5 ÇÏÀ̺긮µå ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö 75
2.5 ÀԷ°ú Ãâ·Â 76
2.6 ¼º´É 78
2.6.1 ½ºÇǵå¾÷°ú È¿À²¼º 78
2.6.2 ¾Ï´ÞÀÇ ¹ýÄ¢ 81
2.6.3 È®À强 83
2.6.4 ŸÀÌ¹Ö 84
2.7 º´·Ä ÇÁ·Î±×·¥ µðÀÚÀÎ 88
2.7.1 ¿¹Á¦ 89
2.8 º´·Ä ÇÁ·Î±×·¥ÀÇ ÀÛ¼º°ú ½ÇÇà 94
2.9 °¡Á¤ 94
2.10 ¿ä¾à 96
2.10.1 ½Ã¸®¾ó ½Ã½ºÅÛ 96
2.10.2 º´·Ä Çϵå¿þ¾î 98
2.10.3 º´·Ä ¼ÒÇÁÆ®¿þ¾î 100
2.10.4 ÀԷ°ú Ãâ·Â 102
2.10.5 ¼º´É 102
2.10.6 º´·Ä ÇÁ·Î±×·¥ ¼³°è 103
2.10.7 °¡Á¤ 104
2.11 ¿¬½À¹®Á¦ 104
CHAPTER 3 MPI¸¦ ÀÌ¿ëÇÑ ºÐ»ê ¸Þ¸ð¸® ÇÁ·Î±×·¡¹Ö
3.1 ½ÃÀÛÇϱâ 112
3.1.1 ÄÄÆÄÀÏ°ú ½ÇÇà 113
3.1.2 MPI ÇÁ·Î±×·¥ 115
3.1.3 MPI_Init°ú MPI_Finalize 116
3.1.4 Ä¿¹Â´ÏÄÉÀÌÅÍ, MPI_Comm_size¿Í MPI_Comm_rank 117
3.1.5 SPMD ÇÁ·Î±×·¥ 117
3.1.6 Åë½Å 118
3.1.7 MPI_Send 118
3.1.8 MPI_Recv 121
3.1.9 ¸Þ½ÃÁö ¸ÅĪ 121
3.1.10 status_p Àμö 123
3.1.11 MPI_Send¿Í MPI_RecvÀÇ µ¿ÀÛ ÀÇ¹Ì 124
3.1.12 ¾à°£ÀÇ ½É°¢ÇÑ ¹®Á¦ 126
3.2 MPI¸¦ »ç¿ëÇÑ »ç´Ù¸®²Ã ±ÔÄ¢ 126
3.2.1 »ç´Ù¸®²Ã ±ÔÄ¢ 126
3.2.2 »ç´Ù¸®²Ã ±ÔÄ¢ÀÇ º´·ÄÈ 128
3.3 I/OÀÇ Ã³¸® 131
3.3.1 Ãâ·Â 132
3.3.2 ÀÔ·Â 133
3.4 Ä÷ºÆ¼ºê Åë½Å 135
3.4.1 Æ®¸® ±¸Á¶ Åë½Å 135
3.4.2 MPI_Reduce 137
3.4.3 Ä÷ºÆ¼ºê Åë½Å ´ë ÀÏ´ëÀÏ Åë½Å 139
3.4.4 MPI_Allreduce 141
3.4.5 ºê·Îµåij½ºÆ® 141
3.4.6 µ¥ÀÌÅÍ ºÐ»ê 144
3.4.7 ½ºÄ³ÅÍ 146
3.4.8 °Ô´õ 148
3.4.9 Allgather 150
3.5 MPI ÆÄ»ý µ¥ÀÌÅÍ Å¸ÀÔ 153
3.6 ÇÁ·Î±×·¥ÀÇ ¼º´É Æò°¡ 157
3.6.1 ¼öÇà ½Ã°£ 159
3.6.2 °á°ú 162
3.6.3 ¼Óµµ Çâ»ó°ú È¿À²¼º 165
3.6.4 È®À强 166
3.7 º´·Ä Á¤·Ä ¾Ë°í¸®Áò 167
3.7.1 °£´ÜÇÑ ½Ã¸®¾ó Á¤·Ä ¾Ë°í¸®Áò 168
3.7.2 º´·Ä Ȧ¼ö-¦¼ö º¯È¯ Á¤·Ä 170
3.7.3 MPI ÇÁ·Î±×·¥¿¡¼ ¼¼ÀÌÇÁƼ 173
3.7.4 º´·Ä Ȧ¼ö-¦¼ö Á¤·ÄÀÇ ¸¶Áö¸· ¼³¸í 177
3.8 ¿ä¾à 179
3.9 ¿¬½À¹®Á¦ 185
3.10 ÇÁ·Î±×·¡¹Ö ¹®Á¦ 194
CHAPTER 4 Pthreads¸¦ ÀÌ¿ëÇÑ °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¡¹Ö
4.1 ÇÁ·Î¼¼½º, ½º·¹µå, ±×¸®°í pthreads 200
4.2 HELLO, WORLD 202
4.2.1 ½ÇÇà 202
4.2.2 Áغñ 204
4.2.3 ½º·¹µåÀÇ ½ÃÀÛ 206
4.2.4 ½º·¹µåÀÇ ½ÇÇà 208
4.2.5 ½º·¹µåÀÇ ÁßÁö 209
4.2.6 ¿¡·¯ üŷ 210
4.2.7 ½º·¹µåÀÇ ½ÃÀÛ¿¡ ´ëÇÑ ´Ù¸¥ Á¢±Ù 210
4.3 ¸ÅÆ®¸¯½º-º¤ÅÍ °ö¼À 211
4.4 Å©¸®Æ¼Äà ¼½¼Ç 214
4.5 ºñÁö-¿þÀÌÆà 218
4.6 ¹ÂÅؽº 222
4.7 ÇÁ·Îµà¼-ÄÁ½´¸Ó µ¿±âÈ¿Í ¼¼¸¶Æ÷¾î 227
4.8 ¹è¸®¾î¿Í Á¶°Ç º¯¼ö 232
4.8.1 ºñÁö-¿þÀÌÆðú ¹ÂÅؽº 233
4.8.2 ¼¼¸¶Æ÷¾î 234
4.8.3 Á¶°Ç º¯¼ö 236
4.8.4 Pthreads ¹è¸®¾î 239
4.9 Àбâ-¾²±â Àá±Ý 239
4.9.1 ¸µÅ©µå ¸®½ºÆ® ÇÔ¼ö 239
4.9.2 ¸ÖƼ½º·¹µå ¸µÅ©µå ¸®½ºÆ® 242
4.9.3 Pthreads Àбâ-¾²±â Àá±Ý 246
4.9.4 ¿©·¯ °¡Áö ±¸Çö¿¡ ´ëÇÑ ¼º´É 247
4.9.5 Àбâ-¾²±â Àá±ÝÀÇ ±¸Çö 249
4.10 ij½Ã, ij½Ã ÀÏ°ü¼º, ±×¸®°í °ÅÁþ °øÀ¯ 250
4.11 ½º·¹µå ¼¼ÀÌÇÁƼ 257
4.11.1 ¿Ã¹Ù¸£Áö ¾ÊÀº ÇÁ·Î±×·¥ÀÌ ¿Ã¹Ù¸¥ Ãâ·ÂÀ» ³¾ ¼ö ÀÖ´Ù 260
4.12 ¿ä¾à 261
4.13 ¿¬½À¹®Á¦ 264
4.14 ÇÁ·Î±×·¥ ¹®Á¦ 272
CHAPTER 5 OpenMP¸¦ »ç¿ëÇÑ °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¡¹Ö
5.1 ½ÃÀÛ 277
5.1.1 OpenMP ÇÁ·Î±×·¥ÀÇ ÄÄÆÄÀÏ°ú ½ÇÇà ¹æ¹ý 278
5.1.2 ÇÁ·Î±×·¥ 279
5.1.3 ¿À·ù üũ 283
5.2 »ç´Ù¸®²Ã ±ÔÄ¢ 284
5.2.1 ù ¹ø° openMP ¹öÀü 285
5.3 º¯¼öÀÇ ¹üÀ§ 290
5.4 °¨¼Ò Ŭ¶ó¿ìÁî 291
5.5 parallel for µð·ºÆ¼ºê 295
5.5.1 ÁÖÀÇ »çÇ× 297
5.5.2 µ¥ÀÌÅÍ ÀÇÁ¸¼º 298
5.5.3 ·çÇÁ¿¡ ÀÇÇÑ ÀÇÁ¸¼º ã±â 300
5.5.4 ÀÇ °è»ê 301
5.5.5 º¯¼ö ¹üÀ§ 304
5.6 OpenMP¿¡¼ ·çÇÁÀÇ ´Ù¸¥ ¿¹Á¦: Á¤·Ä 305
5.6.1 ¹öºí Á¤·Ä 305
5.6.2 Ȧ¼ö-¦¼ö º¯È¯ Á¤·Ä 307
5.7 ·çÇÁ ½ºÄÉÁÙ 310
5.7.1 schedule Ŭ¶ó¿ìÁî 312
5.7.2 static ½ºÄÉÁ٠ŸÀÔ 313
5.7.3 dynamic°ú guided ½ºÄÉÁ٠ŸÀÔ 314
5.7.4 runtime ½ºÄÉÁ٠ŸÀÔ 315
5.7.5 ¾î¶² ½ºÄÉÁÙÀ» »ç¿ëÇØ¾ß ÇÒ±î? 316
5.8 ÇÁ·Îµà¼¿Í ÄÁ½´¸Ó 317
5.8.1 ť 317
5.8.2 ¸Þ½ÃÁö ÆÐ½Ì 318
5.8.3 ¸Þ½ÃÁö Àü¼Û 319
5.8.4 ¸Þ½ÃÁö ¼ö½Å 319
5.8.5 Á¾·á °ËÃâ 320
5.8.6 ½ÃÀÛ 321
5.8.7 atomic µð·ºÆ¼ºê 322
5.8.8 Å©¸®Æ¼Äà ¼½¼Ç°ú Àá±Ý 323
5.8.9 ¸Þ½ÃÁö ÆÐ½Ì ÇÁ·Î±×·¥¿¡¼ Àá±ÝÀÇ »ç¿ë 326
5.8.10 critical µð·ºÆ¼ºê, atomic µð·ºÆ¼ºê, ȤÀº Àá±Ý? 327
5.8.11 ¸î °¡ÁöÀÇ ¹®Á¦Á¡ 328
5.9 ij½Ã, ij½Ã ÀÏ°ü¼º, °ÅÁþ °øÀ¯ 330
5.10 ½º·¹µå ¼¼ÀÌÇÁƼ 337
5.10.1 ¿Ã¹Ù¸£Áö ¾ÊÀº ÇÁ·Î±×·¥ÀÌ Á¤»óÀûÀÎ °á°ú¸¦ ¸¸µé¾î ³¾ ¼öµµ ÀÖ´Ù 340
5.11 Á¤¸® 341
5.12 ¿¬½À¹®Á¦ 346
5.13 ÇÁ·Î±×·¡¹Ö ¹®Á¦ 352
CHAPTER 6 º´·Ä ÇÁ·Î±×·¥ °³¹ß
6.1 µÎ °³ÀÇ n-body ¼Ö·ç¼Ç 357
6.1.1 ¹®Á¦ 358
6.1.2 µÎ °³ÀÇ ½Ã¸®¾ó ÇÁ·Î±×·¥ 359
6.1.3 ¼Ö·ç¼ÇÀÇ º´·ÄÈ 365
6.1.4 I/O 369
6.1.5 OpenMP¸¦ »ç¿ëÇÑ ±âº» ¼Ö·ç¼ÇÀÇ º´·ÄÈ 370
6.1.6 OpenMP¸¦ »ç¿ëÇÑ ¸®µà½º ¼Ö·ç¼ÇÀÇ º´·ÄÈ 373
6.1.7 OpenMP ÄÚµåÀÇ Æò°¡ 378
6.1.8 Pthreads¸¦ »ç¿ëÇÑ ¼Ö·ç¼ÇÀÇ º´·ÄÈ 380
6.1.9 MPI¸¦ »ç¿ëÇÑ ±âº» ¼Ö·ç¼ÇÀÇ º´·ÄÈ 381
6.1.10 MPI¸¦ »ç¿ëÇÑ ¸®µà½º ¼Ö·ç¼ÇÀÇ º´·ÄÈ 384
6.1.11 MPI ¼Ö·ç¼ÇÀÇ ¼º´É 391
6.2 Æ®¸® °Ë»ö 393
6.2.1 Àç±ÍÀû ±íÀÌ-¿ì¼± °Ë»ö 396
6.2.2 ºñÀç±ÍÀû ±íÀÌ-¿ì¼± °Ë»ö 397
6.2.3 ½Ã¸®¾ó ±¸ÇöÀ» À§ÇÑ ÀÚ·á ±¸Á¶ 400
6.2.4 ½Ã¸®¾ó ±¸ÇöÀÇ ¼º´É 402
6.2.5 Æ®¸® °Ë»öÀÇ º´·ÄÈ 402
6.2.6 pthreads¸¦ »ç¿ëÇÑ Æ®¸® °Ë»öÀÇ Á¤Àû º´·ÄÈ 405
6.2.7 pthreads¸¦ »ç¿ëÇÑ Æ®¸® °Ë»öÀÇ µ¿Àû º´·ÄÈ 408
6.2.8 Pthreads Æ®¸®-°Ë»ö ÇÁ·Î±×·¥ÀÇ Æò°¡ 413
6.2.9 OpenMP¸¦ »ç¿ëÇÑ Æ®¸®-°Ë»ö ÇÁ·Î±×·¥ÀÇ º´·ÄÈ 414
6.2.10 OpenMP ±¸ÇöÀÇ ¼º´É 418
6.2.11 MPI¿Í Á¤Àû ÆÄƼ¼Å´×À» »ç¿ëÇÑ Æ®¸® °Ë»öÀÇ ±¸Çö 419
6.2.12 MPI¿Í µ¿Àû ÆÄƼ¼Å´×À» »ç¿ëÇÑ Æ®¸® °Ë»öÀÇ ±¸Çö 429
6.3 Á¶¾ð 440
6.4 ¾î¶² API°¡ ÃÖ¼±Àΰ¡? 440
6.5 ¿ä¾à 441
6.5.1 Pthreads¿Í OpenMP 443
6.5.2 MPI 444
6.6 ¿¬½À¹®Á¦ 448
6.7 ÇÁ·Î±×·¡¹Ö ¿¬½À 461
CHAPTER 7 ±× ´ÙÀ½¿¡ ÇØ¾ß ÇÒ ÀÏ
Âü°í¹®Çå 469
ã¾Æº¸±â 473
1.1 ¼º´É Áõ°¡ÀÇ Çʿ伺 2
1.2 º´·Ä ½Ã½ºÅÛÀ» ±¸ÃàÇØ¾ß ÇÏ´Â ÀÌÀ¯ 3
1.3 º´·ÄÈ ÇÁ·Î±×·¡¹ÖÀÌ ÇÊ¿äÇÑ ÀÌÀ¯ 4
1.4 º´·ÄÈ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹æ¹ý 8
1.5 ¹è¿ï ³»¿ë 11
1.6 º´Çà, º´·Ä, ºÐ»ê 13
1.7 Ã¥ÀÇ ±¸¼º 14
1.8 ´çºÎÀÇ ¸» 14
1.9 ÀÌ Ã¥ÀÇ Ç¥±â ¹æ¹ý 15
1.10 ¿ä¾à 16
1.11 ¿¬½À¹®Á¦ 17
CHAPTER 2 º´·Ä Çϵå¿þ¾î¿Í º´·Ä ¼ÒÇÁÆ®¿þ¾î
2.1 ¾à°£ÀÇ ¹è°æ Áö½Ä 22
2.1.1 Æù ³ëÀ̸¸ ¾ÆÅ°ÅØó 22
2.1.2 ÇÁ·Î¼¼½º, ¸ÖƼŽºÅ·, ±×¸®°í ½º·¹µå 24
2.2 Æù ³ëÀ̸¸ ¸ðµ¨ÀÇ ¼öÁ¤ 26
2.2.1 ij½ÃÀÇ ±âº» °³³ä 26
2.2.2 ij½Ã ¸ÅÇÎ 29
2.2.3 ij½Ã¿Í ÇÁ·Î±×·¥: ¿¹Á¦ 30
2.2.4 °¡»ó ¸Þ¸ð¸® 32
2.2.5 ¸í·É¾î ·¹º§ º´·ÄÈ 35
2.2.6 Çϵå¿þ¾î ¸ÖƼ½º·¹µù 39
2.3 º´·Ä Çϵå¿þ¾î 40
2.3.1 SIMD ½Ã½ºÅÛ 40
2.3.2 MIMD ½Ã½ºÅÛ 44
2.3.3 ÀÎÅÍÄ¿³Ø¼Ç ³×Æ®¿öÅ© 48
2.3.4 ij½Ã ÀÏ°ü¼º 57
2.3.5 °øÀ¯ ¸Þ¸ð¸®¿Í ºÐ»ê ¸Þ¸ð¸® 61
2.4 º´·Ä ¼ÒÇÁÆ®¿þ¾î 62
2.4.1 °æ°í 63
2.4.2 ÇÁ·Î¼¼½º/½º·¹µåÀÇ Á¶Á¤ 63
2.4.3 °øÀ¯ ¸Þ¸ð¸® 65
2.4.4 ºÐ»ê ¸Þ¸ð¸® 71
2.4.5 ÇÏÀ̺긮µå ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö 75
2.5 ÀԷ°ú Ãâ·Â 76
2.6 ¼º´É 78
2.6.1 ½ºÇǵå¾÷°ú È¿À²¼º 78
2.6.2 ¾Ï´ÞÀÇ ¹ýÄ¢ 81
2.6.3 È®À强 83
2.6.4 ŸÀÌ¹Ö 84
2.7 º´·Ä ÇÁ·Î±×·¥ µðÀÚÀÎ 88
2.7.1 ¿¹Á¦ 89
2.8 º´·Ä ÇÁ·Î±×·¥ÀÇ ÀÛ¼º°ú ½ÇÇà 94
2.9 °¡Á¤ 94
2.10 ¿ä¾à 96
2.10.1 ½Ã¸®¾ó ½Ã½ºÅÛ 96
2.10.2 º´·Ä Çϵå¿þ¾î 98
2.10.3 º´·Ä ¼ÒÇÁÆ®¿þ¾î 100
2.10.4 ÀԷ°ú Ãâ·Â 102
2.10.5 ¼º´É 102
2.10.6 º´·Ä ÇÁ·Î±×·¥ ¼³°è 103
2.10.7 °¡Á¤ 104
2.11 ¿¬½À¹®Á¦ 104
CHAPTER 3 MPI¸¦ ÀÌ¿ëÇÑ ºÐ»ê ¸Þ¸ð¸® ÇÁ·Î±×·¡¹Ö
3.1 ½ÃÀÛÇϱâ 112
3.1.1 ÄÄÆÄÀÏ°ú ½ÇÇà 113
3.1.2 MPI ÇÁ·Î±×·¥ 115
3.1.3 MPI_Init°ú MPI_Finalize 116
3.1.4 Ä¿¹Â´ÏÄÉÀÌÅÍ, MPI_Comm_size¿Í MPI_Comm_rank 117
3.1.5 SPMD ÇÁ·Î±×·¥ 117
3.1.6 Åë½Å 118
3.1.7 MPI_Send 118
3.1.8 MPI_Recv 121
3.1.9 ¸Þ½ÃÁö ¸ÅĪ 121
3.1.10 status_p Àμö 123
3.1.11 MPI_Send¿Í MPI_RecvÀÇ µ¿ÀÛ ÀÇ¹Ì 124
3.1.12 ¾à°£ÀÇ ½É°¢ÇÑ ¹®Á¦ 126
3.2 MPI¸¦ »ç¿ëÇÑ »ç´Ù¸®²Ã ±ÔÄ¢ 126
3.2.1 »ç´Ù¸®²Ã ±ÔÄ¢ 126
3.2.2 »ç´Ù¸®²Ã ±ÔÄ¢ÀÇ º´·ÄÈ 128
3.3 I/OÀÇ Ã³¸® 131
3.3.1 Ãâ·Â 132
3.3.2 ÀÔ·Â 133
3.4 Ä÷ºÆ¼ºê Åë½Å 135
3.4.1 Æ®¸® ±¸Á¶ Åë½Å 135
3.4.2 MPI_Reduce 137
3.4.3 Ä÷ºÆ¼ºê Åë½Å ´ë ÀÏ´ëÀÏ Åë½Å 139
3.4.4 MPI_Allreduce 141
3.4.5 ºê·Îµåij½ºÆ® 141
3.4.6 µ¥ÀÌÅÍ ºÐ»ê 144
3.4.7 ½ºÄ³ÅÍ 146
3.4.8 °Ô´õ 148
3.4.9 Allgather 150
3.5 MPI ÆÄ»ý µ¥ÀÌÅÍ Å¸ÀÔ 153
3.6 ÇÁ·Î±×·¥ÀÇ ¼º´É Æò°¡ 157
3.6.1 ¼öÇà ½Ã°£ 159
3.6.2 °á°ú 162
3.6.3 ¼Óµµ Çâ»ó°ú È¿À²¼º 165
3.6.4 È®À强 166
3.7 º´·Ä Á¤·Ä ¾Ë°í¸®Áò 167
3.7.1 °£´ÜÇÑ ½Ã¸®¾ó Á¤·Ä ¾Ë°í¸®Áò 168
3.7.2 º´·Ä Ȧ¼ö-¦¼ö º¯È¯ Á¤·Ä 170
3.7.3 MPI ÇÁ·Î±×·¥¿¡¼ ¼¼ÀÌÇÁƼ 173
3.7.4 º´·Ä Ȧ¼ö-¦¼ö Á¤·ÄÀÇ ¸¶Áö¸· ¼³¸í 177
3.8 ¿ä¾à 179
3.9 ¿¬½À¹®Á¦ 185
3.10 ÇÁ·Î±×·¡¹Ö ¹®Á¦ 194
CHAPTER 4 Pthreads¸¦ ÀÌ¿ëÇÑ °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¡¹Ö
4.1 ÇÁ·Î¼¼½º, ½º·¹µå, ±×¸®°í pthreads 200
4.2 HELLO, WORLD 202
4.2.1 ½ÇÇà 202
4.2.2 Áغñ 204
4.2.3 ½º·¹µåÀÇ ½ÃÀÛ 206
4.2.4 ½º·¹µåÀÇ ½ÇÇà 208
4.2.5 ½º·¹µåÀÇ ÁßÁö 209
4.2.6 ¿¡·¯ üŷ 210
4.2.7 ½º·¹µåÀÇ ½ÃÀÛ¿¡ ´ëÇÑ ´Ù¸¥ Á¢±Ù 210
4.3 ¸ÅÆ®¸¯½º-º¤ÅÍ °ö¼À 211
4.4 Å©¸®Æ¼Äà ¼½¼Ç 214
4.5 ºñÁö-¿þÀÌÆà 218
4.6 ¹ÂÅؽº 222
4.7 ÇÁ·Îµà¼-ÄÁ½´¸Ó µ¿±âÈ¿Í ¼¼¸¶Æ÷¾î 227
4.8 ¹è¸®¾î¿Í Á¶°Ç º¯¼ö 232
4.8.1 ºñÁö-¿þÀÌÆðú ¹ÂÅؽº 233
4.8.2 ¼¼¸¶Æ÷¾î 234
4.8.3 Á¶°Ç º¯¼ö 236
4.8.4 Pthreads ¹è¸®¾î 239
4.9 Àбâ-¾²±â Àá±Ý 239
4.9.1 ¸µÅ©µå ¸®½ºÆ® ÇÔ¼ö 239
4.9.2 ¸ÖƼ½º·¹µå ¸µÅ©µå ¸®½ºÆ® 242
4.9.3 Pthreads Àбâ-¾²±â Àá±Ý 246
4.9.4 ¿©·¯ °¡Áö ±¸Çö¿¡ ´ëÇÑ ¼º´É 247
4.9.5 Àбâ-¾²±â Àá±ÝÀÇ ±¸Çö 249
4.10 ij½Ã, ij½Ã ÀÏ°ü¼º, ±×¸®°í °ÅÁþ °øÀ¯ 250
4.11 ½º·¹µå ¼¼ÀÌÇÁƼ 257
4.11.1 ¿Ã¹Ù¸£Áö ¾ÊÀº ÇÁ·Î±×·¥ÀÌ ¿Ã¹Ù¸¥ Ãâ·ÂÀ» ³¾ ¼ö ÀÖ´Ù 260
4.12 ¿ä¾à 261
4.13 ¿¬½À¹®Á¦ 264
4.14 ÇÁ·Î±×·¥ ¹®Á¦ 272
CHAPTER 5 OpenMP¸¦ »ç¿ëÇÑ °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¡¹Ö
5.1 ½ÃÀÛ 277
5.1.1 OpenMP ÇÁ·Î±×·¥ÀÇ ÄÄÆÄÀÏ°ú ½ÇÇà ¹æ¹ý 278
5.1.2 ÇÁ·Î±×·¥ 279
5.1.3 ¿À·ù üũ 283
5.2 »ç´Ù¸®²Ã ±ÔÄ¢ 284
5.2.1 ù ¹ø° openMP ¹öÀü 285
5.3 º¯¼öÀÇ ¹üÀ§ 290
5.4 °¨¼Ò Ŭ¶ó¿ìÁî 291
5.5 parallel for µð·ºÆ¼ºê 295
5.5.1 ÁÖÀÇ »çÇ× 297
5.5.2 µ¥ÀÌÅÍ ÀÇÁ¸¼º 298
5.5.3 ·çÇÁ¿¡ ÀÇÇÑ ÀÇÁ¸¼º ã±â 300
5.5.4 ÀÇ °è»ê 301
5.5.5 º¯¼ö ¹üÀ§ 304
5.6 OpenMP¿¡¼ ·çÇÁÀÇ ´Ù¸¥ ¿¹Á¦: Á¤·Ä 305
5.6.1 ¹öºí Á¤·Ä 305
5.6.2 Ȧ¼ö-¦¼ö º¯È¯ Á¤·Ä 307
5.7 ·çÇÁ ½ºÄÉÁÙ 310
5.7.1 schedule Ŭ¶ó¿ìÁî 312
5.7.2 static ½ºÄÉÁ٠ŸÀÔ 313
5.7.3 dynamic°ú guided ½ºÄÉÁ٠ŸÀÔ 314
5.7.4 runtime ½ºÄÉÁ٠ŸÀÔ 315
5.7.5 ¾î¶² ½ºÄÉÁÙÀ» »ç¿ëÇØ¾ß ÇÒ±î? 316
5.8 ÇÁ·Îµà¼¿Í ÄÁ½´¸Ó 317
5.8.1 ť 317
5.8.2 ¸Þ½ÃÁö ÆÐ½Ì 318
5.8.3 ¸Þ½ÃÁö Àü¼Û 319
5.8.4 ¸Þ½ÃÁö ¼ö½Å 319
5.8.5 Á¾·á °ËÃâ 320
5.8.6 ½ÃÀÛ 321
5.8.7 atomic µð·ºÆ¼ºê 322
5.8.8 Å©¸®Æ¼Äà ¼½¼Ç°ú Àá±Ý 323
5.8.9 ¸Þ½ÃÁö ÆÐ½Ì ÇÁ·Î±×·¥¿¡¼ Àá±ÝÀÇ »ç¿ë 326
5.8.10 critical µð·ºÆ¼ºê, atomic µð·ºÆ¼ºê, ȤÀº Àá±Ý? 327
5.8.11 ¸î °¡ÁöÀÇ ¹®Á¦Á¡ 328
5.9 ij½Ã, ij½Ã ÀÏ°ü¼º, °ÅÁþ °øÀ¯ 330
5.10 ½º·¹µå ¼¼ÀÌÇÁƼ 337
5.10.1 ¿Ã¹Ù¸£Áö ¾ÊÀº ÇÁ·Î±×·¥ÀÌ Á¤»óÀûÀÎ °á°ú¸¦ ¸¸µé¾î ³¾ ¼öµµ ÀÖ´Ù 340
5.11 Á¤¸® 341
5.12 ¿¬½À¹®Á¦ 346
5.13 ÇÁ·Î±×·¡¹Ö ¹®Á¦ 352
CHAPTER 6 º´·Ä ÇÁ·Î±×·¥ °³¹ß
6.1 µÎ °³ÀÇ n-body ¼Ö·ç¼Ç 357
6.1.1 ¹®Á¦ 358
6.1.2 µÎ °³ÀÇ ½Ã¸®¾ó ÇÁ·Î±×·¥ 359
6.1.3 ¼Ö·ç¼ÇÀÇ º´·ÄÈ 365
6.1.4 I/O 369
6.1.5 OpenMP¸¦ »ç¿ëÇÑ ±âº» ¼Ö·ç¼ÇÀÇ º´·ÄÈ 370
6.1.6 OpenMP¸¦ »ç¿ëÇÑ ¸®µà½º ¼Ö·ç¼ÇÀÇ º´·ÄÈ 373
6.1.7 OpenMP ÄÚµåÀÇ Æò°¡ 378
6.1.8 Pthreads¸¦ »ç¿ëÇÑ ¼Ö·ç¼ÇÀÇ º´·ÄÈ 380
6.1.9 MPI¸¦ »ç¿ëÇÑ ±âº» ¼Ö·ç¼ÇÀÇ º´·ÄÈ 381
6.1.10 MPI¸¦ »ç¿ëÇÑ ¸®µà½º ¼Ö·ç¼ÇÀÇ º´·ÄÈ 384
6.1.11 MPI ¼Ö·ç¼ÇÀÇ ¼º´É 391
6.2 Æ®¸® °Ë»ö 393
6.2.1 Àç±ÍÀû ±íÀÌ-¿ì¼± °Ë»ö 396
6.2.2 ºñÀç±ÍÀû ±íÀÌ-¿ì¼± °Ë»ö 397
6.2.3 ½Ã¸®¾ó ±¸ÇöÀ» À§ÇÑ ÀÚ·á ±¸Á¶ 400
6.2.4 ½Ã¸®¾ó ±¸ÇöÀÇ ¼º´É 402
6.2.5 Æ®¸® °Ë»öÀÇ º´·ÄÈ 402
6.2.6 pthreads¸¦ »ç¿ëÇÑ Æ®¸® °Ë»öÀÇ Á¤Àû º´·ÄÈ 405
6.2.7 pthreads¸¦ »ç¿ëÇÑ Æ®¸® °Ë»öÀÇ µ¿Àû º´·ÄÈ 408
6.2.8 Pthreads Æ®¸®-°Ë»ö ÇÁ·Î±×·¥ÀÇ Æò°¡ 413
6.2.9 OpenMP¸¦ »ç¿ëÇÑ Æ®¸®-°Ë»ö ÇÁ·Î±×·¥ÀÇ º´·ÄÈ 414
6.2.10 OpenMP ±¸ÇöÀÇ ¼º´É 418
6.2.11 MPI¿Í Á¤Àû ÆÄƼ¼Å´×À» »ç¿ëÇÑ Æ®¸® °Ë»öÀÇ ±¸Çö 419
6.2.12 MPI¿Í µ¿Àû ÆÄƼ¼Å´×À» »ç¿ëÇÑ Æ®¸® °Ë»öÀÇ ±¸Çö 429
6.3 Á¶¾ð 440
6.4 ¾î¶² API°¡ ÃÖ¼±Àΰ¡? 440
6.5 ¿ä¾à 441
6.5.1 Pthreads¿Í OpenMP 443
6.5.2 MPI 444
6.6 ¿¬½À¹®Á¦ 448
6.7 ÇÁ·Î±×·¡¹Ö ¿¬½À 461
CHAPTER 7 ±× ´ÙÀ½¿¡ ÇØ¾ß ÇÒ ÀÏ
Âü°í¹®Çå 469
ã¾Æº¸±â 473
MPI, Pthreads, ±×¸®°í OpenMP¸¦ ÀÌ¿ëÇÑ º´·Ä ÇÁ·Î±×·¡¹Ö ¿Ïº® °¡À̵å!
È¿À²Àû º´·Ä ÇÁ·Î±×·¡¹Ö¿¡ °üÇÑ ¿Ïº®ÇÑ Æ©Å丮¾ó!
»÷ÇÁ¶õ½Ã½ºÄÚ ´ëÇÐÀ» ºñ·ÔÇÑ ¼¼°è À¯¸í ´ëÇÐ ±³Àç·Î ¼±Á¤!
º´·Ä ÇÁ·Î±×·¡¹ÖÀº ´õ ÀÌ»ó Àü¹®°¡µé¸¸À» À§ÇÑ ±â¼úÀÌ ¾Æ´Ï´Ù. ¿©·¯ºÐµéÀÌ Å¬·¯½ºÅͳª ¸ÖƼÄÚ¾î ÇÁ·Î¼¼¼ÀÇ °·ÂÇÑ ±â´ÉÀ» ÃæºÐÈ÷ »ç¿ëÇÏ°í ½Í´Ù¸é, ºÐ»ê ¸Þ¸ð¸® º´·Ä ÇÁ·Î±×·¡¹Ö°ú °øÀ¯ ¸Þ¸ð¸® º´·Ä ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ ¹è¿ö¾ß ÇÑ´Ù.
¡¶ÀÔ¹®ÀÚ¸¦ À§ÇÑ º´·Ä ÇÁ·Î±×·¡¹Ö¡·Àº ¿©·¯ºÐµéÀÌ MPI, Pthreads, OpenMP¸¦ »ç¿ëÇÏ¿© È¿À²ÀûÀÎ º´·Ä ÇÁ·Î±×·¥À» °³¹ßÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÏ°í ÀÖ´Ù. ÇлýÀÌµç ½Ç¹«¸¦ ÇÏ´Â Àü¹®°¡ÀÌµç »ó°ü¾øÀÌ ÇÇÅÍ ÆÄüÄÚÀÇ ÀÌ »õ·Î¿î Ã¥Àº ¿©·¯ºÐµé¿¡°Ô ºÐ»ê°ú °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¥ÀÇ ¼º´ÉÀ» ¾î¶»°Ô ¼³°èÇÏ°í, µð¹ö±ëÇϸç, Æò°¡ÇÏ´ÂÁö ±× ¹æ¹ýÀ» ¾Ë·Á ÁÙ °ÍÀÌ´Ù.
¡á Æ©Å丮¾óÀ» »ç¿ëÇÏ¿© ÀÛÀº ÇÁ·Î±×·¡¹Ö ¿¹Á¦·Î ½ÃÀÛÇؼ Á» ´õ ±Ô¸ð°¡ Å« ¿¹Á¦µéÀ» ±¸ÃàÇÑ´Ù.
¡á ºÐ»ê°ú °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¥À» ¼³°èÇÏ°í, µð¹ö±ëÇϸç, Æò°¡ÇÏ´Â µ¥ ÃÊÁ¡À» ¸ÂÃá´Ù.
¡á MPI, Pthreads, ±×¸®°í OpenMP ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» »ç¿ëÇÏ¿© º´·Ä ÇÁ·Î±×·¥¿¡ ´ëÇÑ °³¹ßÀ» °Á¶ÇÑ´Ù.
1ÀåÀº º´·Ä ÄÄÇ»ÆÃÀÌ ÄÄÇ»ÅÍ ºÐ¾ß¿¡¼ Áß¿äÇÑ ¿ªÇÒÀ» ÇÏ´Â ÀÌÀ¯¿¡ ´ëÇØ »ó´ëÀûÀ¸·Î ´ú ±â¼úÀûÀ¸·Î ¼³¸íÇÏ°í ÀÖ´Ù. ¶Ç, º´·Ä ½Ã½ºÅÛ°ú º´·Ä ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ °£´ÜÇÏ°Ô ¼Ò°³ÇÏ°í ÀÖ´Ù. 2ÀåÀº ÄÄÇ»ÅÍ Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ ±â¼úÀû ¹è°æ Áö½ÄÀ» Á¦°øÇÑ´Ù. 3Àå, 4Àå, ±×¸®°í 5ÀåÀº MPI, Pthreads, ±×¸®°í OpenMP¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹ÖÀ» ¼Ò°³ÇÏ°í ÀÖÀ¸¸ç, 6Àå¿¡¼´Â µÎ °³ÀÇ Å« ÇÁ·Î±×·¥À» °³¹ßÇÑ´Ù.
Çϳª´Â º´·Ä n-body ¼Ö·ç¼ÇÀÌ°í, ´Ù¸¥ Çϳª´Â º´·Ä Æ®¸® °Ë»öÀÌ´Ù. ÀÌ µÎ ÇÁ·Î±×·¥Àº ¼¼ °³ÀÇ API¸¦ ¸ðµÎ »ç¿ëÇؼ °³¹ßÇÑ´Ù. 7ÀåÀº ´Ù¾çÇÑ Ãø¸éÀÇ º´·Ä ÄÄÇ»Æÿ¡ ´ëÇØ Ãß°¡ÀûÀÎ Á¤º¸¸¦ °£·«ÇÏ°Ô ´Ù·ç°í ÀÖ´Ù. ÀÌ Ã¥Àº C ¾ð¾î¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¥À» °³¹ßÇϴµ¥, ±× ÀÌÀ¯´Â ÀÌ ¼¼ °¡Áö API°¡ ¸ðµÎ C ¾ð¾î ÀÎÅÍÆäÀ̽º¸¦ °®°í ÀÖÀ¸¸ç, C ¾ð¾î´Â »ç¿ëÇϱ⿡ »ó´çÈ÷ °£´ÜÇÑ ¾ð¾îÀÌ°í ¹è¿ì±âµµ »ó´ëÀûÀ¸·Î ½¬¿î ¾ð¾îÀ̱⠶§¹®ÀÌ´Ù. C ¾ð¾îÀÇ Á¦¾î ±¸Á¶¿¡ ´ëÇØ Àͼ÷ÇÑ C À̳ª ÀÚ¹Ù °³¹ßÀڵ鵵 ¾î·Á¿ò ¾øÀÌ ÀÐÀ» ¼ö ÀÖ´Ù.
È¿À²Àû º´·Ä ÇÁ·Î±×·¡¹Ö¿¡ °üÇÑ ¿Ïº®ÇÑ Æ©Å丮¾ó!
»÷ÇÁ¶õ½Ã½ºÄÚ ´ëÇÐÀ» ºñ·ÔÇÑ ¼¼°è À¯¸í ´ëÇÐ ±³Àç·Î ¼±Á¤!
º´·Ä ÇÁ·Î±×·¡¹ÖÀº ´õ ÀÌ»ó Àü¹®°¡µé¸¸À» À§ÇÑ ±â¼úÀÌ ¾Æ´Ï´Ù. ¿©·¯ºÐµéÀÌ Å¬·¯½ºÅͳª ¸ÖƼÄÚ¾î ÇÁ·Î¼¼¼ÀÇ °·ÂÇÑ ±â´ÉÀ» ÃæºÐÈ÷ »ç¿ëÇÏ°í ½Í´Ù¸é, ºÐ»ê ¸Þ¸ð¸® º´·Ä ÇÁ·Î±×·¡¹Ö°ú °øÀ¯ ¸Þ¸ð¸® º´·Ä ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ ¹è¿ö¾ß ÇÑ´Ù.
¡¶ÀÔ¹®ÀÚ¸¦ À§ÇÑ º´·Ä ÇÁ·Î±×·¡¹Ö¡·Àº ¿©·¯ºÐµéÀÌ MPI, Pthreads, OpenMP¸¦ »ç¿ëÇÏ¿© È¿À²ÀûÀÎ º´·Ä ÇÁ·Î±×·¥À» °³¹ßÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÏ°í ÀÖ´Ù. ÇлýÀÌµç ½Ç¹«¸¦ ÇÏ´Â Àü¹®°¡ÀÌµç »ó°ü¾øÀÌ ÇÇÅÍ ÆÄüÄÚÀÇ ÀÌ »õ·Î¿î Ã¥Àº ¿©·¯ºÐµé¿¡°Ô ºÐ»ê°ú °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¥ÀÇ ¼º´ÉÀ» ¾î¶»°Ô ¼³°èÇÏ°í, µð¹ö±ëÇϸç, Æò°¡ÇÏ´ÂÁö ±× ¹æ¹ýÀ» ¾Ë·Á ÁÙ °ÍÀÌ´Ù.
¡á Æ©Å丮¾óÀ» »ç¿ëÇÏ¿© ÀÛÀº ÇÁ·Î±×·¡¹Ö ¿¹Á¦·Î ½ÃÀÛÇؼ Á» ´õ ±Ô¸ð°¡ Å« ¿¹Á¦µéÀ» ±¸ÃàÇÑ´Ù.
¡á ºÐ»ê°ú °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¥À» ¼³°èÇÏ°í, µð¹ö±ëÇϸç, Æò°¡ÇÏ´Â µ¥ ÃÊÁ¡À» ¸ÂÃá´Ù.
¡á MPI, Pthreads, ±×¸®°í OpenMP ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» »ç¿ëÇÏ¿© º´·Ä ÇÁ·Î±×·¥¿¡ ´ëÇÑ °³¹ßÀ» °Á¶ÇÑ´Ù.
1ÀåÀº º´·Ä ÄÄÇ»ÆÃÀÌ ÄÄÇ»ÅÍ ºÐ¾ß¿¡¼ Áß¿äÇÑ ¿ªÇÒÀ» ÇÏ´Â ÀÌÀ¯¿¡ ´ëÇØ »ó´ëÀûÀ¸·Î ´ú ±â¼úÀûÀ¸·Î ¼³¸íÇÏ°í ÀÖ´Ù. ¶Ç, º´·Ä ½Ã½ºÅÛ°ú º´·Ä ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ °£´ÜÇÏ°Ô ¼Ò°³ÇÏ°í ÀÖ´Ù. 2ÀåÀº ÄÄÇ»ÅÍ Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ ±â¼úÀû ¹è°æ Áö½ÄÀ» Á¦°øÇÑ´Ù. 3Àå, 4Àå, ±×¸®°í 5ÀåÀº MPI, Pthreads, ±×¸®°í OpenMP¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹ÖÀ» ¼Ò°³ÇÏ°í ÀÖÀ¸¸ç, 6Àå¿¡¼´Â µÎ °³ÀÇ Å« ÇÁ·Î±×·¥À» °³¹ßÇÑ´Ù.
Çϳª´Â º´·Ä n-body ¼Ö·ç¼ÇÀÌ°í, ´Ù¸¥ Çϳª´Â º´·Ä Æ®¸® °Ë»öÀÌ´Ù. ÀÌ µÎ ÇÁ·Î±×·¥Àº ¼¼ °³ÀÇ API¸¦ ¸ðµÎ »ç¿ëÇؼ °³¹ßÇÑ´Ù. 7ÀåÀº ´Ù¾çÇÑ Ãø¸éÀÇ º´·Ä ÄÄÇ»Æÿ¡ ´ëÇØ Ãß°¡ÀûÀÎ Á¤º¸¸¦ °£·«ÇÏ°Ô ´Ù·ç°í ÀÖ´Ù. ÀÌ Ã¥Àº C ¾ð¾î¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¥À» °³¹ßÇϴµ¥, ±× ÀÌÀ¯´Â ÀÌ ¼¼ °¡Áö API°¡ ¸ðµÎ C ¾ð¾î ÀÎÅÍÆäÀ̽º¸¦ °®°í ÀÖÀ¸¸ç, C ¾ð¾î´Â »ç¿ëÇϱ⿡ »ó´çÈ÷ °£´ÜÇÑ ¾ð¾îÀÌ°í ¹è¿ì±âµµ »ó´ëÀûÀ¸·Î ½¬¿î ¾ð¾îÀ̱⠶§¹®ÀÌ´Ù. C ¾ð¾îÀÇ Á¦¾î ±¸Á¶¿¡ ´ëÇØ Àͼ÷ÇÑ C À̳ª ÀÚ¹Ù °³¹ßÀڵ鵵 ¾î·Á¿ò ¾øÀÌ ÀÐÀ» ¼ö ÀÖ´Ù.