« Previous : 1 : 2 : 3 : 4 : 5 : ... 8 : Next »

리눅스 타임서버 설정

로컬 네트워크의 특정 머신을 타임서버로 설정하기

[서버]
1. 아래 파일중 하나를 열고 disable = yes로 변경
/etc/xinetd.d/time-dgram (udp)
/etc/xinetd.d/time-stream (tcp)

2. 서버 시작
/etc/rc.d/init.d/xinetd restart

[클라이언트]
1. 동기화하기
rdate -s -u 서버주소


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/09/11 17:53 2009/09/11 17:53
,
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/146

Leave a comment

리눅스 NFS 설정하기

출처 : http://www.theeye.pe.kr/entry/%B0%A3%B4%DC-%C1%A4%B8%AE-%B8%AE%B4%AA%BD%BA-NFS-%BC%B3%C1%A4%C7%CF%B1%E2?category=3

이번에는 NFS(Network File System)의 설정에 대해 간단히 정리만 하겠습니다;;

처음 설정 하시는 분들에게는 별로 적합하지 않은 메뉴얼이 될것 같네요.

HOST 서버 설정 ----------------------------------------------------------------------------------------------------
/etc/exports 설정

/home/nfs 192.168.0.0/24(rw,all_squash,insecure,sync,anonuid=99,anongid=99)

첫번째 /home/nfs는 외부에 마운트를 허용할 디렉토리임
두번째 네트워크 주소는 접근을 허용할 호스트 범위임

/etc/sysconfig/nfs 설정
STATD_PORT=4001
LOCKD_TCPPORT
=4002
LOCKD_UDPPORT
=4002
MOUNTD_PORT
=4003


데몬 실행 (ntsysv등에서 기본 실행으로 등록할 것)
[root@Theeye /]# service portmap start
[root@Theeye /]# service nfs start
[root@Theeye /]# service nfslock start


방화벽을 사용시 다음의 포트를 열어준다.
111:tcp 111:udp 2049:tcp 2049:udp 4001-4003:tcp 4001-4003:udp


다음의 명령어로 데몬이 제대로 실행중인지 확인한다.
[root@Theeye /]# rpcinfo -p
   
프로그램 버전 원형   포트
   
100000    2   tcp    111  portmapper
   
100000    2   udp    111  portmapper
   
100011    1   udp    847  rquotad
   
100011    2   udp    847  rquotad
   
100011    1   tcp    850  rquotad
   
100011    2   tcp    850  rquotad
   
100003    2   udp   2049  nfs
   
100003    3   udp   2049  nfs
   
100003    4   udp   2049  nfs
   
100021    1   udp   4002  nlockmgr
   
100021    3   udp   4002  nlockmgr
   
100021    4   udp   4002  nlockmgr
   
100021    1   tcp   4002  nlockmgr
   
100021    3   tcp   4002  nlockmgr
   
100021    4   tcp   4002  nlockmgr
   
100003    2   tcp   2049  nfs
   
100003    3   tcp   2049  nfs
   
100003    4   tcp   2049  nfs
   
100005    1   udp   4003  mountd
   
100005    1   tcp   4003  mountd
   
100005    2   udp   4003  mountd
   
100005    2   tcp   4003  mountd
   
100005    3   udp   4003  mountd
   
100005    3   tcp   4003  mountd
   
100024    1   udp   4001  status
   
100024    1   tcp   4001  status



REMOTE 서버 설정
------------------------------------------------------------------------------------------------
데몬 실행 (ntsysv등에서 기본 실행으로 등록할 것)
[root@Remote /]# service portmap start
[root@Remote /]# service nfs start


다음과 같은 명령어로 마운트 한다.
mount -t nfs -o nolock,tcp 192.168.0.100:/home/nfs /home/nfs

192.168.0.100:/home/nfs는 마운트를 할 원격지 서버아이피와 디렉토리를 정의한다.
마지막 /home/nfs는 마운트를 할 로컬 디렉토리이다.
호스트 서버의 /home/nfs를 현재 호스트의 /home/nfs에 마운트를 하겠다는 뜻이다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/08/17 19:52 2009/08/17 19:52
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/145

Leave a comment

