일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Entropy Minimization
- Pix2Pix
- SSL
- mme paper
- mocov3
- dcgan
- simclrv2
- cifar100-c
- semi supervised learnin 가정
- UnderstandingDeepLearning
- 백준 알고리즘
- tent paper
- CoMatch
- Meta Pseudo Labels
- BYOL
- dann paper
- 딥러닝손실함수
- 컴퓨터구조
- shrinkmatch paper
- CycleGAN
- conjugate pseudo label paper
- Pseudo Label
- ConMatch
- 최린컴퓨터구조
- GAN
- adamatch paper
- CGAN
- WGAN
- remixmatch paper
- shrinkmatch
- Today
- Total
목록컴퓨터구조 (19)
Hello Computer Vision
나는 돌리는 모델의 성능의 진행상황을 보기 위해 tensorboard 를 자주 활용한다. 포트도 고정해서 사용하는데 가끔씩 이미 배정되있다며 다른 포트로 바꿔줘야하는 귀찮은 일이 발생하기도 한다. 따라서 이럴 때 해당 포트에 있는 프로세스를 확인하고 kill하는 방법을 기록해보려고 한다. 우선 수행하고 있는 해당 포트 프로세스의 ID를 알고있어야한다. lsof -i TCP:6006 간단한 명령어로 해당 포트의 ID를 알 수 있다. 그리고 kill하기 위해서는 kill {ID} ID안에 해당 포트 프로세스를 넣으면 된다.
캐시는 메인메모리의 성능을 높이기 위한 하드웨어이다. --> 프로세스 근처에 있어 접근이 빠르다. 명령어는 한번 사용되면 다시 사용될 가능성이 높기에 캐시에 머문다. 한번 사용된 명령어와 인접해있는 명령어들도 쓸 가능성이 높으니 block으로 캐시에 가져온다.(Locality) (한번에 가져오는 block의 사이즈와 cashe의 성능과도 연관이 깊다. 그래프는 log함수 그래프를 띈다) 대부분의 캐시는 set associative cashe로 이루어져있다. 이유 : cashe miss rate를 줄이기 위해 --> 캐시 메모리의 사이즈가 클수록 이 비율이 작아진다 예시) 가장 오랫동안, 많이 사용되지 않는 명령어를 쫓아낸다 cashe miss의 종류 capacity miss, conflict miss, ..
컴퓨터 구조 강의를 듣는데 DRAM 이 많이 나와 한번 체크하고 갈라고 합니다. 찾아보면 찾아볼 수록 끝이 없었는데 강의를 이해할 수 있도록 가볍게만 이해해보려고 합니다. DRAM은 Dyanamic RAM의 줄인말로 동적램이라고도 한다. DRAM은 비휘발성 메모리로 빠른 속도로 일을 처리한다. (근데 명령어가 왔다갔다 할라면 몇백 사이클이 필요하다 했으니 캐시가 이것보다 더 빠르다) 이곳에는 정보를 저장하는 셀이 무수히 많은데 이 셀마다 트랜지스터와 커패시트로 이루어져있다. 이러한 간단한 구조덕분에 일을 빠르게 빠르게 처리할 수 있는 것이다. 셀이 많으면 많을 수록 많은 정보를 담을 수 있지만 그만큼 기술력이 중요하다. DDR, DDR2 DDR3 이런 용어들을 볼 수 있는데 숫자가 높아질 수록 데이터 전..
시험공부에 대해서 계획을 한번 세워봤는데 조금 여유있어서 후다닥 들어보려고 합니다. 작은 CPU들도 다 파이프라인화 되어있다 --> 명령어들을 병렬적으로 처리한다. (파이프라인 내용은 전 주차에 설명) 20년전 CPU들과 비교했을 때 10,000배 이상의 성능을 낸다. but 이에 비해 DRAM의 성능은 발전 속도가 빠르지 않다. 메모리는 크고, 빠르면 좋다. -> 문제 : 빠르면 비싸다. 해결 : Locality를 활용한다. (한 명령어를 참조하면 그 주변에서 다시 참조하여 사용) (주변이라는 것은 메모리의 hierarchy에 따라 밑으로 가면 더 커진다고 합니다) spatial locality 를 활용하기 위해서는 한번에 block(대량의) 명령어들을 가져온다. 우리가 프로그래밍 할 때 캐시, 메모리..
이번 강의에서는 지난 강의 때 이야기했던 branch 명령어에 대한 내용들이 연결됩니다. 제가 branch가 잘 몰라서 한번 찾아보니 branch를 쓰는 이유 : 이동하기 위해서 PC 레지스터가 동작을 하며 이동하다가 branch명령어를 만난다면 조건에 따라 이동 이렇게 가볍게 이해하였습니다. branch prediction 명령어의 주소만 보고 어디로 갈지 결정을 내린다 예측하는 이유 : 다음 명령어를 미리 예측해 더 빨리 패치하기 위해서. 틀리면 다시 돌아가서 반복 branch 명령어의 종류 : direct, indirect, conditional, unconditional 80%가 conditional branch이다. 컴파일러는 파일을 translate하는 것뿐만 아니라 실행도 한번씩 해본다 --..
이번 주에 과제가 너무 몰려서 정신이 없었는데 그나마 조금 정리가 되서 2개 강의를 한번에 기록하려고 합니다. 지난 번에 이어 pipeline에 대한 예시들이 주로 이루었습니다. 파이프라이닝을 하지 않으면 데이터 의존성(Data dependences)를 신경쓸 필요 없다 (하지 않는다면 명령어들이 순서대로 들어와서 실행하게 되니까) 그러나 파이프라이닝을 한다면 명령어의 실행들이 overlap되기 때문에 신경써주어야 한다. ex) 명령어가 fetch 하고 decoding할 때 그 다음 명령어가 fetch하는 과정을 거친다. 이러한 과정에서 명령어마다 read하는 속도가 다를 수 있는데 뒤에 있는 명령어의 read가 더 빨리 실행될 경우 뒤에 있는 명령어를 write하는 문제가 발생할 수 있음 --> 데이터..
이제 곧 시험기간인데 그 전에 최대한 들어보겠습니다.. 오늘 강의는 Floating Point연산과 Pipeline 에 대한 강의가 진행되었습니다. 컴퓨터에서 실수 표현 3요소 : 지수, base, 부호(0이면 +, 1이면 -) bias representation 장점 : 크기 비교 쉽다(지수가 큰 숫자가 큰 수), 더 많은 수 표현 가능 표현할 수 없는 숫자들은 Not a Number 로 표현 -> 실행이 불가능하니 연산이 멈춫ㅁ ex) 0 나누기 0, 무한대 / 무한대 Floating Point 덧셈뺄셈 알고리즘 0인지 체크 -> 작은 수 align -> 덧셈 or 뺄셈 -> 정규화 Floating Point 곱셈나눗셈 알고리즘 0인지 체크 -> 지수부분 빼거나 더한다 -> significand 곱 ..
최근에 과제랑 팀플이 너무 몰려서 정신이 없네요.. 그럼 오늘 강의 들은 것 간략하게 기록해보겠습니다. 저번에 이어서 산수연산 예제들을 많이 살펴보았습니다. 컴퓨터가 곱셈을 실행할 때는 단순히 하는 것이 아닌 알고리즘에 맞추어 곱셈을 합니다. 그렇다는 것은 어떤 알고리즘을 쓰냐에 따라 효율성과 속도가 달라질 거 같네요.(나눗셈도 마찬가지) 최근 CPU에는 10억개 이상의 회로가 있다.(스마트폰에는 더 많은 회로가 집적되어서 있다고 합니다. 그래서 고장이 잘나나..?) 그래서 덧셈뺄샘 정도는 빠르게 할 수 있다. 여기서 연산은 integer연산을 말한다. 내가 예전 자바를 공부할 때도 이해 안되는 부분이 왜 float, int 부분들을 정의해주는 것이었다. 근데 조금 전 곱셈, 나눗셈은 알고리즘에 의해서 ..