전체 글 177

CUDA 2D 블록 내 스레드 인덱싱(Thread Indexing) - 공부하는 도비

CUDA의 내장 변수를 사용해 스레드가 특정 데이터에 정확히 접근하도록 하는 인덱스 계산 방법을 스레드 인덱싱(thread indexing)이라고 한다. 오늘은 2D 블록 내 스레드 인덱싱에 대해 정리를 하고자 합니다.  * Global Thread ID(전역 번호) : CUDA에서 각 스레드를 전역적으로 고유하게 식별할 수 있도록 정의된 ID를 의미함 Global Thread ID는 스레드 ID(threadIdx), 블록 ID(blockIdx), 블록의 크기(blockDim)를 사용해 계산합니다. 2차원 블록(2D block)은 다음 그림으로 간단하게 정의할 수 있습니다.  thread(x, y)의 전역 번호는 아래 두 항목의 합입니다. - 자신이 속한 1차원 하위 블록 앞까지의 스레드 갯수 = blo..

CUDA 2025.01.21

CUDA 큰 벡터의 합 - 공부하는 도비

2025.01.21 - [CUDA] - CUDA 스레드 레이아웃 설정 및 커널 호출>> - 공부하는 도비>> - 공부하는 도비" data-og-description="CUDA 프로그래밍에서 스레드 레이아웃 설정과 커널 호출은 GPU 병렬 처리를 효과적으로 활용하기 위한 핵심 개념입니다. 1. 스레드 레이아웃 설정 GPU 병렬 처리를 위해 CUDA는 스레드(Thread)를 그리" data-og-host="yang-wistory1009.tistory.com" data-og-source-url="https://yang-wistory1009.tistory.com/221" data-og-url="https://yang-wistory1009.tistory.com/221" data-og-image="https://s..

CUDA 2025.01.21

CUDA 스레드 레이아웃 설정 및 커널 호출<<<>>> - 공부하는 도비

CUDA 프로그래밍에서 스레드 레이아웃 설정과 커널 호출은 GPU 병렬 처리를 효과적으로 활용하기 위한 핵심 개념입니다. 1. 스레드 레이아웃 설정 GPU 병렬 처리를 위해 CUDA는 스레드(Thread)를 그리드(Grid)와 블록(Block)으로 구성합니다. 각각의 스레드는 고유한 ID를 가져 작업을 병렬로 수행합니다.  (1) 스레드 구성 요소- 그리드(Grid) : 여러 블록으로 구성된 구조- 블록(Block) : 여러 스레드로 구성된 구조- 스레드(Thread) : 실제로 작업을 수행하는 단위 스레드들이 자신이 처리할 데이터가 무엇인지 알기 위해서는 자신이 어떤 블록에 속해 있는지, 또 블록 내 자신의 스레드 번호를 알아야 합니다. 이를 위해서 CUDA는 현재 그리드 및 블록의 형태와 각 스레드가..

CUDA 2025.01.21

CUDA Pitch, cudaMallocPitch() - 공부하는 도비

2025.01.09 - [CUDA] - CUDA 디바이스 메모리 할당, 초기화 및 해제 - 공부하는 도비 Device 또는 Host  아래는 Host 상에 있는 데" data-og-host="yang-wistory1009.tistory.com" data-og-source-url="https://yang-wistory1009.tistory.com/219" data-og-url="https://yang-wistory1009.tistory.com/219" data-og-image="https://blog.kakaocdn.net/dna/fmLmv/hyXWxGb3c3/AAAAAAAAAAAAAAAAAAAAAI-PsGW0N7Wq3pDz5j3LDy-eLxayMQ6zyrBqfmo24MQe/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1788188399&allow_ip=&allow_referer=&signature=Pt%2F6vhEq6aXYdxUXGjSn%2FK45L6o%3D

CUDA 2025.01.09

CUDA 디바이스 메모리 할당, 초기화 및 해제 - 공부하는 도비

GPU를 사용하여 연산을 하기 위해서는 CPU 메모리에 있는 데이터를 GPU 메모리 상으로 가져와야 한다. CUDA에서 CPU를 Host, GPU를 Device라고 부른다. 즉, Host -> Device 또는 Host  아래는 Host 상에 있는 데이터를 어떻게 Device 상으로 가져오는 지, 그리고 어떻게 초기화 하며 해제 하는 지를 보여주는 예제다. #include "cuda_runtime.h"#include "device_launch_parameters.h"#include // cudaMemcpy : 호스트와 디바이스 간 데이터 전송을 위한 함수// cudaError_t cudaMemcpy(void *dst, const void *src, size_t count, cudaMemcpyKind ki..

CUDA 2025.01.09

생성형 AI의 등장, 블로그와 T-Story의 퇴장 - 공부하는 도비