Postgresql 바이너리 데이터 입력

PostgreSQL™ provides two distinct ways to store binary data. Binary data can be stored in a table using the data type bytea or by using the Large Object feature which stores the binary data in a separate table in a special format and refers to that table by storing a value of type oid in your table.

In order to determine which method is appropriate you need to understand the limitations of each method. The bytea data type is not well suited for storing very large amounts of binary data. While a column of type bytea can hold up to 1 GB of binary data, it would require a huge amount of memory to process such a large value. The Large Object method for storing binary data is better suited to storing very large values, but it has its own limitations. Specifically deleting a row that contains a Large Object reference does not delete the Large Object. Deleting the Large Object is a separate operation that needs to be performed. Large Objects also have some security issues since anyone connected to the database can view and/or modify any Large Object, even if they don't have permissions to view/update the row containing the Large Object reference.

Version 7.2 was the first release of the JDBC driver that supports the bytea data type. The introduction of this functionality in 7.2 has introduced a change in behavior as compared to previous releases. Since 7.2, the methods getBytes(), setBytes(), getBinaryStream(), and setBinaryStream() operate on the bytea data type. In 7.1 and earlier, these methods operated on the oid data type associated with Large Objects. It is possible to revert the driver back to the old 7.1 behavior by setting the property compatible on the Connection object to the value 7.1. More details on connection properties are available in the section called “Connection Parameters”.

To use the bytea data type you should simply use the getBytes(), setBytes(), getBinaryStream(), or setBinaryStream() methods.

To use the Large Object functionality you can use either the LargeObject class provided by the PostgreSQLJDBC driver, or by using the getBLOB() and setBLOB() methods.

Important

You must access Large Objects within an SQL transaction block. You can start a transaction block by calling setAutoCommit(false).

Example 7.1, “Processing Binary Data in JDBC contains some examples on how to process binary data using the PostgreSQLJDBC driver.

Example 7.1. Processing Binary Data in JDBC

For example, suppose you have a table containing the file names of images and you also want to store the image in a bytea column:

CREATE TABLE images (imgname text, img bytea);

To insert an image, you would use:

File file = new File("myimage.gif");
FileInputStream fis = new FileInputStream(file);
PreparedStatement ps = conn.prepareStatement("INSERT INTO images VALUES (?, ?)");
ps.setString(1, file.getName());
ps.setBinaryStream(2, fis, (int)file.length());
ps.executeUpdate();
ps.close();
fis.close();
Here, setBinaryStream() transfers a set number of bytes from a stream into the column of type bytea. This also could have been done using the setBytes() method if the contents of the image was already in a byte[].

Note

The length parameter to setBinaryStream must be correct. There is no way to indicate that the stream is of unknown length. If you are in this situation, you must read the stream yourself into temporary storage and determine the length. Now with the correct length you may send the data from temporary storage on to the driver.

Retrieving an image is even easier. (We use PreparedStatement here, but the Statement class can equally be used.)

PreparedStatement ps = conn.prepareStatement("SELECT img FROM images WHERE imgname = ?");
ps.setString(1, "myimage.gif");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
    byte[] imgBytes = rs.getBytes(1);
    // use the data in some way here
}
rs.close();
ps.close();

Here the binary data was retrieved as an byte[]. You could have used a InputStream object instead.

Alternatively you could be storing a very large file and want to use the LargeObject API to store the file:

CREATE TABLE imageslo (imgname text, imgoid oid);

To insert an image, you would use:

// All LargeObject API calls must be within a transaction block
conn.setAutoCommit(false);

// Get the Large Object Manager to perform operations with
LargeObjectManager lobj = ((org.postgresql.PGConnection)conn).getLargeObjectAPI();

// Create a new large object
long oid = lobj.createLO(LargeObjectManager.READ | LargeObjectManager.WRITE);

// Open the large object for writing
LargeObject obj = lobj.open(oid, LargeObjectManager.WRITE);

// Now open the file
File file = new File("myimage.gif");
FileInputStream fis = new FileInputStream(file);

// Copy the data from the file to the large object
byte buf[] = new byte[2048];
int s, tl = 0;
while ((s = fis.read(buf, 0, 2048)) > 0) {
    obj.write(buf, 0, s);
    tl += s;
}

