시간을 기록하다

블로그 이미지
by 기록자
  • 18,092Total hit
  • 26Today hit
  • 33Yesterday hit

'Linux'에 해당되는 글 2건

  1. 2009/05/14
    리눅스 정규표현식과 메타문자
  2. 2009/03/07
    intel icc 컴파일러를 이용한 멀티프로세스 컴파일하기
리눅스(유닉스)의 정규표현식과 메타 문자를 기록합니다.

먼저 정규표현식이란 문자들의 패턴이라고 할 수 있습니다. 리눅스(혹은 유닉스) 시스템의 대부분의 프로그램에서 정규표현식은 슬래시 사이에 옵니다. 예를 들어 /love/ 는 /와/로 둘러쌓인 정규표현식이라 할 수 있으며, 해당 명령은 검색 시 행에서 love라는 패턴과 일치하는 것을 찾으라는 것입니다. 아래의 표는 이러한 정규표현식에 사용되는 메타 문자와 사용 예를 간단히 정리해 기록합니다.


 메타 문자
 기능  사용 예
 설명

 ^  행의 시작 지시자  /^love/  love로 시작하는 모든 행과 대응

$  행의 끝 지시자  /love$/  love로 끝나는 모든 행과 대응

.
 하나의 문자와 대응  /L..e/  L 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응

 *  선행 문자와 같은 문자의 0개 혹은 임의 개수와 대응  / *love/  임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응

 []  []사이의 문자 집합 중 하나와 대응  /[Ll]ove/  love나 Love를 포함하는 행과 대응

[x-y]
 []사이의 문자 범위 내의 한 문자와 대응  /[A-Z]ove/  A부터 Z까지 한 문자가 ove로 끝나는 경우와 대응

[^]
 문자 집합에 속하지 않는 한 문자와 대응 /[^A-Z]/
 A와 Z 사이의 범위에 폼함되지 않는 한문자와 대응

 \  메타 문자로 사용하고 싶지 않은 경우  /love\./  love가 마침표(.)로 끝나는 경우와 대응

 \<
단어의 시작 지시자  /\<love/  love로 시작하는 단어를 포함하는 행과 대응

 \>
 단어의 끝 지시자  /love\>/  love로 끝나는 단어를 포함하는 행과 대응

\(..\)
 다음 사용을 위해 태그를 붙인다  /\(lov\)able\1er/  9개 태그를 쓸 수 있다. 왼쪽부터 순서대로 태그 번호가 매겨진다. 예를 들어, 패턴 lov는 태그 1에 저장되고, 뒤에는 \1 로써 태그 값을 사용할 수 있다. 왼쪽 예제에서 검색 패턴은 lovable에 lover가 붙어 있는 문자열이 된다.

 x\{m\}

x\{m,\}

 x\{m,n\}

 문자 x를 m번 반복한다

 적어도 m번 반복한다

m회 이상 n회 이하 반복한다
 o\{5,10\}  문자 o가 5회에서 10회 사이의 횟수로 연속적으로 나타나는 문자열과 대응
저작자 표시
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 0 AND COMMENT 0


우선 windows의 사용법이 아닌 LINUX 상에서의 사용법이며, windows에서는 icc가 아닌 icl이었던것 같다.일단 아래 링크를 따라가서 다운받자.
http://www.intel.com/cd/software/products/asmo-na/eng/340679.htm
사이트에 들어가 보면 알겠지만 인텔 컴파일러를 다운 받는 곳이다.
이곳으로 가서 비상업용 컴파일러를 받고. 받을때는 리눅스 용으로...만약 windows 사용자라면 windows 용으로 받으면 되겠다...

비상업용을 받을때는 이메일 주소 넣는게 있는데 그걸 쓰고나면 그 메일주소로 뭔가 하나 날아온다ㅋㅋㅋ
메일받고 열어보면 시리얼넘버가 쓰여져있는데 그걸 입력하거나 메일에 쓰여져있는 링크를 이용해서 사이트에 들어가면 다운받을 수 있다.

일단 다운 받으면 용량이 꽤나 큰데...내 경우엔 1G 정도되었다. 일단 다운 받은걸 압축 풀면 install.sh 파일이 있는데 이 파일을 이용해서 설치한다. 설치하던 중 내 경우에는 libstdc++5 가 안깔려 있어서 설치가 안된다길래...apt-get으로 먼저 설치하고 나서야 icc를 설치할 수 있었다.

기본적으로 설치후에는 icc 컴파일러가 어디에 설치되었는지 얘기해주는데 환경설정은 자동으로 안되는 것 같다. 그래서 나는 그냥 alias를 이용해서 사용하고 있음ㅋㅋㅋ 확인을 위해 우분투의 시스템 감시를 이용해서 cpu가 정말로 멀티로 동작되는지 확인을 위해 간단한 루프 두개를 만들어서 확인을 해보았다.


결과를 확인해보니 프로그램이 돌아가면서 계산량이 적어서인지 잠깐이지만 cpu를 나눠서 쓰고있다...오~~
(결과화면을 좀 더 그럴듯하게 보여주고 싶어서 소스코드에서 계산하는 범위를 비슷하게 바꿔서 좀 더 리얼하게 결과를 보여줘야겠다는 생각도 했으나...캡쳐하는데까지 걸리는 그 10여초의 시간이 의외로 귀찮아서 그냥 이 그림으로 올리게 되었다는....-_-;;;)

컴파일 명령은 아래와 같이 했다.

icc -openmp -o test test.c -no-multibyte-chars -static-intel

옵션 중에 -openmp 는 멀티 코어를 사용하기 위해 썼는데 프로그램 자체가 작아서 그런지 오히려 icc를 이용한 단일 코어의 속도가 더 빨리 나왔다;;; 나중에 데이터양이 큰 프로그램을 만들어서 멀티코어로 돌려봐야 좀 더 정확하게 확인 할 수 있을것 같다.

다른 옵션으로는 -no-multibyte-chars -static-intel 을 사용했는데
-no-multibyte-chars 옵션을 안쓰면 컴파일에러가 나는데 왜그런지 모르겠다.
언어권이 달라서 그런건지...유니코드를 사용하면 그런건지 확인을 못해봤다. 이 부분은 누군가가 설명해주길 바라며ㅋㅋㅋㅋ

-static-intel 은 안써도 컴파일은 되는데 안쓰면 디폴트로 공유라이브러리를 쓰는것으로 판단된다. 나는 alias로 icc만 링크해서 쓰다보니 라이브러리 링크를 제대로 못해서인지 실행하면 제대로 안돌아간다. 그래서 그냥 static library를 쓰려고 일부러 옵션을 주었다. 실제로 static 라이브러리를 사용한다고 해도 실행파일의 용량이 3~400k 정도 늘어날 뿐이기 때문에 별 문제는 없을것으로 판단된다.

ps. 어느 정도 알게됐다 생각하면 앞에 새로운 벽이 있고, 다시 그 벽을 넘어섰다 생각하면 더 높은 산이 있고...그런게 프로그래머인가보다...ㅠ_ㅠ

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 0 AND COMMENT 0

ARTICLE CATEGORY

분류 전체보기 (42)
개발 노트 (1)
초보의 알고리즘 (17)
프로그래밍 팁 (13)
기타 등등등등등 (11)

CALENDAR

«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

ARCHIVE

LINK