과거 몇 년 전, 여기서 말하는 과거는 10년, 20년 전도 아닌불과 1~2년 전을 말한다.  과거에는 모르는 문제가 있거나 컴퓨터 오류가 나면, 구글에 검색한 후 각종 블로그를 뒤지면서 해답을 찾았었다.영어로도 검색하고, 모든 페이지를 뒤졌다.  하지만, 최근엔 T-Story를 운영하고 있는 나 조차, 검색 창을 잘 이용하지 않고 있다.오히려 GPT 한테 달려간 후, 질문하기 바쁘다.  이게 참.. 스스로도 생각을 깊게 하는 순간이 점점 줄어들고 있다는 생각이 든다. 어떤 특정 문제를 해결하기 위해서 또는 이 문제가 왜 발생했을 까에 대한 고민을 깊게 하지 않고 있다.  학교에서 학생들을 가르칠 때도, 오류가 나고 내가 모르는 문제라면학생들에게 "GPT 한테 한번 물어볼까?"라는 말을 종종 하곤 하는데..

카테고리 없음 2025.01.08

VMware Workstation Pro 무료 사용(free for personal use) - 공부하는 도비

VMware Workstation Pro 버전을 이제 무료로 사용이 가능하다고 합니다!!!  https://blogs.vmware.com/workstation/2024/05/vmware-workstation-pro-now-available-free-for-personal-use.html자세한 내용은 위 링크를 참고하시면 될 거 같습니다. 개인용으로만 가능하며, 상업 목적이라면 라이센스 구입이 필수입니다.갑자기 이걸 왜 풀었을 까 궁금하긴 한데, 너무 좋은 일이네요!

Basic IT Knowledge 2024.05.16

VMware Workstation Player에서 Virtual Network Editor 실행하는 법(vmnetcfg.exe) - 공부하는 도비

VMware workstation Pro 버전이 아니라 Player 버전을 사용하면, 구체적이고 상세한 Network 설정을 할 수 없다. 예를 들어, VMWare의 자체 DHCP 서비스를 끈다 던지 등등 그럴 때, vmnetcfg.exe 파일을 가지고 pro 버전 처럼 네트워크 설정을 할 수 있는데, 다운 받고, 정해진 경로에 파일을 옮겨 두기만 하면 된다. vmnetcfg.exe 파일은 다음 링크에서 다운로드 받을 수 있다. https://www.tobias-hartmann.net/2018/12/download-vmnetcfg-exe-fuer-vmware-workstation-15-x-player/ 위 링크에서 15.5.7 버전을 다운로드 받으면, workstation 16과 17에서도 사용할 수 있..

Basic IT Knowledge 2024.04.10

Slideshare에서 PPT(files) 무료로 다운 받기 (추가)

2022.07.22 - [Basic IT Knowledge] - Slideshare에서 PPT(files) 무료로 다운 받기 - 공부하는 도비 Slideshare에서 PPT(files) 무료로 다운 받기 - 공부하는 도비 오늘은 Slideshare 홈페이지https://www.slideshare.net/ 에서 무료로 파일을 다운로드하는 법에 대해 소개해볼까 한다. (회원 가입 없이) 그럴 때 사용하는 홈페이지는 아래와 같다. https://downloader.la/slidesha yang-wistory1009.tistory.com Slideshare에서 파일을 다운로드 받으려면, 로그인과 유료 구독으로 넘어간다. 그래서 예전에 Slideshare에서 PPT 파일 다운로드 받는 법에 대해 글을 쓴적이 있다..

Basic IT Knowledge 2024.03.13

웹 취약점 진단 항목 (최신 내용 반영) - 공부하는 도비

KISA에서는 "주요정보통신기반 시설 기술적 취약점 분석 평가 상세 가이트"를 제공합니다. 2020.04.06 - [Computer Security/Web Vulnerability] - 웹 취약점 진단 항목 - 공부하는 도비 웹 취약점 진단 항목 - 공부하는 도비 아래 링크에서 취약점 분석 가이드를 다운받을 수 있습니다. https://www.krcert.or.kr/data/guideView.do?bulletin_writing_sequence=27369&queryString=cGFnZT0xJnNvcnRfY29kZT0mc2VhcmNoX3NvcnQ9a2V5d29yZCZzZWFyY2hfd29yZD0lRUMlQTMlQkMlRUMlOUEl yang-wistory1009.tistory.com 물론 KISA에서 제공..

자바 GUI 텀프 '행렬식과 역행렬 계산기' - 공부하는 도비

자바 GUI를 활용한 행렬식과 역행렬 계산기입니다. 행렬 크기를 입력후, 그 크기에 맞게 행렬 요소를 입력해주면 그에 따른 역행렬이 계산됩니다. 아래 처럼 숫자가 아닌 문자를 입력했을 땐, 역행렬이 계산되지 않습니다. 만약, 아래와 같은 오류 메시지를 출력하기 싫다면 에러 처리를 해주시면 됩니다. 또한, 역행렬이 없는 행렬이 입력되면 "역행렬이 존재하지 않습니다."가 추가로 출력됩니다. 아래에 전체 코드를 첨부해두겠습니다. import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Matrix extends JFrame implements..

