Justin Kim
Logic meets intuition
-
캐시 히트율을 위한 Radix Sort 도입 기대
Datalog 엔진을 구현하다 보면 성능 병목을 해결하기 위해 다양한 최적화 기법을 도입하게 됩니다. 특히 다량의 데이터를 처리해야 하는 데이터베이스나 논리 프로그래밍 엔진에서는 어떤 정렬 알고리즘을 선택하느냐에 따라 전체적인 성능 차이가 극명하게 나타날 수 있습니다. 이번 글에서는 기수 정렬(Radix Sort)의 기본 개념에 대해 알아보고, 왜 Datalog 엔진에서 정렬 알고리즘이 필수적인지, 그리고...
-
시맨틱 태깅, 단순한 키워드를 넘어 지식의 연결로
기록이 쌓일수록 고민도 깊어집니다. 우리는 매일 수많은 노트를 작성하고, 나중에 찾기 쉽게 ‘태그’를 답니다. #datalog, #pkm, #ai 같은 키워드들이 그 예입니다. 하지만 시간이 흘러 노트가 수백, 수천 개가 되었을 때, 이 태그들이 정말 우리에게 의미 있는 ‘지식’으로 기능하고 있는지는 돌이켜볼 문제입니다. 키워드 태깅의 한계: 단순한 문자열의 나열 우리가 흔히 쓰는...
-
Datalog, 일상의 도구가 될 수 있을까
Datalog에 대한 글을 몇 편 써오면서, 한 가지 고민이 계속 머릿속을 맴돕니다. “Datalog는 정말 일상적으로 쓸 수 있는 도구인가?”라는 질문입니다. 특수한 도메인에서는 빛나지만 Datalog의 활용 사례를 찾으면 대부분 ‘특수한 도메인’에 집중되어 있습니다. 정적 프로그램 분석: 포인터 분석이나 데이터 흐름 분석에서 Datalog는 이미 검증된 도구입니다. Soufflé 같은 고성능 Datalog 엔진은 아예...
-
C/C++에서 SIMD와 NEON 동시에 지원하게 작성하기 및 벤치마크
현대 CPU 연산 방식은 데이터를 처리하는 단위에 따라 크게 스칼라(Scalar) 연산과 벡터(Vector) 연산으로 나눌 수 있습니다. 코어 모듈의 성능을 끌어올리기 위해서는 이 차이를 이해하고 적절한 명령어 셋을 활용하는 것이 필수적입니다. 스칼라(Scalar)와 SIMD, 그리고 NEON의 차이 스칼라(Scalar) 연산: 스칼라는 수학에서 방향성 없이 크기만 가지는 단일 값을 뜻합니다. 컴퓨팅 맥락에서 스칼라 연산은...
-
같은 사실, 다른 출처: Named Graph로 신뢰의 경계를 긋다
1. 김철수의 상충하는 프로필 이번에는 유사한 상황에서 Reification이 답이 아닌 상황, 그래서 Named Graph를 사용해야 하는 상황이 있다는 것을 이야기해보려고 합니다. Knowledge Graph를 구축하다 보면, 서로 다른 출처에서 가져온 데이터가 충돌하는 상황을 자주 만납니다. 앞의 Reification에서 다룬 예시와 유사하지만, 이번에는 Reification이 답이 아닌 상황을 다룹니다. 헤드헌터가 김철수의 인재 데이터베이스를 조회하니...