본문 바로가기

Programming

(16)
cuDF - GPU DataFrames cuDF - GPU DataFrames https://github.com/rapidsai/cudf GitHub - rapidsai/cudf: cuDF - GPU DataFrame LibrarycuDF - GPU DataFrame Library . Contribute to rapidsai/cudf development by creating an account on GitHub.github.com 데이터 로드/조인/집계/필터링 및 기타 데이터 조작을 위한 GPU 기반 데이터 프레임 라이브러리 매우 빠른 C++/CUDA 기반 라이브러리인 libcudf를 이용 pandas 처럼 import 해서 사용 가능 또는 cudf.pandas 를 이용해서 코드 변경 전혀 없이 기존 pandas를 교체하여 GPU 가속 가능..
[Python] 비동기 프로그래밍에서 asyncio.Event 사용하기 Python의 asyncio 라이브러리는 비동기 프로그래밍을 쉽게 할 수 있도록 여러 가지 도구를 제공합니다. 이 중 asyncio.Event는 여러 비동기 함수가 특정 이벤트에 의존하게 만들 때 유용합니다. asyncio.Event 이해하기 asyncio.Event 객체는 기본적으로 두 가지 메소드를 주로 사용합니다: set() : 이벤트를 설정합니다. 이 메서드가 호출되면, wait()로 대기 중인 모든 코루틴이 실행을 재개합니다. wait() : 이벤트가 설정될 때까지 현재 코루틴의 실행을 중단합니다. clear() : 이벤트를 초기화합니다. 이 메서드가 호출되면, 다음부터 wait()를 호출하는 코루틴은 이벤트가 다시 설정될 때까지 대기합니다. 예제: 두 개의 비동기 함수와 함께 사용하기 아래 예..
[Python] 효과적인 디버깅, 모니터링이 가능한 Python Logging 이 글에서는 Python의 내장 logging 모듈을 효과적으로 사용하여 디버깅 및 모니터링 능력을 향상시키는 방법을 자세히 살펴보겠습니다. 로깅을 이해하는 것은 견고하고 유지보수 가능한 애플리케이션을 구축하기 위해 중요합니다. Why Logging Matter 우리가 파이썬 로깅의 구체적인 내용을 자세히 살펴보기 전에 왜 로깅이 중요한지 먼저 이해해 봅시다. 복잡한 파이썬 프로젝트를 작업할 때 특히 팀으로 작업할 때 로깅은 믿을 수 있는 도구가 됩니다. 로깅은 다음과 같은 데에 도움을 줍니다: Debugging : 코드의 흐름을 쉽게 추적하고 오류와 문제를 식별 Monitoring : 프로덕션 환경에서 애플리케이션의 동작을 모니터링 Auditing : 애플리케이션 내에서 중요한 이벤트와 활동을 기록 T..
[Python] 2개의 Dictionary 합치는 방법 중복된 Key 값이 없을 경우 dict_1 = {'A' : 1, 'B' : 2, 'C' : 3, 'D' : 4} dict_2 = {'E' : 5, 'F' : 6, 'G' : 7, 'H' : 8} result_dict = dict_1 result_dict.update(dict_2) >>> result_dict {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8} 중복된 Key 값이 있을 경우 중복된 Key값이 있을 때 update를 수행하면, 업데이트할 대상으로 덮어쓰기 발생 dict_1 = {'A' : 1, 'B' : 2, 'C' : 3, 'D' : 4} dict_2 = {'C' : 5, 'D' : 6, 'E' : 7, 'F' : 8} 따라서..
Numba 설치하기 Compatibility Numba is compatible with Python 3.7–3.10, and Numpy versions 1.18 up to 1.23. Our supported platforms are: Linux x86 (32-bit and 64-bit) Linux ppcle64 (POWER8, POWER9) Windows 7 and later (32-bit and 64-bit) OS X 10.9 and later (64-bit and unofficial support on M1/Arm64) *BSD (unofficial support only) NVIDIA GPUs of compute capability 5.3 and later Compute capabilities 3.5 - 5.2 ar..
NUMA, ccNUMA, hUMA 설명 NUMA(Non-Uniformed Memory Access) 불균일 기억장치 접근 메모리에 접근하는 시간이 CPU와 메모리의 상대적인 위치에 따라 달라지는 컴퓨터 메모리 설계 방법. 각 CPU는 메모리의 일부를 자신의 지역 메모리(Local Memory)로 가지고 있으며 이 지역 메모리에 접근하는 속도는 원격 메모리(Remote Memory)에 접근하는 속도보다 훨씬 빠르다. 간단히 예를 들어 시스템에 CPU 소켓이 네 개 있고, 512GB의 메모리가 설치되어 있다면 물리 주소 0~128G-1번지까지의 메모리는 0번 소켓의, 128G~256G-1번지까지의 메모리는 1번 소켓의 지역 메모리가 되는 방식. 각 소켓에서 지역 메모리에 접근할 때에는 원격 메모리에 접근할 때보다 훨씬 빠르게 데이터를 읽고 쓸 수..
강력한 수준의 경량 프로파일러 Nvprof 강력한 수준의 경량 프로파일러 Nvprof 공헌자(저자/번역자): Mark Harris / NVIDIA Korea CUDA 5의 CUDA 툴킷에 nvprof라는 강력한 새 도구가 추가됐습니다! Nvprof는 진행 상황을 빠르게 검사, 작성 언어와 관계없이 NVIDIA GPU에서 실행되는 모든 CUDA 커널을 프로파일링 등 매우 편리한 도구입니다. Nvprof의 다양한 기능을 개발자 블로그에서 확인가능합니다. 링크: https://developer.nvidia.com/ko-kr/blog/cuda-%EC%A0%84%EB%AC%B8%EA%B0%80-%ED%8C%81-%EC%9C%A0%EC%9A%A9%ED%95%9C-%EB%B2%94%EC%9A%A9-gpu-%ED%94%84%EB%A1%9C%ED%8C%8C%EC..
Python 알고리즘 Quick books Bubble Sort Algorithm arr = [7, 3, 9, 2, 0, 4, 8, 1, 6, 5] def bubbleSort(theSeq): n = len(theSeq) for i in range(n - 1): for j in range(n - 1 - i): if theSeq[j] > theSeq[j + 1]: temp = theSeq[j] theSeq[j] = the Seq[j + 1] theSeq[j + 1] = temp return theSeq print(bubbleSort(arr)) Printing Prime Numbers #printing prime numbers in a range lower = 100 upper = 200 for num in range(lower, upper+1): i..