본문 바로가기

IT

(228)
[CUDA] CUDA 설치해도 nvcc --version 안되는 경우 (Command 'nvcc' not found error) 리눅스에서 설치된 CUDA version을 확인하는 명령어는 다음과 같습니다. ​ nvcc --version ​ 하지만, 가끔 다음과 같이 CUDA를 설치했음에도 다음과 같은 에러가 발생하기도 합니다. ​ ​ 이럴 때는 환경변수 부분을 살펴보면 됩니다. ​ 사용자 별명을 관리하는 '~/.bashrc' 파일을 nano, gedit 등 편집기를 통해 키고 하단에 다음 두 줄을 입력합니다. ​ export PATH=/usr/local/cuda-11.2/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH ​ 기본 경로 환경변수인 PATH와 LD_LIBRARY_PATH가 설정되어야 합니다. ​ 이때, 실제 CUDA 버전과 CUD..
[CUDA] nvdia driver, CUDA, CUDNN 설치 여부 및 버전 검사 1. Nvidia Driver 설치 여부 및 버전 확인 $ cat /proc/driver/nvidia/version → 정상적으로 설치되어 있는 경우 아래와 같이 출력된다. NVRM version: NVIDIA UNIX x86_64 Kernel Module 430.34 Wed Jun 26 12:19:48 CDT 2019 GCC version: gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1) 이외 nvidia-smi를 이용해서 확인하는 방법도 있다. (이것을 더 추천한다.) $ nvidia-smi 2. CUDA $ nvcc --version → 정상적으로 설치되어 있는 경우 아래와 같이 출력된다. nvcc: NVIDIA (R) Cuda compiler driver ..
[Docker] WSL + Docker + GPU + Pytorch + Jupyter notebook wsl에서 진행하려면 제일 중요한 것은 윈도우 11이어야 한다는 것이다. 이게 아니면 cuda가 암것도 안된다. 이것때문에 다 설치를 해도 안됐던 것이다. 무조건 빌드버전을 확인해야한다. 파워셸에서 winver쳤을 때 빌드버전이 20150 이상이어야 WSL2에 쿠다 설치가 가능하다. 20150 이상 버전이라면 사전작업을 스킵해도 된다. 아래 프로세스는 윈도우 빌드 20150 이상으로 업데이트하기 위한 작업이다. 1. 윈도우 11버전에서 빌드환경 20xxx이상 wsl설치 2. wsl2로 업그레이드 해서 docker 사용 가능하게 하기 3. pytorch docker 이미지 다운로드 4. docker-nvidia 설치해서 docker에서도 gpu사용가능하도록 하기 5. nvidia 드라이버 설치 6. cud..
[Git] Git clone --depth=1 Git 리파지토리의 이력이 많아지거나, 리파지토리 용량이 클수록 clone을 받는데, 시간도 많이 걸리고 스토리지도 많이 필요하게 됩니다. 그래서 리파지토리의 일부 이력만 받아오는 방법이 있는데, 이를 전문용어로 shallow clone 이라고 합니다. 얕은 클론이라고 해석할 수 있는데, 이걸 기억하면 옵션도 쉽게 기억할 수 있습니다. 옵션이 depth거든요. shallow clone 앞에서도 설명했드시 Git 리파지토리의 전체 이력 중 일부만 받아오는 행위를 shallow clone이라고 합니다. 그 반대, 즉 전체 이력을 받아오는 것을 deep clone (깊은 클론)이라고 합니다. 대개의 경우, 전체 이력을 받아오지만, 리파지토리가 매우 크거나, 오랜동안 쌓인 이력이 매우 많을 경우, 또는 요즘은 ..
[eclipse] Java 실행 시 Argument 사용과 Option정의 1. Java Argument Java Application은 main메소드의 인자값으로 String타입의 배열형태로 받도록 되어있습니다. 아래 예제는 Java실행 시, argument를 출력해주는 예제입니다. public class ArgumentExample { public static void main(String[] args) { if(args!=null) { for(int i=0; i
[Intellij] Java 컴파일시 args 세팅하기 1. Edit configuration setting Alt + Shift + F10을 눌러 컴파일하려는 프로젝프 명을 포인팅 한 후, 오른쪽 방향키를 눌러 메뉴를 확장하여 Edit라는 버튼을 클릭합니다. 2. args 입력 위창에 뜨면 빨간색 밑출을 쳐놓은 곳에 원하는 인풋값을 넣어 하단의 run버튼을 클릭하여 실행합니다. [Intellij]자바 컴파일시 args 세팅하기 커맨드라인에서 자바 클래스 파일을 실행하면 실행명령어 뒤에 args를 바로 입력 할 수 있었지만 IntelliJ를 이용해 컴파일을 하며 args를 세팅하려니 당황스러웠습니다. 하지만 언제나 방법은 있는 storyinglass.tistory.com
'undefined reference' with 'not declared' In the first case, you declare a function, but don't define it. It compiles properly, but doesn't link because there is no definition for f. Hence the linker error. 선언만 하고 정의는 하지 않았다. 컴파일은 하지만 링킹은 할 수 없다. In the second case, you attempt to call an undeclared symbol. The compiler doesn't know what f is, so it issues an error. It's a different problem from a different stage of the compilation proc..
[CUDA] Thread, Block(SM), Grid(GPU) CUDA를 게임 프로젝트에 적용하기 CUDA를 게임 프로젝트에 적용하기 유영천-모여서 각자 코딩하는 모임 https://megayuchi.com tw: @dgtman www.slideshare.net
[Linux] gcc 로 C++ 컴파일 하기 일반적으로 리눅스 환경에선 C 은 gcc 로 컴파일 하고 C++ 은 g++로 컴파일 하게 되죠 그러나, 간혹 여의치 않은 상황에서 gcc 로 C++을 컴파일 할수 밖에 없는 상황에 봉착하는 경우는 -lstdc++ 온션을 붙여주면 됩니다. 가령 gcc hello.cpp -o hello -lstdc++ 그러나, 애지간하면 C++ 은 걍 g++로 컴파일 합시다. 나중에 라이브러리 링크 등에서 복잡한 문제들에 봉착할수 있거든요. gcc 로 C++ 컴파일 하기 gcc 로 C++ 컴파일 하기 일반적으로 리눅스 환경에선 C 은 gcc 로 컴파일 하고 C++ 은 g++로 컴파일 하게 되죠 그러나, 간혹 여의치 않은 상황에서 gcc 로 C++을 컴파일 할수 밖에 없는 상황에 봉착하는 bitsoul.tistory.com
[Docker] 도커 파일 복사 (로컬 <-> 컨테이너) 1. 컨테이너 안에 있는 파일을 로컬로 복사 “tmp-container”라는 컨테이너 내부에 “/root/data/test.md” 라는 파일이 있다고 하자. 이 파일을 로컬(호스트)의 “~/data/” 위치로 가져오려면 다음과 같이 하면 된다. $ docker cp tmp_container:/root/data/test.md ~/data/ cp 명령어 뒤에 컨테이너 이름과 컨테이너 내부 데이터 경로를 “:” 로 구분해 적어준다. 그 뒤에는 데이터를 복사해올 로컬 경로를 적어주면 된다. 2. 로컬의 파일을 컨테이너 안으로 복사 이번엔 로컬의 “~/data/test.md” 라는 파일을 컨테이너의 “/root/data/”로 복사해보자. 그냥 명령 인자의 순서를 반대로 해주면 된다. $ docker cp ~/da..
[Docker] Docker User Guide 도커를 start -> attach로 키면 도커 서버 환경이 나온다. sh를 실행하면 jupyter가 켜진다. 로컬의 파일을 옮기려면 로컬에서 cp를 작성해야 한다. 1. 도커 이미지 받아오기 docker run -it -v [압축푼 폴더 경로 입력]:/workspace contest:latest /bin/bash 컨테이너 실행하기 도커를 실행하는 명령어는 다음과 같습니다. docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...] 다음은 자주 사용하는 옵션들입니다. 옵션설명 -d detached mode 흔히 말하는 백그라운드 모드 -p 호스트와 컨테이너의 포트를 연결 (포워딩) -v 호스트와 컨테이너의 디렉토리를 연결 (마운트) -e 컨테이너 내에서 사..
비트연산 1반대값 0 0반대값 1 출력하려면 1^1 -> 0 0^1 ->1
Fixed Point Precision(고정 소수점) 과 Floating Point Precision(부동 소수점) 컴퓨터론 숫자표현을 어떻게 할수있을까요? 바로 두가지 방법으로 표현할 수 있답니다. 1. Fixed Point 2. Floating Point 가수부(Mantissa)는 1.xxxx 형태로 정규화를 한 뒤 가장 왼쪽에 있는 1을 제거하고 소수점 이하의 자리 값만 표현한다. 예를 들어, 13.5를 32bit 부동소수점 (float)으로 표현해보자. 13.5 → 1101.12 [진수변환] 1101.12 → 1.10112 x 23 [정규화] 부호비트는 양수이므로 0, 지수부는 3이므로 127 + 3 = 130, 2진수로 표현하면 100000102, 가수부는 1.1011에서 소수점 이하 자리만 표현하면 1011이 된다. 최종 값은 0100 0001 0101 1000 0000 0000 00002 Floating ..
[Linux] 실행파일 인자, argv, argc main 함수에 argc, argv 라는 매개변수를 전달한다. argc는 argument count로 int형으로 정의한다. 인수들의 개수이다. argv는 argument vector의 줄임말이며 char형 더블포인터이다. 인수들 자체를 나태니는 문자열들의 배열이다. [리눅스환경] 1. argc, argv로 프로그램에 인수 전달 argc, argv로 프로그램에 인자 전달하기 우리는 프로그램을 만들어 실행 할 때 늘 같은 조건으로 하지 않는다. 프로그램에 중요한 인자 값을 전달해야 할 때도 있다. 예를 들어 서버/클라이언트 프 gday2code.tistory.com 먼저, 다음과 같이 실행을 했다고 생각해 봅시다. 초록색으로 칠한 것은 실행 파일 명입니다. work를 실행을 한 것입니다. 그리고 보라색으로..
[Basic] cpu, core, processor 3 Processor chip 안에는 다음과 같이 3가지 종류가 있을 수 있겠습니다. single-core processor multi-core processor multi processors 1. multi-core processor 멀티 코어 프로세서란? 전에 포스팅한 멀티 프로세싱과 헷갈릴 수 있는 용어입니다ㅎㅎ 용어 중간에 '코어'만 들어갔을뿐 그게 그거 같죠... 차이를 알아보겠습니다. 멀티 코어 프로세서는 여러 개의 작업을 보다 효율 donghoson.tistory.com 사진에서 E) multi core with shared chche 를 보면 중복되는 부분이 있다. 코어가 두개 있는 cpu이다. cpu = 2개의 코어 + chche 인 것이다. 즉, cpu state, interrupt log..
[Git] 로컬에서 원격 branch 삭제하기 Local에서 브랜치 항목을 살펴보기 위해서는 터미널에서 git branch 를 치면 Local의 branch 들을 확인 가능하고 git branch -r을 치면 Remote의 branch 들을 확인할 수 있다. 간혹 Remote 저장소 (원격 저장소)에 추가되거나 삭제된 브랜치가 나의 Local에 적용안될 때가 있다. 상기내역을 보면 Local에서 삭제된 fetch 브랜치들이 remote에는 적용되지 않음을 볼 수 있다 ***** Local에서 git branch -r 로 보이는 remote branch 는 실제 remote 저장소의 branch 가 아니다. 실제로는 remote 저장소의 branch를 바라보는 참조내역이라 보면 될 듯하다. 원격 저장소의 branch가 삭제되어도 Local에서 git ..
[Git] pull request 방법 git 초보를 위한 풀리퀘스트(pull request) 방법 · 초보몽키의 개발공부로그 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 wayhome25.github.io
[Git] 특정 branch clone
[Git] branch생성 후 push하기 git checkout -b 브런치이름 git add . git commit -m "어쩌구" git push origin 브런치이름 [Git] 브랜치 생성하기 & 원격 저장소에 push 하기 branch 생성하기&전환하기 git bash 창을 열고 아래와 같이 입력하기 (원하는 작업 폴더로 이동) $ git branch $ git branch ychaen ychaen 이라는 이름의 branch를 생성한다 생성한 브랜치로 이동하기 $ git chec.. ychae-leah.tistory.com
[Linux] mv [참고사항] touch touch 는 파일의 날짜정보를 변경하는 명령어로 touch [파일명] 으로 비어있는 파일을 생성할 수 있습니다.
[Linux] Cmake 업데이트 [Ubuntu] CMake 업데이트 하는 방법 nipa에서 지원 받은 서버에 카카오에서 딥러닝 기반으로 개발한 Khaiii 형태소 분석기를 설치하려고 하던 중 (PythonHome) ubuntu@nipa2020-0000:~/somjang-utils/khaiii/build$ cmake .. CMake Error at CMakeLi.. somjang.tistory.com
[Basic] cpu, core, processor 2 1. 컴퓨터 구조와 기능 컴퓨터 구조 컴퓨터 구조는 위에처럼 크게 4가지로 나눠서 볼 수 있습니다. CPU : 중앙처리장치. 데이터를 처리하는 역할 Memory : 데이터를 저장하는 기능을 수행 I/O : 컴퓨터와 외부장치 사이에 데이터를 교환하는 기능을 수행 System Bus : 위의 모든 컴퓨터 시스템 구성요소들을 연결하여 데이터 전송을 수행 컴퓨터 기능 컴퓨터의 기능또한 크게 4가지로 나눠서 생각해볼 수 있습니다. Data Processing : 데이터 연산 Data Storage : 데이터 저장 Data Movement : 데이터 통신, 이동 Control : 제어(명령수행, 리소스 관리 등) 2. CPU 구성 Processor chip 안에는 다음과 같이 3가지 종류가 있을 수 있겠습니다. s..
[Basic] cpu, core, processor 1 CPU(Central Processing Unit, 중앙 처리 장치) 컴퓨터는 크게 CPU, RAM, 하드디스크 정도로 구분할 수 있겠는데요. 이 요소를 사람에 비유하면 RAM은 단기기억, 하드디스크는 장기기억, CPU는 사고를 담당한다고 볼 수 있습니다. CPU의 사고는 중요한 3가지 기능을 말하는 것인데요. 그것은 기억, 연산, 제어를 말합니다. 컴퓨터를 뜯어보면 쿨러 근처에 아주 작은 칩(마이크로프로세서) 모양의 CPU가 있는데요. 그게 전체 컴퓨터의 논리적 사고를 처리합니다. 그 작은게 이 모든 것을 다한다는게 참 대단한 것 같아요. 프로세서(Processor) 컴퓨터 운영을 위해 기본적인 명령어들을 처리하고 반응하기 위한 논리회로를 말합니다. 크게 소프트웨어의 신호를 받아 다른 하드웨어 부분으로..
offset 오프셋 (Offset) offset …을 상쇄하다, 벌충하다, 상쇄하는 것 출발, 최초, 시초(outset) 분가(分家), (종족의) 지족(支族), 분지(分枝); (산의) 지맥; (일반적으로) 파생물 오프셋이란, 두 번째 주소를 만들기 위해 기준 genesis8.tistory.com
[Git] 계정 이름 변경 [GitHub] 깃허브 계정 이름 변경하기 깃허브를 사용하다가 계정 이름을 변경하는 방법이 있길래 공유해 보겠습니다. 이 방법은 예상치 못한 문제가 생길 수 있으니 꼭 필요한 경우에만 진행하세요! 먼저 깃허브 홈페이지로 이동해 steady-hello.tistory.com
[Git] 원격저장소 파일 삭제 폴더를 제거할 때 필요한 명령어는 다음과 같습니다. git rm --cached -r 폴더명 그리고 파일을 제거할 때는 다음과 같이 명령해주면 됩니다. git rm --cached -r 파일명 또는 git rm --cached 파일명 여기서 --cached는 원격저장소의 폴더 또는 파일을 삭제한다고 알려주는 옵션입니다. 만약 --cached가 없으면 로컬저장소의 폴더 또는 파일도 삭제합니다. 그런데 로컬저장소에서는 꼭 필요한 파일이거나 폴더일 수 있기 때문에 잘 판단해서 --cached를 넣어줘야 합니다. 여기서 로컬저장소에서 꼭 필요한 파일이나 폴더에는 코드를 실행하기 위해 꼭 필요한 패키지, 라이브러리, 실행파일 같은 것들입니다. 그러나 개발환경이 조금씩 다른 다른 협업자들을 위해서 이러한 파일이나 ..
Little Endian, Big Endian big endian 가장 중요한 앞자리의 수가 메모리의 앞에서부터 차례로 저장되어 있다. little endian 가장 중요한 앞자리의 수가 메모리의 뒤에서부터 있다. 가장 중요하지 않은 뒷자리 수가 메모리의 앞에서부터 차례로 저장되어 있다.
[Git] commit 옵션 -m : vim에서 별도의 메세지를 작성할 필요없이 인라인 형식으로 바로 커밋 메세지 작성. -a : 별도의 add명령어를 사용하지 않고 수정된 파일에 대해 add, commit을 한번에 수행함. (단, 한번도 add되지 않은 파일은 add를 따로 작업 해줘야함.) -am : a, m의 옵션을 합친 형태. [Git] 메뉴얼 보는법, commit의 옵션, git의 3가지 공간 메뉴얼 보는법 git의 다양한 사용법을 알고 싶을 때 command창에서 git의 메뉴얼을 볼 수 있습니다. $ git --help git --help 명령어를 치면 명령어나 옵션에 대한 설명을 확인할 수 있습니다. (영어...라니 yuja-kong.tistory.com
[Git] git pull (fatal: refusing to merge unrelated histories) 에러 원격 저장소를 remote로 설정하고 바로 push를 하면 몇가지 오류가 발생할 수도 있다. 예를 들어 아래와 같은 오류 메시지이다. rejected : push가 거부되었다. master -> master : 로컬 저장소의 master 브랜치의 변경 사항을 원격 저장소의 master 브랜치에 반영하려 했는데 non-fast-forward : 원격 저장소의 master 브랜치가 로컬 저장소의 버전보다 이전 버전이 아니다. 라는 의미이다. 즉, 오류가 발생한 원인은 github에서 새로운 프로젝트를 생성하면서 만들어진 원격 저장소의 readme.md 파일때문 일 것이다. 더 정확히 말하면 readme.md 파일의 존재가 문제가 되는 것이 아니고, 원격 저장소에서 이루어진 readme.md를 추가하는 커밋이..
[Git] clone과 fork 차이점 git을 push하는데 기존의 repository의 내용이 담겨있어야 한다는 것을 이해하지 못했다. 그래서 git init, git remote add까지는 했지만 처음 시작을 깨끗한 상태에서 한 것이 아니라 그냥 내가 push하길 원하는 파일 이외에도 각종 잡다한 파일이 모두 들어있는 저장소였던 것이다. git clone과 git fork의 차이점을 보면서 아, 내가 뭔가 잘못생각하고 있었구나!를 깨달았다. fork fork는 다른 사람의 Github repository에서 내가 어떤 부분을 수정하거나 추가 기능을 넣고 싶을 때 해당 respository를 내 Github repository로 그대로 복제하는 기능이다. fork한 저장소는 원본(다른 사람의 github repository)와 연결되어 ..