JAVA/TermProject 2023.06.18

자바 GUI 텀프 '아스키코드 및 유니코드 변환기' - 공부하는 도비

자바 GUI를 활용한 아스키코드와 유니코드 변환기입니다. 아스키코드표도 파일을 저장하여 경로를 입력하면, 출력이 됩니다. 아래에 전체 코드와 아스키코드표 사진을 첨부해두겠습니다. 위 사진의 "이미지 파일 경로"에 아스키코드표 사진의 경로를 입력해주세요. (Ex. "C:/Desktop/Ascll_Code.png") import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class AskiUniConvrtr extends JFrame { private JTextField inputTextField; private JButton ascicodeButt..

JAVA/TermProject 2023.06.18

Send Ether to the Smart Contract (2) 및 block.timestamp 개념 - 공부하는 도비

저번 피드에서 스마트 계약으로 이더를 보내는 방법을 알아보았습니다. 2023.01.04 - [Blockchain/Solidity] - Send Ether to the Smart Contract (1) 및 payable 개념 - 공부하는 도비 Send Ether to the Smart Contract (1) 및 payable 개념 - 공부하는 도비 Solidity에서 ether를 전송하는 스마트 컨트랙트를 작성하기 위해선, payable의 개념이 필수적입니다. "payable means that you can transfer ether with the transaction." payable엔 두 가지 종류가 있습니다. 1. address payab yang-wistory1009.tistory.com 오늘은..

Blockchain/Solidity 2023.02.01

Solidity 생성자(constructor) - 공부하는 도비

Smart Contract은 자바의 클래스나 인터페이스(객체)와 비슷합니다. 그래서 생성자라는 개념이 있고, 오늘은 Solidity의 생성자에 대해 알아보겠습니다. * What is a Constructor in Solidity 생성자는 타 언어처럼, 상태 변수를 바꾸거나 초기화할 때 사용이 됩니다. 또한, 생성자를 필수적으로 쓰진 않아도 됩니다. 생성자는 constructor이라는 키워드를 사용하여 만듭니다. // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; contract Exconstructor { constructor([optional-parameters]) access-modifier { } } - optional-parameters : 생성자에..

Blockchain/Solidity 2023.02.01

자바 static 변수와 static 메소드 - 공부하는 도비

오늘은 자바의 static 변수와 static 메소드에 대해 알아보려고 합니다. 1. static 변수 변수 앞에 static이라는 키워드를 붙이면, 자바는 메모리 할당을 딱 한 번만 하게 됩니다. 따라서 메모리 사용에 이점이 있죠. 따라서 static으로 선언한 변수를 참조할 땐, 같은 곳의 메모리 주소를 바라보기 때문에 static 변수의 값을 공유할 수 있습니다. 아래 예제를 통해 이 말이 무엇인지 설명하겠습니다. 함수를 선언하고 객체가 해당 함수를 참조할 때마다 카운터가 올라가는 코드를 구현한다고 가정해 보겠습니다. - static을 사용하지 않고 구현을 하면 다음과 같은 결과를 얻게 됩니다. // non-static 변수 class Counter { int count = 10; Counter()..

JAVA 2023.01.30

JDK 다운, PATH 환경 설정 - 공부하는 도비

이클립스를 사용하려면 우선 사용자 컴퓨터에 JDK 설치와 PATH 환경 설정이 되어있어야 합니다. * JDK 설치 경로 https://www.oracle.com/kr/java/technologies/downloads/#java19 Download the Latest Java LTS Free Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts. www.oracle.com (JDK17과 19의 차이) https://www.infoworld.com/article/3653331/jdk-19-the-new-features-in-java-19.html JDK 19..

JAVA 2023.01.26

Send Ether to the Smart Contract (1) 및 payable 개념 - 공부하는 도비

Solidity에서 ether를 전송하는 스마트 컨트랙트를 작성하기 위해선, payable의 개념이 필수적입니다. "payable means that you can transfer ether with the transaction." payable엔 두 가지 종류가 있습니다. 1. address payable 2. function payable address 타입과 함께 사용되면 지불가능한 주소(address payable)의 타입이 되고, function과 함께 사용되면 지불가능한 함수 (function _ () payable)이 됩니다. Members of Address Payable Types : address payable 타입의 멤버엔 .transfer과 .send가 있습니다. - .transfe..

Blockchain/Solidity 2023.01.04

delete element of array and mapping - 공부하는 도비

array의 인덱스 번호로 element 삭제 방법 pragma solidity ^0.8.1; contract Practice { uint256[] private arr; function remove(uint256 _index) private { require(_index < arr.length, "index out of bound"); for (uint i = _index; i < arr.length - 1; i++) { arr[i] = arr[i + 1]; } arr.pop(); } function test() external { // case_1 arr = [1, 2, 3, 4, 5]; remove(2); // want : arr = [1, 2, 4, 5] // checking assert(arr[..

Blockchain/Solidity 2023.01.02