CS 35

[System C] 개발 환경 구축

System C를 공부하기 위해 개발 환경을 구축했습니다. System C는 C++의 라이브러리인데, RTL로 chip을 구현하기 전에 architecture를 구체화시켜 simulation 할 수 있는 언어입니다. Architecture design simulation에 System verilog, C도 사용되긴 합니다만, 이들 간의 명확한 차이는 모르겠습니다. 책을 사기에는 돈이 좀 아까워서.. 학교 도서관에서 위 책을 대출해서 공부해보려고 합니다. 1. System C library 설치 Systemc library SystemC www.accellera.org 위 링크를 타고 들어가면 SystemC를 설치할 수 있습니다. Window, Linux 모두 설치할 수 있지만, Visual Studio를..

CS/System C 2022.07.24

[Linux] VirtualBox에서 VDI(Virtual Disk Image) 파일 크기 줄이기

https://astinlen.tistory.com/18 VirualBox에서 vdi파일 크기 줄이기 제가 사용하는 Windows환경에서 VirualBox를 활용하여 Ubuntu를 사용하는데 실 용량은 7.9GB입니다. VirualBox에서 해당 가상머신의 디스크를 동적확장저장소로 지정해놓았으나, 실제 HDD에서 사용하는 공 astinlen.tistory.com 8년전에 올라온 게시글을 참고해서 VDI 파일 크기를 줄이는데 성공했습니다.. 개인적으로 기억해두고 싶어서 게시글 남깁니다. Window 운영체제에서 VirtualBox를 활용해서 Linux를 사용하는데, 실제 용량은 약 20GB정도 됩니다. VB에서 해당 가상머신의 저장소를 동적 확장 저장소로 설정했지만, 실제 SDD에서 차지하는 공간이 50G..

CS/Linux 2022.07.22

[RISC-V] Ubuntu 가상머신에서 RISC-V toolchain 설치하기

본 게시글은 RISC-V Software Collaboration의 github를 참고하여 작성되었습니다. 또한 Ubuntu를 기준으로 작성되었기 때문에 Fedora, CentOS 등 운영체제를 사용하시는 분들은 원문을 참고하시면 됩니다. https://github.com/riscv-collab/riscv-gnu-toolchain GitHub - riscv-collab/riscv-gnu-toolchain: GNU toolchain for RISC-V, including GCC GNU toolchain for RISC-V, including GCC. Contribute to riscv-collab/riscv-gnu-toolchain development by creating an account on Git..

CS/RISC-V ISA 2022.07.21

[Linux] Vagrant & Virtual Box를 이용한 가상 머신 만들기

1. Vagrant & Virtual Box 설치 먼저 Varagnt와 Virtual box를 설치합시다. Download Vagrant Vagrant by HashiCorp Vagrant enables users to create and configure lightweight, reproducible, and portable development environments. www.vagrantup.com 위 링크를 타고 들어가면 vagrant를 설치할 수 있습니다. 이때 옵션으로 686, Amd64가 있는데 각각 32bit, 64bit 운영체제 기반 프로그램이라는 말이므로 본인 PC에 맞게 설치하시면 됩니다. 설치 과정에서 나타나는 옵션들은 딱히 변경할 필요 없으며 가장 최신 버전으로 설치해주세요. Do..

CS/Linux 2022.07.21

[BOJ, Python] 1181번 : 단어 정렬

문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 예제 입력 1 13 but i wont hesitate no more no more it cannot wait im yours 예제 출력 1 i im it no but more wait wont yours cannot hesitate..

CS/BOJ 2022.07.14

[BOJ, Python] 1436번 : 영화감독 숌

문제 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 숫자란 어떤 수에 6이 적어도 3개이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 숫자는 666이고, 그 다음으로 큰 수는 1666, 2..

CS/BOJ 2022.06.02

[BOJ, Python] 1935번 : 후위 표기식2

문제 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. 3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주어진다, 그리고 피연산자에 대응 하는 값은 100보다 작거나 같은 자연수이다. 후위 표기식을 앞에서부터 계산했을 때, 식의 결과와 중간 결과가 -20억보다 크거나 같고, 20억보다 작거나 같은 입..

CS/BOJ 2022.06.02

[BOJ, Python] 11866번 : 요세푸스 문제 0

https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램..

CS/BOJ 2022.05.20

[CUDA] CUDA(.cu) to SSAS(GPU assembly) compilation with Visual Studio

CUDA는 NVCC(Nvida's CUDA Complier)를 사용해서 compile할 수 있습니다. NVCC를 통해 CUDA를 intermediate language인 PTX로 compile할 수 있는데, 이에 대한 방법은 아래 게시글에서 설명하였습니다. 2022.05.10 - [프로그래밍/CUDA] - [CUDA] Visual Studio 2022에서 .cu(CUDA 파일) ➡ .ptx(PTX 파일) 변환하기 [CUDA] Visual Studio 2022에서 .cu(CUDA 파일) ➡ .ptx(PTX 파일) 변환하기 졸업프로젝트를 하면서 CUDA language를 건들이게 되었습니다. 졸업프로젝트의 목표가 GPGPU 설계인데, GPGPU를 검증하려면 instruction을 넣어서 제대로 동작하는지 확..

CS/CUDA 2022.05.17

[CUDA] CUDA to PTX(intermediate language) compilation with Visual Studio

졸업프로젝트를 하면서 CUDA language를 건들이게 되었습니다. 졸업프로젝트의 목표가 GPGPU 설계인데, GPGPU를 검증하려면 instruction을 넣어서 제대로 동작하는지 확인해야합니다. 그런데 machine language를 직접 써서 넣을 수는 없으니 compiler를 통해서 변환하는 과정을 거쳐야합니다. CUDA syntax에 대해서는 따로 게시물을 만들 생각입니다. CUDA ➡ PTX ➡ GPU assembly ➡ machine language 이렇게 3번의 변환을 거쳐야 저희 조가 설계할 GPGPU가 알아먹는 machine language가 됩니다. 우선 Visual Studio에서 CUDA runtime project를 만들어 줍니다. 프로젝트를 만들면 위와 같이 default C..

CS/CUDA 2022.05.10