파랑, 풍랑 그리고 너울
파랑 : 바람에 의해 발생한 풍랑과 너울을 종합적으로 이르는 말
- 파고(wave height), 파장(wave length), 주기(wave period)로 구분
- 바람이 강하게 불 때는 풍랑과 너울을 구분하기 힘듬.
풍랑 : 해상에서 바람에 의해 발생하는 파도를 의미
- 바다에서 바람이 해수면 위를 지속적으로 불 때 발생
너울 : 풍랑이 바람이 부는 지역을 벗어나 더 이상 발달하지 않고 감쇄하는 형식의 파도를 의미

파랑의 특성
바람이 막 불기 시작하면 짧은 주기의 표면파, 파고가 높아지면 장주기의 파로 변환
풍랑의 마루는 뾰족한 편이며 파장과 주기가 짧다는 특징을 지님.
파고(wave height) : 파곡에서 파봉에 이르는 연직거리를 의미
파장(wave length) : 파봉에서 파봉, 혹은 파곡에서 파곡에 이르는 거리
주기(wave period) : 파봉에서 파봉, 혹은 파곡에서 파곡이 한 지점을 통과하는 시간
파속(wave celerity, wave speed) : 파장을 주기로 나눈 속도
유의파고 : 임의 시간동안 발생한 파고 중 파고가 높은 순서로 1/3에 해당하는 것까지의 파고들의 평균을 의미
참고
KIOST
KIOST는 과학기술로 바다를 재창조해 나갑니다.
www.kiost.ac.kr
해파(파도)의 여러가지 종류
고등학교 교육과정에서 다루는 해파는 천해파와 심해파이다. 그리고 파가 발달하고 소멸하는 과정을 기준으로하여 풍랑, 너울, 연안쇄파 정도를 배운다. 그런데 해파에는 이것밖에 없을까? 아��
kalchi09.tistory.com
'그 외' 카테고리의 다른 글
병렬 프로그래밍 용어 정리 (0) | 2020.06.11 |
---|---|
인터넷 속도 올리기 (0) | 2020.02.01 |
[R] 재미삼아 푸는 문제 (0) | 2020.01.15 |
지도 그림 그리기 예제 (0) | 2019.11.11 |
[주식] 키움 영웅문 통한 주식 자료다운로드 (0) | 2019.11.11 |
병렬 프로그래밍 용어 정리
병렬 프로그래밍¶
병렬처리가 가능한 경우
- 서로 영향을 미치지 않는 경우 병렬처리가 불가능한 경우
- 직렬적 연산이 필요한 경우
병렬처리의 종류
- Thread나 Core를 통한 병렬 프로그래밍
- GPGPU를 통한 병렬 프로그래밍
- Process 병렬 프로그래밍(여러 컴퓨터 개념)
SIMD(Single Instruction Multiple Data)
- 하나의 명령어로 여러개의 값을 동시에 계산하는 방식
SISD(Single Instruction Single Data)
- 한 프로세서가 한번에 하나의 명령어를 처리할 때 하나의 메모리에 저장되어 있는 한 데이터를 이용하여 처리하는 것 (https://ko.wikipedia.org/wiki/SISD)
MISD(Multiple Instruction Single Data)
- 각기 다른 명령어를 처리하는 처리부 여러개가 동일한 데이터를 처리하는 병렬 컴퓨팅 아키텍쳐를 의미.
MIMD(Multiple Instruction Multiple Data)
- 공유메모리나 분산메모리에 해당
Python에서는?¶
Thread 기반 병렬 프로그램
- OpenMP
- pthreads
- Parallel Pattern Library Process 기반
- MPI
- HPF
- PVM GPGPU 기반
- CUDA
- openCV
CUDA¶
- GTX 이후 생산되는 GPU를 의미함.
- Geforce : 일반적인 그래픽카드
- Quadro : 고성능 그래픽 작업전용
- Tesla : 그래픽 기능 없이 고성능 연산 전용
CPU와 GPU의 Transistor¶
CUDA 병렬처리의 용어¶
- Kernel : GPU에서 병렬 실행되는 명령어의 모음
- Thread : Kernel 함수등이 호출되었을 때 실제로 업무를 수행하는 최소단위. 멀티프로세서 내에서 작동되는 코어 하나
- Block : 작업단위(SM)를 의미하며 하나의 멀티 프로세서에서 작동되는 스레드의 모음을 의미. 쓰레드가 마치 원소로 구성된 어레이처럼 다차원 구성 가능
- Grid : Block 의 집합
- Warp : 작업단위 내에서 동시 실행 가능한 Thread의 개수(ex 32개 쓰레드 들을 단위로 묶은 것)
- Registor : On Chip Processor에 있는 Memory로 가장 빠른 메모리. 커널함수에서 로컬 변수를 많이 사용할 수록 사용량이 증가.
- Shared Memory : On Chip Processor에 있는 Memory, SM 내의 Thread들이 공유(중요), L1 캐시급 속도
- Global Memory : GPU에 장착된 DRAM, GPU 칩 외부에 존제하여 속도는 느린편이지만 CPU보다는 상당히 빠르다. READ/Write : 400~ 600 Cycles
- Constant Memory(64KB) : DRAM에 있는 데이터를 읽기전용 캐시를 지원,글로벌 메모리처럼 모든 스레드가 공유 , Write( from DRAM) :400~ 600 Cycles, Read : Registor와 동급
- Texture Memory : 캐시 읽기를 지원하는 Gloval Memory
CUDA 스트리밍¶
- 연산속도에 비해 Host DRAM과 GPU DRAM의 데이터 전송 속도가 느림
- 큰 데이터를 가공할 경우 연산시간보다 DATA전송시간의 비중이 커짐
- DATA전송 및 연산시간을 작은 단위로 나누어 순차적으로 진행
CUDA Library¶
- cuRAND : 랜덤 수 생성
- cuFFT(CUDA Fast Fourier Transform Library) : FFT 연산 라이브러리
- CUBLAS(CUDA Basic Linear Algebra Subroutines library) : 선형대수 연산 라이브러리
커널함수 : CPU에 의해 호출되 GPU에서 실행
Device 함수 : GPU에서 실행 Host 함수 : CPU에서 실행
example¶
- Beam Pattern 생성
- cubic Spline Interpolation : 병렬화는 가능하나 Sequential 에 비해 검색시간이 느림(실패)
- 라즈베리파이, 비트코인
헤테로 지니어스 컴퓨팅¶
- 한가지 이상의 프로세서를 내장한 시스템
- CPU는 복잡하고 선형적인 작업에 효율적, GPU는 병렬화 가능한 반복작업에 효율적
'그 외' 카테고리의 다른 글
파랑, 풍랑 그리고 너울 (0) | 2020.08.03 |
---|---|
인터넷 속도 올리기 (0) | 2020.02.01 |
[R] 재미삼아 푸는 문제 (0) | 2020.01.15 |
지도 그림 그리기 예제 (0) | 2019.11.11 |
[주식] 키움 영웅문 통한 주식 자료다운로드 (0) | 2019.11.11 |
인터넷 속도 올리기
'그 외' 카테고리의 다른 글
파랑, 풍랑 그리고 너울 (0) | 2020.08.03 |
---|---|
병렬 프로그래밍 용어 정리 (0) | 2020.06.11 |
[R] 재미삼아 푸는 문제 (0) | 2020.01.15 |
지도 그림 그리기 예제 (0) | 2019.11.11 |
[주식] 키움 영웅문 통한 주식 자료다운로드 (0) | 2019.11.11 |
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
[R] 재미삼아 푸는 문제
###연습 문제 4
#for 반복문과 문자열 연산, if 조건문을 사용하여 다음과 같이 인쇄한다.
# *
# ***
# *****
# *******
# *********
# ***********
# *********
# *******
# *****
# ***
# *
답안
#case 1
for(t in c(0:4,5:0)){
k=paste0(rep(' ',11),collapse = '')
substr(k,6-3,6+3)=paste0(rep('*',seq(1,11,2)[3+1]),collapse = '')
print(k)
}
#case 2
t=-5:5
for(tt in c(0:4,5:0)){
k=rep(' ',11)
k[abs(t)<=tt]='*'
print(paste0(k,collapse = ''))
}
#case 3
t=-5:5;k=0
for(k in c(0:5,4:0))
print(paste0(
paste0(paste0(rep(' ',abs(t)[1]-k),collapse = ''),paste0(rep('*',k),collapse = ''),collapse = ''),'*',
paste0(paste0(rep('*',k),collapse = ''),paste0(rep(' ',abs(t)[1]-k),collapse = ''),collapse = '')
))
#case 4
for(t in -5:5){
temp=rep(' ',abs(t))
while(length(temp)<5){
temp=c(temp,'*')
}
print(paste0(c(paste0(temp,collapse =''),'*',paste0(rev(temp),collapse ='')),collapse = ''))
}
'그 외' 카테고리의 다른 글
병렬 프로그래밍 용어 정리 (0) | 2020.06.11 |
---|---|
인터넷 속도 올리기 (0) | 2020.02.01 |
지도 그림 그리기 예제 (0) | 2019.11.11 |
[주식] 키움 영웅문 통한 주식 자료다운로드 (0) | 2019.11.11 |
인공지능, 머신러닝 그리고 데이터마이닝의 차이점 (0) | 2019.07.01 |