전체 글 107

Faiss의 IndexFlatIP가 cpu 기반임에도 빠른 이유

배경개인프로젝트로 faiss를 쓰면서, 많은 벡터의 연산을 처리하는데 IndexFlatIP가 GPU기반이 아닌 CPU 기반이라는걸 알았다.CPU 기반이고 멀티 스레드도 안쓰는데 어찌 그렇게 빠를까?― 내부 연산 원리·메모리 구조·SIMD‧멀티스레드까지 한눈에 정리 ―0. TL;DRIndexFlatIP는벡터를 연속 메모리에 “줄세우고”SIMD(AVX2/AVX-512) + OpenMP 멀티코어 로 내적을 계산한 뒤힙(Heap) 기반 partial-sort 로 Top-k 결과만 반환한다.이 세 가지를 C++ 레벨에서 한 번에 수행하기 때문에,동일 작업을 파이썬 루프(혹은 단순 NumPy)로 돌릴 때보다 10¹~10³ 배 빠르다.1. 함수 스냅숏으로 흐름 잡기idx = faiss.IndexFlatIP(dim) ..

IQR 울타리로 GIS 지옥 탈출하기 – GIS 이상 좌표 전처리

1. 배경 📍목표 – 건물마다 높이·노후도를 계산해 재개발 후보지를 한눈에 볼 수 있는 격자 지도를 만든다.항목값건물 SHP 용량9 MB (인천 서구 전체)50 m 격자 예상 수866 ,036 ,502 셀첫 실행 시간3 시간+ — 지도도 못 띄우고 멈춤IQR 필터로 제거된 건물3 건 (좌표가 강원·제주로 튄 극단값)필터 후 격자 수2 ,589 ,048 셀최종 처리 시간72 초3 개의 잘못된 좌표 때문에 격자 범위가 전 국토로 확장돼 속도가 334 배 폭증했던 셈!2. IQR 울타리는 이렇게 쓴다 📦축별(minx·maxx·miny·maxy)로 Q1(25 %) / Q3(75 %) 를 구한다.IQR = Q3 − Q1.Fence = $Q1 − k·IQR , Q3 + k·IQR$k = 1.5 → 가벼운 이상치..

Windows + PostgreSQL에서 `UnicodeDecodeError` 해결기

1. 증상UnicodeDecodeError: 'utf-8' codec can't decode byte 0xB8 …상황pandas.DataFrame.to_sql() 로 한글 컬럼이 포함된 데이터를 PostgreSQL(pgadmin) 로 넣을 때 위 오류 발생환경Windows 11PostgreSQL 17 (설치 시 기본 “Korean_Windows” 로케일)SQLAlchemy + psycopg2 + pandas2. 원인 - “DB 클러스터 인코딩이 EUC-KR”PostgreSQL은 클러스터를 만들 때 지정한 로케일/인코딩으로만 내부 데이터를 저장한다. 기본 설치를 그대로 두면 윈도우의 Korean_Windows(EUC-KR) 가 설정된다.Python, pandas, SQLAlchemy는 모두 기본이 UTF-..