// Close the large object
obj.close();

// Now insert the row into imageslo
PreparedStatement ps = conn.prepareStatement("INSERT INTO imageslo VALUES (?, ?)");
ps.setString(1, file.getName());
ps.setLong(2, oid);
ps.executeUpdate();
ps.close();
fis.close();

// Finally, commit the transaction.
conn.commit();

Retrieving the image from the Large Object:

// All LargeObject API calls must be within a transaction block
conn.setAutoCommit(false);

// Get the Large Object Manager to perform operations with
LargeObjectManager lobj = ((org.postgresql.PGConnection)conn).getLargeObjectAPI();

PreparedStatement ps = conn.prepareStatement("SELECT imgoid FROM imageslo WHERE imgname = ?");
ps.setString(1, "myimage.gif");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
    // Open the large object for reading
    long oid = rs.getLong(1);
    LargeObject obj = lobj.open(oid, LargeObjectManager.READ);

    // Read the data
    byte buf[] = new byte[obj.size()];
    obj.read(buf, 0, obj.size());
    // Do something with the data read here

    // Close the object
    obj.close();
}
rs.close();
ps.close();

// Finally, commit the transaction.
conn.commit();
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/08/12 16:58 2009/08/12 16:58
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/144

Leave a comment

CUDA 메모리 구조(3)

제가 CUDA관련한 글을 쓰는건 David박사가 했던 대학강의와 NVIDIA에서 나온 CUDA 문서를 참고로 하고 있습니다. 그래서 문서에 나온 내용도 정리 하겠습니다.
그나저나 NVIDIA 코리아에서는 CUDA 그렇게 밀면서 문서 한글화는 안해주네요.ㅡㅡ;
그것만 해줘도 CUDA하기 수월할텐데 말이죠.

CUDA 프로세서 구조는 SIMT(single-instruction, multiple-thread) 구조입니다. 기존에 있던 병렬프로그래밍으로 따지자면 OpenMP와 같은 성격인 것입니다. OpenMP는 CPU갯수만큼의 병렬화를 지원하지만 CUDA는 GPU안의 계산 유닛갯수만큼을 지원하는 것이 차이입니다.

SIMT 유닛은  32개의 병렬 스레드의 그룹을 만드는데 이것들을 warps 라고 부릅니다.
device에서 계산을 시작하게 되면 SIMT 유닛은 warps안에 각각의 스레드를 분해해서 넣습니다. 여기서 첫번째 warp는 Thread ID 0을 가지게 되는 겁니다.

그리고 각 Multiprocessor는 아래와 같은 구조를 가지면서 실행되게 됩니다.

사용자 삽입 이미지

위의 그림에 나와있는 각 Multiprocessor들은 다음의 4가지 형태의 메모리들을 가지게 됩니다.

1. Processor당 32비트 register들의 세트 하나.
2. Multiprocessor안의 모든 processor 코어들이 공유하는 Shared memory
3. 모든 Processor 코어들에 공유되고 constant memory space의 읽기속도를 향상시켜주는, 읽기전용인 constant cache
4. 모든 Processor 코어들에 공유되고 texture memory space의 읽기속도를 향상시켜주는, 읽기전용인 texture chche. 각각의 Multiprocessor들은 texture unit을 통해서 texture cache를 액세스합니다.

위에 내용들이 중요한 내용들입니다. 앞 포스팅에 있던 Grid, Block, Thread와 위에 있는 메모리들이 어떻게 매치되는지를 지정해주어야 에러없이 프로그램이 실행됩니다.
이게 제대로 관리안되면 에러가 나게 되는 겁니다. 여기서부터는 상세한 설명이 없어서 스스로의 많은 삽질이 필요하게 되는 부분입니다^^;

그리고 SLI를 이용해서 GPU를 여러개 꼽아서 사용할수도 있다고 나와있군요. 하나도 제대로 쓰기 어렵구만..;;

여기까지 했으니까 다음부터는 직접 코드를 작성하면서 삽질모드로 들어가야겠군요.^^;
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/03/19 21:10 2009/03/19 21:10
Response
No Trackback , 1 Comment
RSS :
http://arisu.mireene.com/rss/response/143

