'In the world/컴퓨터'에 해당되는 글 19건

  1. 2010.09.07 언어
  2. 2009.09.04 vasp 5.2.2 install by pgi compiler
  3. 2009.08.31 nan(Not a Nunber) 판별법
  4. 2009.08.10 NumpyTest error
  5. 2009.08.10 python module install for CentOS 2

언어

In the world/컴퓨터 2010. 9. 7. 11:23
1. 공부한 것들
 - BASIC
 - C
 - Fortran77
 - Fortran90

2. 대충 써본 것들
 - Python
 - Bash Shell Script
 - OpenCL
 - HTML

3. 공부는 해봤으나 기억 안나는 것들
 - C++
 - java

4. 대충 써봐야 할 것들
 - R
 - cuda
:

vasp 5.2.2 install by pgi compiler

In the world/컴퓨터 2009. 9. 4. 15:51
vasp 5.2.2 를 pgi compiler를 이용하여 설치하면 실행할 때 이유없이 죽는 기묘한 현상이 발생한다.

특정 변수가 mpi 루틴에서 사용될 때 mpi 프로세스가 이유없이 죽는다.

참고로 intel compiler를 사용하여 설치한 경우는 이 분제가 발생하지 않는다.

이를 해결하기 위해서 paw.F 라는 코드에서 선언되는 일부 변수를 동적으로 메모리에 할당되도록 변경해 주면 된다.

1. Near line 880 (ALLOCATABLE 변수로 선언한다.)
 
      LOGICAL, EXTERNAL :: USEFOCK_CONTRIBUTION, USEFOCK_AE_ONECENTER
      REAL(q) DDLM(LMDIM*LMDIM),RHOLM(LMDIM*LMDIM),RHOLM_(LMDIM*LMDIM,WDES%NCDIJ)
      !OVERLAP CTMP(LMDIM,LMDIM,MAX(2,WDES%NCDIJ)),CSO(LMDIM,LMDIM,WDES%NCDIJ), &
      !        CHF(LMDIM,LMDIM,WDES%NCDIJ)
      !OVERLAP COCC(LMDIM,LMDIM,MAX(2,WDES%NCDIJ)),COCC_IM(LMDIM,LMDIM)
      OVERLAP,ALLOCATABLE:: CTMP(:,:,:),CSO(:,:,:),CHF(:,:,:)
      OVERLAP,ALLOCATABLE:: COCC(:,:,:),COCC_IM(:,:) 
       
      REAL(q),ALLOCATABLE :: POT(:,:,:), RHO(:,:,:), POTAE(:,:,:), RHOAE(:,:,:)
 


2. around Line 958 (ALLOCATE 문으로 메모리에 할당해 준다.)
 
      ALLOCATE (RHOCOL( NDIM, LMMAX, NCDIJ ))
      ALLOCATE (CTMP(LMDIM,LMDIM,MAX(2,WDES%NCDIJ)),CSO(LMDIM,LMDIM,WDES%NCDIJ), &
        CHF(LMDIM,LMDIM,MAX(2,WDES%NCDIJ)))
      ALLOCATE (COCC(LMDIM,LMDIM,MAX(2,WDES%NCDIJ)),COCC_IM(LMDIM,LMDIM)) 
       
 ! allocate kinetic energy density if metagga
 


3. around line 1428 (DEALLOCATE 문으로 메모리에서 제거한다.)
 
      E%PAWAE=DOUBLEC_AE
      E%PAWPS=DOUBLEC_PS
       
      DEALLOCATE (COCC,COCC_IM,CHF)
      DEALLOCATE (CTMP,CSO) 
 
      IF (LUSE_THOMAS_FERMI) CALL POP_XC_TYPE
 
      CALL RELEASE_PAWFOCK
 
    END SUBROUTINE SET_DD_PAW

:

nan(Not a Nunber) 판별법

In the world/컴퓨터 2009. 8. 31. 10:31
컴퓨터에게 0/0 연산을 수행하게 한 후, 그 결과를 출력하면 "nan" 또는 "NaN" 이 출력된다.

간단한 예제(Fortran)를 만들어보면 다음과 같다.

-----------------------------------------------------------------------
real a, b, c
a = 0.0
b = 0.0
c = a/b
print *, a,b,c
-----------------------------------------------------------------------
실행 결과
    0.000000        0.000000                 NaN

여기에서 c가 0/0 꼴이기 때문에 "NaN"으로 출력된다.

직접 출력해보지 않고 내부적으로 변수가 "NaN"인지 판별하는 방법으로 다음과 같이 쓸 수 있다.

if(c .eq. c + 1.0) print*,'c is NaN'

수가 아닌 것에다가 + 연산을 수행하는 것은 수학적으로는 금지(?) 되어 있지만,
컴퓨터는 그 연산의 결과로 "NaN"을 내어 놓게 된다.

기계의 사고 체계는 흥미롭고 신비로운 세계인 것 같다.
:

NumpyTest error

In the world/컴퓨터 2009. 8. 10. 15:00
python module인 numpy와 scipy 버전이 맞지 않으면 다음과 같은 warning이 나온다.

import numpy
import scipy

/usr/lib64/python2.4/site-packages/scipy/misc/__init__.py:25: DeprecationWarning: NumpyTest will be removed in the next release; please update your code to use nose or unittest
  test = NumpyTest().test

warning이 발생하지 않도록 하려면 다음 버전의 사용을 권한다.

numpy(1.2) + scipy(0.7) or numpy(1.1) + scipy(0.6)

어쩔 수 없이 numpy(1.2) + scipy(0.6)을 사용하는 경우라면 일종의 꽁수로 warning을 피할 수 있다.

아래의 파일을 일부 수정하면 warning이 나오지 않게 된다.

/usr/lib64/python2.4/site-packages/scipy/misc/__init__.py

맨 아래쪽에 코드 두 줄을 수정하자.

from numpy.testing import NumpyTest
test = NumpyTest().test

to this:

from numpy.testing import Tester
test = Tester().test

하지만 이건 어디까지나 꽁수!
가능하면 numpy(1.2) + scipy(0.7) 버전을 사용하자.
:

python module install for CentOS

In the world/컴퓨터 2009. 8. 10. 14:31
CentOS에서 python 관련 module을 손쉽게 설치하기 위해서 epel repository를 추가해 주면 된다.

sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/`uname -i`/epel-release-5-3.noarch.rpm

repository를 추가 했으면 yum install을 이용하여 간편하게 설치할 수 있다.

ex) sudo yum install numpy

참고로 과학계산 용도로 가장 많이 쓰이는 module은 다음과 같다.

1. numpy (array 처리 관련)
2. scipy (matrix 연산 관련, scipy를 사용하려면 numpy가 있어야 한다.)
3. matplotlib (그래픽 관련)

1, 2 번을 사용하기 위해서는 blas, lapack 등이 필요하다.

: