파랑, 풍랑 그리고 너울
파랑 : 바람에 의해 발생한 풍랑과 너울을 종합적으로 이르는 말
- 파고(wave height), 파장(wave length), 주기(wave period)로 구분
- 바람이 강하게 불 때는 풍랑과 너울을 구분하기 힘듬.
풍랑 : 해상에서 바람에 의해 발생하는 파도를 의미
- 바다에서 바람이 해수면 위를 지속적으로 불 때 발생
너울 : 풍랑이 바람이 부는 지역을 벗어나 더 이상 발달하지 않고 감쇄하는 형식의 파도를 의미
파랑의 특성
바람이 막 불기 시작하면 짧은 주기의 표면파, 파고가 높아지면 장주기의 파로 변환
풍랑의 마루는 뾰족한 편이며 파장과 주기가 짧다는 특징을 지님.
파고(wave height) : 파곡에서 파봉에 이르는 연직거리를 의미
파장(wave length) : 파봉에서 파봉, 혹은 파곡에서 파곡에 이르는 거리
주기(wave period) : 파봉에서 파봉, 혹은 파곡에서 파곡이 한 지점을 통과하는 시간
파속(wave celerity, wave speed) : 파장을 주기로 나눈 속도
유의파고 : 임의 시간동안 발생한 파고 중 파고가 높은 순서로 1/3에 해당하는 것까지의 파고들의 평균을 의미
참고
'그 외' 카테고리의 다른 글
병렬 프로그래밍 용어 정리 (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 |
인터넷 속도 올리기
gpedit.msc
혹시 실행이 안되면 아래 파일 실행
컴퓨터구성>관리템플릿>네트워크>QoS패킷 스케줄러
예약대역폭 제한 클릭
아래와 같이 변경
'그 외' 카테고리의 다른 글
파랑, 풍랑 그리고 너울 (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 |