Comments List

  1. garu 2009/04/30 14:44 # M/D Reply Permalink

    유용한 정보 감사합니다 ^^

Leave a comment

마지막강의

출판사 : 살림
저자 : 랜디포시, 제프리 재슬로
옮김 : 심은우

====================================================================
책을 사서 동봉된 동영상 시디만 보고 정작 책은 안보고 있다가 이제서야 봤습니다.
책이 동영상이랑 같은 내용일거라 지레 짐작하고 안 봤었는데 조금 다르군요.
책을 쓴 시점이 마지막강의 이후 시점이라서 마지막강의시의 심정이라던가 세세한 저자의 감정들이 책에는 나와있습니다. 물론 큰 내용은 대동소이합니다.
전반적인 내용은 책보다는 강의를 들었을때가 더 머리에 잘 들어오는것 같네요.
다만 책에는 좀 더 세세한 부분들이 나와있다는 정도네요.

책은 한번보고, 내용을 다시보고 싶다면 동영상을 보는게 나을거 같네요.
물론, 전체적인 내용자체는 좋습니다.
'당신의 어릴적 꿈을 이루기' 원래 좋아하는 주제라서요.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/03/04 21:58 2009/03/04 21:58
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/142

Leave a comment

닷넷 프로그래밍 정복

출판사 : 가메출판사
저자 : 김상형

==============================================================================

Window API 정복의 저자가 쓴 닷넷, C#에 관한 책입니다.

시중에 C#문법만 나와있는 책이 없어서 C#문법 참고용으로 샀는데 괜찮았습니다.

덤으로 윈폼, ADO.net등도 살펴볼수 있는 기회가 되었네요.

윈폼이야...MFC랑 비슷비슷하니 색다른건 없었고 지금은 WPF가 나와있으니 그리 큰 효용성이 있는지는 잘 모르겠습니다.

ADO.net은 그동안 이름만 들어왔었는데 어떻게 구성되어 있는지를 구체적으로 볼 수 있는 기회가 되었습니다.

이런류의 책들이 늘 그렇지만 레퍼런스 용도로 사용하기에 괜찮은거 같습니다.

예제도 많으니 곧바로 써먹을수 있을거 같구요.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/03/03 23:10 2009/03/03 23:10
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/141

Leave a comment

초심

출판사 : 다산북스
지음 : 홍의숙

============================================================================

스토리텔링 형식의 자기개발서 입니다. 요즘에는 이런류의 책들이 스토리텔링 형식으로 많이 나오는것 같습니다. 덕분에 읽기는 수월해진거 같습니다. 예전처럼 딱딱하게 어떻게 해야한다면서 정리되어 있는 것들은 그다지 재미도 없고 그랬죠.
내용은 초심이라는 제목만 봤을때는 첫마음을 간직하라는 이야기일거라 생각했습니다. 그런데 읽어보니 사장으로서 어떻게 회사를 꾸려나가야하는지와 코칭에 대한 이야기이더군요.
그냥저냥 무난하게 읽을 많한 이야기인거 같습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/02/28 11:24 2009/02/28 11:24
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/140

Leave a comment

시골의사의 주식투자란 무엇인가 2 : 분석편

출판사 : 리더스북
저자 : 박경철

==========================================================
1권에서 개인 투자자는 주식투자 하지마라고 계속 이야기 합니다.
그런데 그러고도 계속 주식하고 싶으면 어떻게 해야하는지에 관해서 이야기 하고 있습니다.
기술적분석의 전문가라고 불리우는 저자가 이러저러한 여러가지 기술적 분석 방법을 소개하고 있습니다.
그러한 기술적 분석 방법의 의미를 소개하면서 왜 한가지 방법만을 사용하면 안되는지, 그리고 기술적 분석이 가지는 맹점에 관해서 이야이하고 있습니다.
데이트레이더라면 필히 숙지해야할 내용들인거 같습니다.
결국 기술적 분석은 시장의 과거를 보여줄 뿐이며 시장의 미래는 누구도 모른다는게 결론입니다.
이러저러한 여러가지 기술적 분석 방법들을 알게 되었다는 점에서 좋았고
무엇보다 그것들이 무용하다고 솔직하게 이야기하는 필자가 마음에 들었습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/02/22 23:38 2009/02/22 23:38
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/139

