aliases : [GPU상태확인, [[ubuntu]]]
tags : ubuntu명령어, NVIDIA,


NVIDIA GPU 상태 확인

데이터 학습시 GPU에서 잘동작하는지 확인하는 방법으로 GPU의 상태를 확인한다
터미널에 다음과 같이 입력하면 상태를 확인할 수 있다

$ nvidia-smi

아래와 같은 테이블이 표시된다

  • Driver Version
    Driver Version: 510.47.03 현재 설치되어 있는 GPU Driver Version

  • CUDA Version
    CUDA Version: 11.4 현재 설치되어 있는 CUDA Version
    CUDA는 2개의 API를 가지고 있는데, 하나는 runtime API이고 다른 하나는 driver API 라고 한다 알고있는 Version과 다르다면 runtime API와 driverAPI를 별도로 설치한것이다

  • GPU Fan
    GPU Fan 0 48% GPU의 번호와 GPU의 fan 사용량을 %로 표시

  • Name
    NVIDIA RTX A6000 GPU의 model명 표시

  • Temp
    39C 현재 설치되어있는 GPU의 현재 온도를 섭씨로 표시
    온도가 너무 높으면 성능 저하 및 GPU Drop이 발생할 수 있다

  • Perf
    P8 Performance mode표시
    P0 ~ P12까지 존재하며 숫자가 작아질수록 GPU의performance가 좋은 상태

  • Persistence-M
    On: 파워 지속성 모드 on/off 표시
    기본적으로 default mode는 off이며 on상태시 power limit을 설정할 수 있다
    power를 얼마나 지속할지 정해줄 수가 있다 GPU 사용시에 지연 시간을 아끼는 장점이 존재하지만, 전력을 더 낭비 한다

  • Pwr:Usage/Cap
    23W /300W GPU의 현재 전력의 사용량과 최대 용량을 표시

  • Bus-ID
    00000000:08:00.0 메인보드 마다 가지고 있는 PCI slot에 부여된 Bus-ID
    이를 통해서 사용하는 GPU 번호와 메인보드의 PCI slot을 매칭시킬 수 있다

  • Disp.A
    off Display를 출력하는지 표시
    모니터에 연결된 GPU는 on으로 변경된다

  • Memory-Usage
    15MiB/49140MiB GPU의 memory와 GPU의 총 memory를 표시

  • GPU-Util
    0% GPU의 현재 사용량 표시
    100%의 성능 중 얼마만큼 사용하고 있는지를 나타내고 있다

  • Volatile Uncorr.ECC
    off ECC모드 on/off 표시
    기본적으로 default mode는 on이며 Error count가 증가한다
    count가 증가하면 system hang이 발생한다 그래서 off로 설정하고 작업하는 곳이 많다 그리고 off로 설정하게 되면 신기하게도 GPU memory 총량이 늘어난다고 한다

  • Compute M.
    off Compute-Mode를 표시

    • 0 - Default
    • 1 - exclusive thread
    • 2 - prohibited
    • 3 - exclusive process mode
  • MIG M.
    N/A MIG 표시
    NVIDIA GPU를 slice하는 기능으로, MIG M은 MIG-Mode의 약자이고 MIG는 Multi-Instance GPU의 약자이다. CUDA application을 실행시 최대 7개의 개별 GPU instance로 안전하게 분할하여 여러 사용자에게 별도의 GPU를 제공하여 작업을 가속화하는데 도움을 준다 여러개의 instance를 지원하는 MIG는 오로지 NVIDIA A100 이상 델에서만 지원이되고 이외에도 필요조건이 존재한다

  • Processes
    현재 GPU가 잡업하고 있는 Process를 표시
    작업을 하게되면 Process가 늘어난다

nvidia-smi Live Check

GPU를 이용해서 작업을 하다보면 GPU를 잘사용하는지 계속해서 확인이 필요할때가 있다
이럴때는 watch 명령을 이용해서 갱신되는 정보를 확인하면 된다
-n 1 은 시간간격을 의미하며 1은 1초마다 갱신하면서 보겠다는 뜻이다

$ watch -n 1 nvidia-smi

ctrl + c를 누르면 원래 화면으로 돌아간다

-d 옵션을 주고 변경되는 부분을 하이라이트 시킬수 있다

$ watch -d -n 1 nvidia-smi

nividia-smi Option

-q --query Display GPU or Unit info

$ nvidia-smi -q


GPU의 거의 모든 정보를 보여준다 필요에 따라서 grep 명령어를 통해 필요한 정보만 볼수도 있고 별도의 옵션을 통해 필요정보를 따로 확인할 수 있다

-d, --display Display only selected information MEMORY, ECC 등..

$ nvidia-smi -q -d memory
$ nvidia-smi -q -d ecc

memory 조회

ecc 조회

-q 옵션에서 나온 GPU정보에서 필요한 정보만 표시한다

-i, --id Target a specific GPU

$ nvidia-smi -q -d memory -i 0,1

-i 옵션을 사용하면 필요한 GPU만 선태하여 간략하게 볼 수 있다
다수의 GPU를 사용한다면 유용하지만 현재는 GPU가 하나이기때문에 -i 옵션을 안넣은것과 결과가 같다

-L, --list-gpus Display a list of GPUs connected to the system

$ nvidia-smi -L


GPU의 리스트가 나오고 UUID(범용 고유 식별자)가 표시된다

-r, --gpu-reset

$ nvidia-smi -r

GPU H/W 상태를 재설정 하는 리셋 옵션

-e, --ecc-config

$ nvidia-smi -e 0

