전체 글 40

파이썬 기반의 멀티프로세싱

이전 포스트(https://kimjy-par.tistory.com/12)에서는 일반적으로 통용되는 멀티스레딩과 멀티프로세싱의 특징을 비교하였다. 본인은 C나 Fortran 언어를 사용하여 병렬처리를 수행한 경험이 있으며, 이 때에는 openMP와 MPI 라이브러리를 사용하였었다. 따라서 처음 파이썬 기반 병렬처리를 공부할 때는 threading은 openMP에, multiprocessing은 MPI 라이브러리에 대응되는 개념이라고 접근하여 코드를 작성하였지만 크나큰 오산이었다. 이전에 멀티스레딩에 대해 포스팅하였던 것 처럼, 파이썬에서 스레딩 모듈을 사용하여 멀티스레딩을 사용한다고 하더라도 하나의 인터프리터는 하나의 프로세서 자원밖에 사용하지 못한다! 따라서 compute-intensive한 프로그램에서..

python 2021.12.15

closure & decorator

처음에 closure와 decorator의 개념을 듣고는 잘 이해가 가지 않았다. 따라서 이번 포스트를 통하여 closure(추후 decorator)의 개념을 정리하고자 한다. closure 기본적으로 파이썬은 function 안에 function이 호출되는 nested function이 가능하다고 한다. 많은 블로그들에서 pow함수를 예로 들어서 사용하였고, 아마 사용할 수 있는 예제 중에 간단한 예제이기 때문에 먼저 pow 함수를 예제로 사용하고자 한다. 먼저 우리는 pow 연산을 아래와 같이 수행할 수 있다. result=5**3 혹은 아래와 같이 함수로 계산할 수도 있을 것이다. def calc_pow3(x): return x**3 print(calc_pow(5)) >>> 125 물론 calc_p..

python 2021.12.15

군집분석, 그리고 2D 이미지 데이터 군집분석을 위한 K-means clustering

들어가기에 앞서, 연구실에서 2D 이미지 데이터를 군집분석하고, 그 특성을 비교하는 연구를 짧게 진행한 바가 있다. 연구를 시작하기 전에도 군집분석에 대한 개념은 있었지만 데이터를 어떻게 전처리하여야 하는지, 또 K는 어떻게 설정하여야 하는 지에 대한 것은 잘 알지 못하였었다. 다행히도 다른 학생이 도와준 까닭에 작게라도 개념을 잡을 수 있었고, 따라서 본 포스팅에서는 연구를 통해 배웠던 개념을 정리하고자 한다. 다만, 아직 머신러닝에 대해 조예가 깊지 않은 까닭으로 좋은 포스팅은 아니라는 것에 아쉬움이 있다. 군집분석이란 비지도학습의 일종으로, 데이터들의 특성을 반영하여 군집화하는 분석방법이다. 널리 사용되는 방법은 k-means, DBSCAN 등이 있다. 본 포스팅에서는 2D 이미지에 대해 전처리 및..

병렬처리 특성 비교, 그리고 파이썬 기반의 멀티쓰레딩

항상 파이썬을 데이터 후처리 및 가시화 용도로만 사용해서 인지, 파이썬을 사용한 병렬처리 방법은 사용한 경험이 없다. 하지만 이번에 파이썬을 처음부터 다시 공부하기로 마음먹었으므로 파이썬에서 사용할 수 있는 병렬처리방법에 대해 정리하고자 한다. 들어가기에 앞서 쓰레드 기반의 병렬처리 방법과 프로세스 기반의 병렬처리 방법에 대해 논하고자 한다. 일반적으로 쓰레드는 프로세스를 구성하고 있는 가장 작은 단위이다. 또한 하나의 프로세스 내부의 쓰레드들 간에는 메모리가 공유되며, 따라서 모든 쓰레드는 프로세스의 메모리 공간을 참조(읽기/쓰기)가 가능하다. 이러한 특성을 바탕으로 쓰레드 기반의 병렬처리는 SMP(shared memory parallelism)이라고 부른다. 따라서 개발자는 쓰레드 기반의 병렬처리를 ..

python 2021.12.06

Measuring High-Performance Computing with Real Applications

Sayeed, M., H. Bae., Y. Zheng, AB. Armstrong, R. Eigenmann, and G. Saied, 2008: ‘Measuring High-Performance Computing with Real Applications’, Computing in Science & Technology, 10 (60) *실제 어플리케이션을 사용하여 3가지 시스템에서 성능 측정 및 분석 -Seismic, GAMESS, WRF, MILC 및 HPL 커널 벤치마크를 사용 -프로세서에 따른 scalability를 측정 -각 어플리케이션에서 computation, communication, I/O가 차지하는 비율을 측정하여 어느 부분에서 Performance bound가 발생하는 지 확인 -Memor..

WRF Model Performance and Profiling Analysis on Advanced Multi-core HPC Clusters

Shainer, G., T. Liu, J. Michalakes, J. Liberman, J. Layton, O. Celebioglu, S. A. Schultz, J. Mora, and D. Cownie, 2009: 'Weather Research and Forecast (WRF) Model Performance and Profiling Analysis on Advanced Multi-core HPC Clusters', The 10th LCI International Conference on High Performance Clustered Computing. Boulder, CO *Dell 사의 클러스터에서 WRF 모델의 Performance를 다각도로 측정 *Dell 사에서 제작한 서버를 사용하며, 각 ..

PEP 8 - 파이썬 코드 스타일 가이드

파이썬 코드를 작성하다 보면, 아래와 같이 함수 이름을 고민할 경우가 있다. 또 들여쓰기를 할 때 tab을 사용할 것인지, 혹은 스페이스를 4번 사용할 것인 지를 고민하는 경우가 있다. 이러한 경우를 위해 파이썬 공식 홈페이지에서는 PEP8이라는 파이썬 코드 스타일 가이드를 제공하고 있다. 본 포스트는 파이썬 코드 스타일 가이드를 정리하여, 추후 코드 작성에서 올바른 스타일로 코드를 작성하고자 한다. #변수 명의 다양한 스타일 var_name varName VarName varname 들여쓰기 들여쓰기는 4개의 스페이스를 사용할 것 첫번째 줄에 인자가 있으면 괄호에 맞추어 수직정렬을 할 것 첫번째 줄에 인자가 없으면 추가로 들여쓰기를 하여 아랫줄과 구분할 것 [옳은 예] #괄호에 맞춰서 정렬을 하는 경우..

python 2021.12.06

python 기초 문법 및 여러가지 알아두면 좋을 것들

사실 수치계산/데이터분석을 위해 파이썬을 계속사용하여 왔다. 하지만 아직 컴파일러 언어에 익숙한 까닭으로 인해 파이썬을 파이써닉하게 사용하지 않았다. 또 주로 배열과 리스트를 많이 사용하였고 딕셔너리나 튜플자료형을 사용하지 않았던 것 같다. 따라서 다시 파이썬을 기초부터 공부하기로 하고, 기초 문법 및 여러가지 알아두면 좋을 것들을 정리하고자 한다. 또 평소에 사용하면서 공부했으면 좋겠다고 생각한 것들 역시 정리하고자 한다. 변수 및 자료형 a=100 b=a print(id(a), id(b)) >>> 9792160 9792160 이와 같이 a와 b의 메모리 주소는 동일하다. 다만, 다음에 b에 다른 값을 덮어씌우면 b의 값과 메모리 주소는 변경될 것이다. 이번에는 리스트를 예로 들면 좋을 것 같다. a=..

python 2021.12.06

CSS 기초 문법들

CSS(Cascading Style Sheets) CSS를 사용하면 HTML 태그에 디자인 적용이 가능. 아래와 같이 3가지 스타일로 적용이 가능함 CSS 적용 빠르고 편함. 그러나 스타일을 변경할 때마다 일일히 변경하여야 하기 때문에 추후 유지보수가 좋지 못함. html 파일 안에 style 태그를 추가하는 방법(주로 헤더에 하는 듯 함) 이 방법 역시 여러 파일에 적용이 불가능하고, 이 때문에 유지보수에 적합하지 않음. html 파일과 css 파일을 따로 분리하여 작성하는 방법 css만 단독으로 변경이 가능하고 이를 통해 여러 html파일을 수정할 수 있으므로 유지보수에 편리 link: link태그로 사용할 css파일을 링크 href: href 속성에 css 파일 경로를 작성 type: link 태그..

html,css 2021.12.06

HTML 기초 및 여러 태그들

나중에 HTML/CSS를 다시 검색하는 수고로움을 줄이고자 아래와 같이 HTML/CSS의 기초들을 정리하였다. HTML의 기본 구조 HTML의 기본 구조는 아래와 같음 HTML 태그들 HTML5버전을 사용한다는 의미 HTML 요소들의 최상위에 존재 브라우저는 이를 통해 html이 시작되었다는 것을 인지 사이트의 제목, 설명, 부가정보등을 표기 한글, 일본어, 중국어가 포함된 페이지는 utf-8이라는 값으로 문자인코딩을 추가하여야 함. 모바일 환경에서 웹을 위해 추가 디바이스의 가로크기가 웹페이지의 가로와 같다는 말 페이지 이름 페이지 상단에 페이지 이름이 표기 HTML의 주요 태그들 ... 제목과 같은 텍스트에서 사용, 1->5 글자 크기가 작아짐. 줄이 바뀌지 않고 한줄로 이어 나와게 됨. 포트란의 &..

html,css 2021.12.06