Leave a comment

시골의사의 주식투자란 무엇인가 1 : 통찰편

출판사 : 리더스북
저자 : 박경철

===================================================================

2권으로 구성된 시골의사의 주식책 중 첫번째 책입니다.
저자도 저자고 제목도 끌리고해서 2권모두 구입했습니다.
1권은 시장에서 개인투자자들이 왜 손실을 볼수밖에 없는지에 대해서 나와있습니다.
이래도 주식하고 싶으냐? 주식하지마라. 그런이야기 들입니다.
그러면서 경제를 보는 통찰력을 기르는 것이 중요하다고 이야기하고 있습니다.
주식을 하려고 한다면 시작하기전에 한번 읽어보고 나서 시작하는게 좋을거 같습니다.
시장에서 오랜시간을 거치면서 쌓은 경험을 허황되거나 미화하지 않고 사실그대로 전달해준다는 느낌입니다.
주식 선배에게 듣는 좋은 이야기, 경험담 그런 느낌입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/02/22 23:34 2009/02/22 23:34
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/138

Leave a comment

CUDA 메모리 구조(2)

CUDA 연산의 개념은 아래 그림과 같은 구조로 되어 있습니다.

사용자 삽입 이미지

여기서 Thread라고 되어 있는 것들이 CUDA연산에서 가장 작은 단위인 것입니다.
이 Thread들은 Block의 하위에 있고 Block들은 다시 Grid의 하위에 있습니다.
그래서 프로그래머가 연산을 하려면

'몇번Grid의 몇번Block의 몇번Thread를 사용하여 계산하겠다'

를 지정해 주어야 합니다.

여기서 각 Thread는 자신만의 local memory를 가지게 됩니다.
각 Thread 간에 data 공유를 위한 shared memory는 따로 있습니다.
그리고 Block들의 집합인 Grid간에 data 공유를 위한 Global memory가 있습니다.
구조는 아래와 같습니다.

사용자 삽입 이미지


이 memory들을 어떻게 사용하느냐에 따라서 같은 연산을 하는 CUDA프로그램이라 하더라도 큰 성능차이를 내게 됩니다.
memory간의 data를 이동시키는 비용이 꽤 크기 때문에 적절한 알고리즘을 작성하지 않는다면 계산하는데서 단축한 시간을 data 이동시키는데서 다 까먹을 수 있게 됩니다.
각 memory들의 속도 또한 차이가 있어서 이런 여러가지 요소를 고려하기 시작하면 복잡해지기 시작하는 겁니다.
결국 CUDA 프로그래밍의 핵심은 각 memory들의 특성을 파악해서 최대한 효율적인 알고리즘을 만드는데 있습니다.

아래 그림은 Grid를 이용해 계산한다는 것이 코드로는 어떻게 표현되는지를 나타냅니다.
사용자 삽입 이미지

결국 template project에서 보았던 kernel을 실행시키는 부분이 kernel에 해당하는 Grid를 실행시킨다는 것을 알 수 있습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/02/11 20:32 2009/02/11 20:32
, ,
Response
No Trackback , 9 Comments
RSS :
http://arisu.mireene.com/rss/response/137