0은 Disabled, 1은 Enabled 리부팅후 적용된다

'개발 환경' 카테고리의 다른 글

VS 코드조각(CodeSnippet) 만들기  (0) 2022.05.02
VSCode 원격접속  (0) 2022.04.22
VSCode venv 가상환경 설정  (0) 2022.04.20

aliases : [VS, Snippet, 조각]
tags : Snippet CodeSnipeet Tool


코드조각(CodeSnippet)

스니펫(snippet)은 재사용 가능한 소스 코드, 기계어, 텍스트의 작은 부분을 일컫는 프로그래밍 용어이다. 사용자가 루틴 편집 조작 중 반복 타이핑을 회피할 수 있게 도와준다.[1]

코드 조각 템플릿

  • 코드조각은 XML로 구성되어있다
  • 코드조각 기본형태는 아래와 같다
  • <?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title></Title> </Header> <Snippet> <Code Language="CSharp"> <![CDATA[]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>

코드조각 만들기

  • XML 만들고 위에 표시된 템플릿을 추가한다
  • 각각의 요소를 입력한다
  • 파일의 확장자를 snippet으로 저장하자 ex) Test.snippet
  • C:\Users\사용자\Documents\Visual Studio 2022\Code Snippets\Visual C#\My Code Snippets 경로에 파일을 넣는다
  • Visual Studio에서 사용한다

코드조각 작성 예

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>TestSnippet</Title>
            <Author>Test</Author>
            <Description>Property 추가 코드조각</Description>
            <Shortcut>aprop</Shortcut>
        </Header>
        <Snippet>
         <!-- 추가되는 코드 내용 -->
            <Code Language="CSharp">
                <![CDATA[  
                /// <summary>
                /// $Name$
                /// </summary>        
                public $Type$ $Name$
                {
                    get { return _$Name$; }
                    set
                    {
                        _$Name$ = value;
                        OnPropertyChanged();
                    }
                }
                public $Type$ _$Name$;]]>
            </Code>
            <!-- 코드조각 사용시 사용자가 부분교체 할 수 있다 -->
            <!-- 미사용시 Declarations 요소를 삭제하자 -->
            <Declarations>                
                <Literal>
                    <ID>Type</ID> <!-- $Type$으로 지정된 부분 교체 -->
                    <ToolTip>Property 타입을 입력하세요.</ToolTip>
                    <Default>string</Default> <!-- 기본값 -->
                </Literal>
                <Literal>
                    <ID>Name</ID> <!-- $Name$으로 지정된 부분 교체 -->
                    <ToolTip>Property명을 입력하세요.</ToolTip>
                    <Default>Name</Default> <!-- 기본값 -->
                </Literal>
            </Declarations>
            <!-- 작성시 네임스페이스 추가됨 -->
            <!-- 미사용시 Imports요소를 삭제하자 -->
            <Imports> 
                <Import>  
                    <Namespace>System.IO</Namespace>
                </Import>
            </Imports>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

코드조각을 작성후 VS를 실행하여 확인해보자

도구-> 코드조각 관리자 실행

2022-05-02-121808.png

코드 조각에 추가된것이 확인된다

2022-05-02-122042.png

]

코드 작성시 바로 사용이 가능하다

참고
https://docs.microsoft.com/ko-kr/visualstudio/ide/walkthrough-creating-a-code-snippet?view=vs-2022

'개발 환경' 카테고리의 다른 글

[ubuntu] NVIDIA GPU 상태 확인  (0) 2022.06.07
VSCode 원격접속  (0) 2022.04.22
VSCode venv 가상환경 설정  (0) 2022.04.20

aliases : [VisualStudioCode 원격접속]
tags : Tool/VSCode Remote


VSCode 원격접속

Remote SSH 설치

  • Extensions (ctrl+shift+x)-> remote 검색 하여 설치

2022-04-22-132506.png

Remote 접속

  • 모든 명령 표시(ctrl+shift+p) -> add new 검색 -> Remote-SSH: Add New SSH Host...
  • 접속 IP(test@1.1.1.1) 입력하여 Config 생성
    2022-04-22-133430.png
  • 모든 명령 표시(ctrl+shift+p) -> connect to host 검색 -> Remote-SSH: Connect to Host...
    2022-04-22-135215.png
  • 등록된 서버 선택
  • 운영체제 선택
  • 암호입력
  • 왼쪽 하단에 접속확인
  • 폴더를 열어서 작업시작

'개발 환경' 카테고리의 다른 글

[ubuntu] NVIDIA GPU 상태 확인  (0) 2022.06.07
VS 코드조각(CodeSnippet) 만들기  (0) 2022.05.02
VSCode venv 가상환경 설정  (0) 2022.04.20

aliases : [venv, VSCode, 가상환경]
tags : venv Tool/VSCode Tool


VSCode venv 가상환경 사용방법

VisualStudioCode 터미널 설정

  • setting -> Features -> terminal -> Default Profile: Windows
  • Default Profile 검색
  • 원하는 항목 선택

2022.jpg

venv 생성

python -m venv venv

(venv) 활성화

window pip 버전 업그레이드

(venv) D:\KFPratice\Pratice3>python -m pip install --upgrade pip

kfp 설치

pip install kfp --upgrade

tenserflow 설치

pip install --upgrade tensorflow

'개발 환경' 카테고리의 다른 글

[ubuntu] NVIDIA GPU 상태 확인  (0) 2022.06.07
VS 코드조각(CodeSnippet) 만들기  (0) 2022.05.02
VSCode 원격접속  (0) 2022.04.22

+ Recent posts