Computer Science

    [CSAPP] 5.12 Understanding Memory Performance(메모리 성능의 이해)

    5.12 Understanding Memory Performance(메모리 성능의 이해) 이제부터 memory 접근에 대한 성능을 살펴볼 것이다. 이 때, modern processor의 경우 하나 이상의 cache memory들을 가지고 있는데, 우리가 전제로 깔고 갈 상황은, memory에 대한 접근 중 data가 cache에 전부 있는 경우만이다 (이 cache memory에 대한 것은 6장에서 더 자세히 다룰 것이다). Load and Store Operation 5.11장에서 봤듯이, functional unit 중 load unit과 store unit이 각각 load와 store 연산을 담당한다. 여기서 몇가지 특징들이 있다. 각 unit들은 memory 관련 연산 중 아직 pending 상..

    [CSAPP] 5.11 Some Limiting Factors(일부 제한 요인들)

    5.11 Some Limiting Factors(일부 제한 요인들) 위 throughput bound 말고도 성능을 제한시킬 수 있는 여러 요소들을 살펴보자. 5.11.1 register Spilling(레지스터 넘기기) 위에서 k X k의 unrolling을 살펴봤다. 이것의 아이디어는 다음과 같았다. k개의 연산에 k개의 서로 다른 register를 사용해서 dependency를 없애고 병렬적으로 실행시키자. 하지만 이 k가 이 현재 아키텍쳐의 register 수를 넘긴다면 어떻게 될까? 이에 대해 살펴볼 것이다. YMM register의 수는 총 16개 이므로, k가 16을 넘긴 20 X 20 unrolling이라면, register의 수를 넘겼다고 할 수 있다. 이 때, 10 X 10 unroll..

    [CSAPP] 5.10 Summary of Results for Optimizing Combining Code (최적화 코드의 결과 요약)

    5.10 Summary of Results for Optimizing Combining Code 현재까지는 scalar code에 대한 CPE를 살펴봤었다. 즉, AVX vector 연산을 활용한 parrallelism을 살펴보진 않았다는 뜻이다. 여기까지의 여러 최적화로 인해 CPE들은 throughput bound 근처까지 내려가도록 했다. → 현재 성능을 제한하고 있는 것은 throughput bound 하나라는 얘기이다. → 이 때, 이 throughput bound를 결정짓는 요소가 바로 functional unit들의 capacity, 즉 해당 operation을 병렬로 처리 가능한 functional unit들의 수이다. → 이러한 처리로, 기존에 비해 10 ~ 20배 더 빠른 CPE를 달성..

    [JAVA] 클래스, 객체, 참조변수, 객체배열_JAVA

    클래스의 필요성 - 예를들어, 전화번호부에서 한 사람의 "이름"과 "전화번호"는 항상 같이 붙어다녀야 하는 데이터이다. - 이 두 가지 데이터를 각각 별개의 변수에 저장하면 데이터가 변경될 때 각각 수정해줘야하는 번거로움이 있다. - 서로 관련있는 데이터들을 하나의 단위로 묶어두면 편할 듯하다. - 이것이 클래스라는 개념이 필요한 이유이다. 클래스 개념 및 사용법 - "사람(Person1)"이라는 클래스를 만들어 그 클래스 내에서 "이름"과 "전화번호" 변수(field, data member라고도 불림)를 저장할 수 있다. - 클래스의 이름은 항상 대문자로 시작하는 것이 관습이다. - 자바에서 각각의 클래스는 별개의 파일로 저장되어야 하고 파일의 이름은 클래스의 이름과 일치해야 한다. 즉 클래스 Pers..

    [백준] 1182번: 부분수열의 합_JAVA

    문제(1182번: 부분수열의 합 (acmicpc.net) 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,..