Comments List

  1. MESL 2009/02/16 03:40 # M/D Reply Permalink

    정말 깔끔하게 잘 정리 해 두셧습니다.

    저도 CUDA에 대해 공부하고있는데...

    사실 logical한 부분만 다루고있고...

    곧있으면 output을 내야 하는 상황이라...;; 걱정이 많네요.ㅠ

    많은 도움 부탁드립니다.ㅠㅠ

    1. 아리수 2009/02/17 09:22 # M/D Permalink

      실제 코딩도 같이 해보시는게 이해하시는데 도움이 많이 되실거예요.
      저도 그리 많이 아는건 아니라서요..^^;

  2. MESL 2009/02/27 13:40 # M/D Reply Permalink

    질문 있습니다.
    제가 하고있는 플젝의 데이터가 float형이 4000*400개를 적분연산 해야하는데,
    커널수행명령어.. 즉

    testkernel <<< >>>
    이부분에서 오류가 나는군요..
    컴파일은 다 되구요.
    invalid configuration argument라는데... 뭘 고쳐야될지-ㅅ-
    조언부탁드립니다.

    1. 아리수 2009/02/27 18:01 # M/D Permalink

      소스가 없어서 무어라 답변드리기 애매하네요. 에러내용만 보면 device에서 사용할 변수를 할당하고 device 메모리에 변수를 할당하는 과정에 원인이 있는 것 같습니다.

  3. MESL 2009/03/02 21:10 # M/D Reply Permalink

    음... 소스를 보내드려볼까요??;
    혹 메일주소가 어떻게 되시는지..ㅠ

    교수님은 아웃풋을 원하시고.. 전 진행이 안되고..
    답답해 죽겟습니다..ㅠ

    1. 아리수 2009/03/02 22:13 # M/D Permalink

      리눅스용인가요? 윈도우용인가요?
      제 메일은 arisu1000@gmail.com 입니다.
      보내주신다고해서 꼭 해결되리라는 확답은 못드리지만 살펴보고 회신 드리겠습니다.

  4. stylidy 2009/03/17 22:59 # M/D Reply Permalink

    정리 해놓으신 포스트들 많은 도움이 되었습니다.
    Visual Studio 2005에서 CUDA를 이용해 새로운 프로젝트를 생성해서 작업을 하려고 합니다. 혹시 release note에 있는 template프로젝트를 이용하는 방법 말고, 새로운 프로젝트를 생성하는 방법을 알고 계시면 도움을 주시면 감사하겠습니다. Visual studio 프로젝트 환경 설정에서 애를 먹고 있어서,,;;;;
    그리고 원래 생성되어 있는 프로젝트를 CUDA환경으로 변환(?)할 수 있는 방법을 알고 계신지,,,;;;;
    코딩에서 에러가 있어서 진행이 안되면 그나마 디버깅이라도 해볼 수 있겠는데,, 프로젝트 환경설정이 안되서 애를 먹고 있으니 너무 답답하네요,,;;;;
    조언좀 해주시면 감사하겠습니다.
    아,, 제 메일 주소는 stylidy@metq.com입니다.
    아리수님 블로그 번창하시길 바랍니다.

    1. 아리수 2009/03/19 20:06 # M/D Permalink

      제가 원래 CUDA프로그래밍을 리눅스에서 많이 했었기 때문에 질문주신 윈도우에서 새로운 프로젝트 환경 설정하는 방법은 해본적이 없습니다.
      그리고 CUDA 디버깅은 Visual Studio 로는 어려운 부분이 있습니다. Visual Studio는 메인보드와 CPU상에서 일어나는 부분만 디버깅 가능하기 때문에 GPU상에서 어떻게 연산이 진행되는지에 관한 정보는 알기가 어렵습니다.

  5. stylidy 2009/03/20 16:02 # M/D Reply Permalink

    그렇군요,, 답답하네요,,,;;;;;
    이놈의 링크에러,,, 어흑
    답변해주셔서 감사합니다~

Leave a comment

CUDA 메모리 구조(1)

오랜만에 쓰네요. 여기는 CUDA관련해서 들어오시는 분들이 제일 많군요..;;
잠깐 검색해봤는데 해가 지났는데 아직 CUDA관련한 한글자료는 잘 없는 편이군요.
국내에 어느정도 보급은 된거 같은데 정보공유는 어떻게들 하시는지 모르겠습니다.
nvidia싸이트 가봐도 그다지 활성화되어 있는거 같지는 않구요.

이번 글은 CUDA 메모리 구조 관련한 정리 입니다.
2.0은 안봐서 모르겠는데 이전버전에서의 CUDA는 메모리 구조를 숙지하고 있었어야 했기 때문에 그냥 그럴거라 생각하고 메모리구조에 대한 정리부터 이어갑니다.

우리가 CUDA를 쓰려고하는 이유는 GPU를 사용하여 연산속도의 향상을 얻기 위함입니다.
GPU가 CPU연산보다 빠른 이유가 CPU보다 많은 ALU를 보유하고 있기 때문입니다.
 

사용자 삽입 이미지
위 그림에서 보시면 GPU가 CPU보다 월등히 많은 ALU를 가지고 있다는 것을 알 수 있습니다.
저 ALU를 어떻게 잘 사용하느냐가 속도향상의 관건입니다.
CPU에서는 특정 ALU를 이용하는걸 프로그래머가 지정해주지 않지만 CUDA에서는 저 ALU하나하나를 모두 프로그래머가 제어해 주어야 합니다. 여기에 CUDA프로그래밍의 어려움이 있는 것입니다.
저 ALU구성은 큰 구조는 같지만, 하드웨어에 따라서 전체 ALU의 개수나 ALU에서 사용하는 GPU의 내장메모리 용량이 틀려지기 때문에 그러한 사항들을 감안해서 프로그래밍을 해주어야 속도향상이라는 결과를 얻을 수 있습니다.
그렇기 때문에 GPU 메모리 구조에 대한 이해가 수반되어야 하는 겁니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2009/02/11 19:13 2009/02/11 19:13
, ,
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/101

Leave a comment

그림자 자국

출판사 : 황금가지
저자 : 이영도
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2008/12/30 21:37 2008/12/30 21:37
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/136

Leave a comment

Windows 3D 프로그래밍

출판사 : 정보문화사
저자 : Charles Petzold
역자 : 한호연, 이광민

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2008/12/30 21:34 2008/12/30 21:34
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/135

Leave a comment

Network Programming for The Microsoft .NET Framework

출판사 : 정보문화사
저자 : Anthony Jones,Jim Ohlund,Lance Olson
역자 : 김남식

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2008/12/30 21:32 2008/12/30 21:32
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/134

Leave a comment

인문의 숲에서 경영을 만나다 1

출판사 : 21세기 북스
저자 : 정진홍
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2008/12/30 21:26 2008/12/30 21:26
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/133

Leave a comment

초보자를 위한 visual c# 2005

출판사 : 정보문화사
저자 : James Foxall

c#익히는데 있어서 좋은 자습서가 될 수 있을거 같습니다.

다른 입문서들과는 달리 문법을 먼저 소개한 것이 아니라 Picture viewer 라는 프로그램을 만들어가면서 내용을 설명하는 방식인데
프로그램을 완성해 가면서 C#의 전체 기능을 익힐수 있도록 구성되어 있습니다.
C#으로 응용프로그램을 만드는데 있어 좋은 참고가 될거 같습니다.
다만, 레퍼런스 용도로는 부족한 부분이 있어서 처음 C#내용파악만하고
레퍼런스로는 별도의 서적이 있어야 할거 같습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2008/11/27 22:36 2008/11/27 22:36
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/132

Leave a comment

눈먼 자들의 도시

출판사 : 해냄
저자 : 주제 사라마구
역자 : 정영목

=============보고나서=================

광고가 많아서 가격도 착하고 해서 봤는데 책 전체 내용이 어둡군요.

극한 상황에 처했을때 사람들의 행동...어두운 부분과 스스로를 지켜나가려는 사람들...

어두운 분위기에 유쾌하지는 않았던 책이었습니다.

다만, 생각할 거리는 이것저것 많이 주는군요.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2008/11/22 21:21 2008/11/22 21:21
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/131

Leave a comment

웹 개발자를 위한 스프링 2.5 프로그래밍

출판사 : 가메출판사
저자 : 최범균
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2008/11/22 21:17 2008/11/22 21:17
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/130

Leave a comment

엔지니어를 위한 보고서 작성기술

출판사 : 삼양미디어
저자 : 노무라 토시오
역자 : 양영철
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2008/11/22 21:16 2008/11/22 21:16
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/129

Leave a comment

스프링 인 액션

출판사 : 에이콘출판사
저자: Craig Walls, Ryan Breidenbach
역자 : 이태상
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by \아리수

2008/11/22 21:15 2008/11/22 21:15
Response
No Trackback , No Comment
RSS :
http://arisu.mireene.com/rss/response/128

Leave a comment
« Previous : 1 : 2 : 3 : 4 : 5 : ... 8 : Next »