Category: 개발

MSVC Address Sanitizer (ASan)의 주요 개선 사항

2025-02-25
MSVC Address Sanitizer (ASan)의 주요 개선 사항

마이크로소프트는 MSVC Address Sanitizer (ASan)의 품질을 크게 향상시켰습니다. ASan의 주요 부분을 LLVM으로 업스트림하여 LLVM 커뮤니티의 개선 사항을 더 빠르게 통합할 수 있게 되었습니다. 또한, 컴파일러, 링커, 도구를 포함한 MSVC 코드베이스에 ASan을 통합하여 지속적인 통합에서 메모리 안전성 문제를 감지할 수 있도록 했습니다. Visual Studio 2022 버전 17.13에는 오탐 감소, 오류 보고 개선, 다중 프로세스 시나리오 처리 등 많은 문제가 수정되었습니다.

개발

Xcode의 지속적인 인터넷 연결: 개인 정보 보호 문제 및 빌드 속도 병목 현상

2025-02-25

개발자 Jeff Johnson은 Xcode가 프로젝트 빌드 중에 Apple 서버에 자주 연결되어 빌드 속도가 느려지고, 특히 "프로비저닝 입력 수집" 단계에서 느려지는 것을 발견했습니다. Little Snitch를 사용하여 developerservices2.apple.com에 대한 연결을 비활성화함으로써 빌드 속도 문제를 해결했습니다. 또한 Xcode는 시작 시와 프로젝트를 열 때 devimages-cdn.apple.com 및 appstoreconnect.apple.com과 같은 다른 Apple 서버에도 연결되지만, 이는 불필요하며 개발자 정보를 Apple에 전송할 수 있습니다. Jeff는 Xcode가 개발자 분석 수집 메커니즘으로 작동하여 개발자의 개인 정보를 침해한다고 주장합니다.

개발 빌드 속도

HTTP/2: Ruby HTTP 서버에서 중요하지 않은 이유

2025-02-25

이 글에서는 Puma와 같은 Ruby HTTP 서버에서 HTTP/2 지원의 중요성에 대해 논의합니다. 저자는 HTTP/2의 주요 장점인 페이지 로딩 속도 향상을 위한 다중화는 인터넷에서는 중요하지만, LAN에서는 거의 이점이 없다고 주장합니다. LAN 내의 지연 시간이 낮고 연결이 오랫동안 유지되므로 TCP 슬로우 스타트의 영향이 미미합니다. 또한 HTTP/2의 서버 푸시 기능은 해롭다는 것이 밝혀졌으며, 더욱 세련된 103 Early Hints로 대체되었습니다. 저자는 HTTP/2 처리를 로드 밸런서 또는 리버스 프록시에 맡김으로써 애플리케이션 서버의 배포 및 유지 관리를 간소화하는 것을 제안합니다.

개발

LLPlayer: 언어 학습을 위한 다국어 자막 지원 미디어 플레이어

2025-02-25

LLPlayer는 언어 학습을 위해 설계된 오픈소스 미디어 플레이어입니다. 두 개의 자막 동시 표시, AI 기반 실시간 자막 생성(99개 언어 지원), 실시간 번역(134개 언어 지원), OCR 자막 인식, 다양한 비디오 및 자막 형식 지원, 단어 즉시 검색 등의 기능을 갖추고 있습니다. OpenAI Whisper, Google Translate, DeepL, ffmpeg 등의 기술을 활용하여 LLPlayer는 높은 효율성을 제공하며, 자막 사이드바와 스포일러 방지 기능도 포함되어 있습니다. 모든 코드는 C#으로 작성되어 사용자 정의가 용이합니다.

개발 자막

DeepEP: Mixture-of-Experts를 위한 고효율 통신 라이브러리

2025-02-25
DeepEP: Mixture-of-Experts를 위한 고효율 통신 라이브러리

DeepEP는 Mixture-of-Experts(MoE) 및 전문가 병렬 처리(EP)를 위해 설계된 통신 라이브러리로, 고처리량과 낮은 지연 시간의 전대역 GPU 커널(MoE 디스패치 및 결합)을 제공합니다. FP8을 포함한 저정밀도 연산을 지원합니다. DeepSeek-V3의 그룹 제한 게이팅 알고리즘에 최적화되어 있으며, 비대칭 도메인 대역폭 전달(예: NVLink에서 RDMA로)을 위한 커널을 제공합니다. 이러한 커널은 높은 처리량을 달성하여 교육 및 추론 사전 채우기 작업에 적합합니다. SM(스트리밍 멀티프로세서) 수 제어도 지원합니다. 지연 시간에 민감한 추론 디코딩을 위해 순수 RDMA를 사용하는 낮은 지연 시간 커널은 지연 시간을 최소화합니다. 후크 기반 통신 계산 중첩 방법이 포함되어 있으며, SM 리소스를 소비하지 않습니다. 이 라이브러리는 InfiniBand에서 테스트되었으며, 이론적으로 RoCE와도 호환됩니다.

개발 GPU 통신

AI 시대, 블로그 작성의 의미는?

2025-02-25
AI 시대, 블로그 작성의 의미는?

이 글에서는 ChatGPT 등 AI 기술이 발달한 시대에 블로그 작성의 가치를 탐구합니다. AI가 정보를 쉽게 얻고 종합할 수 있게 되었지만, 블로그 작성은 여전히 가치가 있습니다. 자신의 지식을 다지고, 다른 사람들을 돕고, 개인 브랜드를 구축하며(단, 블로그만으로는 어렵습니다), 성취감을 얻고, 사고력을 보여주는 글쓰기 포트폴리오를 구축하여 경력 개발에 도움이 되기 때문입니다. 저자는 AI의 영향은 독자와의 상호 작용으로 얻는 성취감 감소에 그치며, 블로그 자체의 가치를 부정하는 것은 아니라고 주장합니다.

개발

엉클 밥과 존 오스터하웃의 소프트웨어 디자인 논쟁

2025-02-25
엉클 밥과 존 오스터하웃의 소프트웨어 디자인 논쟁

Robert "엉클 밥" Martin과 John Ousterhout는 메서드 길이, 코드 주석, 테스트 주도 개발(TDD) 등 주요 주제를 다룬 소프트웨어 디자인 원칙에 대한 활발한 논쟁을 벌였습니다. 코드 분해 정도, 주석의 필요성, TDD의 장단점에 대해 열띤 논쟁을 벌이며 코드 예시와 구체적인 시나리오를 사용하여 주장을 뒷받침했습니다. 이 논쟁은 소프트웨어 디자인에서의 트레이드오프 중요성과 간결성과 가독성을 추구할 때 극단을 피해야 할 필요성을 강조합니다.

개발

Lua를 사용한 HTML 빌더 DSL 제작: 영리한 접근 방식

2025-02-24
Lua를 사용한 HTML 빌더 DSL 제작: 영리한 접근 방식

이 글에서는 Lua를 사용하여 HTML을 생성하는 도메인 특정 언어(DSL)를 만드는 방법을 보여줍니다. 저자는 선택적 괄호나 함수 체이닝 같은 Lua의 구문 기능과 함수 환경 및 메타테이블을 효율적으로 사용하여 간결하고 우아한 HTML 생성 솔루션을 만듭니다. 사용자 지정 `__index` 메타메서드는 HTML 태그 함수를 동적으로 생성하고, `append_all` 함수는 문자열을 효율적으로 연결합니다. 결과적으로 완벽하게 작동하는 HTML 빌더 DSL이 만들어지며, 코드 가독성과 개발 효율이 크게 향상됩니다. 이 글에서는 보안 취약성을 방지하기 위해 HTML 이스케이프가 매우 중요하다는 점도 강조합니다.

개발 HTML 빌더

Electro: 초고속 경량 이미지 뷰어

2025-02-24
Electro: 초고속 경량 이미지 뷰어

Electro는 Rust로 구축된 초고속 경량 이미지 뷰어입니다. 개발자 경험을 중시하여 설계되었으며, 내장 명령줄 터미널을 갖추고 로컬 및 웹 호스팅 이미지를 즉시 표시합니다. 가장 큰 장점은 비교할 수 없는 성능입니다. 이미지는 거의 즉시 로드됩니다. Electro는 오픈 소스이며 확장이 용이하므로 개발자는 코드에 기여하거나 자체 버전을 만들 수 있습니다.

Geocodio의 무료 티어: 악용 방지와 정상 사용자 간의 균형

2025-02-24
Geocodio의 무료 티어: 악용 방지와 정상 사용자 간의 균형

Geocodio는 악용 위험에도 불구하고 무료 티어를 유지하고 있습니다. 초기에는 단순한 IP 차단으로 인해 사용자 경험이 저하되고 지원 시간이 낭비되었습니다. 그래서 브라우저, IP 주소, 이메일 주소 등 수십 가지 요소를 종합적으로 고려한 세분화된 위험 점수 시스템으로 전환했습니다. 이를 통해 고위험 등록은 자동으로 식별 및 처리되고, 중위험 등록은 CAPTCHA 또는 이메일 주소 확인을 요구받을 수 있습니다. 이 시스템은 인적 개입을 최소화하고 보안과 사용자 경험의 균형을 맞춰 무료 티어의 지속 가능성을 보장합니다.

벡터 데이터베이스를 넘어서: Parquet과 Polars를 사용한 효율적인 텍스트 임베딩 처리

2025-02-24
벡터 데이터베이스를 넘어서: Parquet과 Polars를 사용한 효율적인 텍스트 임베딩 처리

이 글에서는 벡터 데이터베이스에 의존하지 않고 텍스트 임베딩을 효율적으로 처리하는 방법을 제시합니다. 저자는 Magic: The Gathering 카드의 임베딩과 메타데이터를 포함한 표 형식 데이터를 Parquet 파일로 저장하고, Polars 라이브러리를 사용하여 빠른 유사도 검색 및 데이터 필터링을 수행합니다. Polars의 제로 복사 기능과 중첩 데이터에 대한 뛰어난 지원으로 인해 이 방법은 기존 CSV 또는 Pickle 방법보다 빠르고 효율적이며, 데이터셋을 필터링할 때도 높은 성능을 유지합니다. 저자는 CSV, Pickle, NumPy와 같은 다른 저장 방식과 비교하여 중간 규모의 텍스트 임베딩을 처리하는 데 Parquet과 Polars의 조합이 최적이며, 매우 큰 데이터셋을 처리하는 경우에만 벡터 데이터베이스를 고려해야 한다고 결론짓습니다.

Neut: 정적 메모리 관리를 갖춘 함수형 프로그래밍 언어

2025-02-24

Neut는 정적 메모리 관리 기능을 갖춘 함수형 프로그래밍 언어로, 완벽한 λ-calculus 지원, 예측 가능한 자동 메모리 관리, 그리고 위의 두 가지를 달성하기 위한 타입 시스템 주석의 부재를 교묘하게 결합했습니다. 기존의 가비지 컬렉션과 달리 Neut는 리소스 처리에 타입 기반 접근 방식을 사용합니다. 타입을, 타입 값을 삭제하거나 복사할 수 있는 함수로 변환함으로써 컴파일러는 각 변수가 정확히 한 번만 사용되도록 합니다. 복사가 필요한 경우에도 Neut는 모달 로직의 T-necessity 연산자를 사용하여 Rust의 borrowing과 유사한 방식으로 불필요한 복사를 방지합니다. 또한 Neut는 LLVM IR 및 바이너리로 컴파일되며, 내장 LSP 서버, 코드 포맷터, 스크립팅 언어와 유사한 빠른 프로토타이핑 환경을 제공합니다. 고유한 모듈 시스템은 tarball 다이제스트를 사용하여 모듈을 구분하고 버전 정보를 사용하여 모듈 ID를 정의합니다.

arXivLabs: 커뮤니티와의 협업을 통한 실험 프로젝트

2025-02-24
arXivLabs: 커뮤니티와의 협업을 통한 실험 프로젝트

arXivLabs는 협력자가 arXiv의 새로운 기능을 웹사이트에서 직접 개발하고 공유할 수 있는 프레임워크입니다. arXivLabs에 참여하는 개인 및 조직은 개방성, 커뮤니티, 우수성, 사용자 데이터 개인 정보 보호라는 arXiv의 가치를 수용합니다. arXiv는 이러한 가치에 전념하고 있으며, 이러한 가치를 공유하는 파트너와만 협력합니다. arXiv 커뮤니티에 도움이 되는 프로젝트 아이디어가 있습니까? arXivLabs에 대해 자세히 알아보세요.

개발

확률적 미적분 입문: 이산 단계에서 연속 확률로

2025-02-24

이 블로그 게시글은 파스칼의 삼각형과 이항 분포로 시작하여 브라운 운동과 이토 적분에 대한 직관을 구축함으로써 확률적 미적분에 대한 접근하기 쉬운 소개를 제공합니다. 브라운 운동의 물리적 의미와 수학적 유도를 설명하고, 이토 보조정리와 확률 미분 방정식(SDE)을 소개하며, 스트라토노비치 적분도 다룹니다. 수많은 그림과 코드 예시가 포함되어 있어 확률적 미적분을 탐구하고 싶은 사람들에게 이상적입니다.

DOS 3.3 SYS.COM 명령어의 숨겨진 버그: NetDrive 디스크 이미지 손상의 미스터리

2025-02-24

이 글에서는 저자가 DOS 3.3 시스템 명령어 `SYS.COM`의 버그를 조사한 과정을 자세히 설명합니다. 이 명령어는 부트로더 코드를 디스크에 복사하지만, NetDrive 가상 디스크 이미지와 함께 사용하면 이미지가 손상됩니다. 면밀한 분석 결과, 저자는 `SYS.COM`이 디스크 매개변수를 가져오는 데 사용되는 일반 IOCTL 호출의 반환 코드를 확인하지 않는다는 것을 발견했습니다. 이 호출이 실패하면 (예: NetDrive 드라이버가 해당 기능을 지원하지 않는 경우), `SYS.COM`은 잘못된 쓰레기 데이터를 디스크 부트 섹터에 기록하여 이미지를 손상시킵니다. 이 버그는 DOS가 디스크의 기하학적 정보를 가져오려고 시도하기 때문에 특정 유형의 디스크 이미지(예: 하드 디스크 이미지)에서만 발생합니다. 플로피 디스크 이미지에서는 발생하지 않습니다. 저자는 최종적으로 버그의 근본 원인을 찾아내고 발생 조건을 설명합니다.

개발

Ente: Google 포토 대안을 자체 호스팅하고 개인 정보 보호를 확보하세요

2025-02-24
Ente: Google 포토 대안을 자체 호스팅하고 개인 정보 보호를 확보하세요

이 블로그 게시물에서는 오픈소스 Google 포토 대안인 Ente를 자체 호스팅하는 방법을 자세히 설명합니다. Kubernetes 클러스터에 서버를 배포하고 GitHub Pages에 프런트엔드를 배포하는 방법을 보여줍니다. 필요한 코드, 구성 파일, Cloudnative-PG 데이터베이스 설정 방법, AWS Parameter Store에서 비밀을 가져오는 방법 등이 포함되어 있습니다. 기술적인 지식이 필요하지만, Kubernetes에 익숙하고 개인 정보 보호를 중시하는 사용자에게 이상적입니다. GitHub Actions를 사용한 사용자 지정 Docker 이미지 빌드 방법과 Terraform을 사용한 GitHub 저장소 관리 방법도 설명합니다.

개발

Emacs 30.1: 네이티브 컴파일, 안드로이드 지원 등

2025-02-24
Emacs 30.1: 네이티브 컴파일, 안드로이드 지원 등

Emacs 30.1이 출시되었습니다. 많은 새로운 기능과 개선 사항이 포함되어 있습니다. 네이티브 컴파일이 기본적으로 활성화되어 성능이 크게 향상되었습니다. 안드로이드 완벽 지원이 추가되었으며, 터치스크린 사용성도 개선되었습니다. 그 외에도 내장 JSON 파서, 향상된 미니버퍼 자동완성, 강화된 Org 모드 URI 프로토콜 통합 등 많은 개선 사항이 있습니다. 이번 릴리스는 Emacs의 큰 발전입니다.

Rust의 Linux 커널 통합: 더딘 진행과 뜨거운 논쟁

2025-02-24
Rust의 Linux 커널 통합: 더딘 진행과 뜨거운 논쟁

Rust의 Linux 커널 통합은 처음에는 유망해 보였지만 상당한 역풍을 맞았습니다. 2022년 Linus Torvalds의 승인에도 불구하고, 새로운 언어 학습을 주저하는 베테랑 커널 개발자들의 저항과 비기술적인 장애물 때문에 진행이 더뎠습니다. 최근 Asahi Linux 프로젝트 리더인 Hector Martin이 Rust 구현의 장애물을 이유로 사임하면서 뜨거운 논쟁이 일어났습니다. Torvalds는 Rust의 잠재력을 인정하면서도 채택을 강제할 의향이 없다고 강조하며, 보다 미묘한 해결책이 모색되고 있습니다.

개발

스크래치로 BitTorrent 클라이언트 만들기: 주말 프로젝트

2025-02-24

이 글에서는 BitTorrent 클라이언트를 만드는 주말 프로젝트에 대해 자세히 설명합니다. BitTorrent 프로토콜의 작동 방식, 피어 검색, .torrent 파일(Bencode) 파싱, 트래커와의 통신, 피어와의 핸드셰이크, 파일 조각 다운로드 등의 단계를 설명합니다. Go 언어를 사용하며, Bencode 파서, 트래커 요청 빌더, 메시지 파서, 동시 다운로드 관리 등의 중요한 코드 스니펫을 제공합니다. Bitfield, 블록 요청, 파이프라이닝과 같은 기술적 세부 사항도 설명하고, 동시 처리 및 상태 관리의 중요성을 강조합니다. 일부 코드는 생략되었지만, 이 글은 BitTorrent 클라이언트를 구축하기 위한 명확한 로드맵을 제공합니다.

개발

openCFS: 성숙한 오픈소스 다중물리 시뮬레이션 도구

2025-02-24

openCFS는 유한요소법 기반의 다중물리 모델링 및 시뮬레이션 도구로, 20년간의 연구 중심 개발을 자랑합니다. 핵심 기술은 과학 연구 및 산업 응용 분야에 사용됩니다. 주요 기능으로는 다양한 물리 분야와 결합, 비정합 그리드 기술, 구조 최적화, 유연한 데이터 교환, 스크립트 가능한 XML 입력, 강력한 내장 라이브러리가 있습니다. 방대한 예제, 포괄적인 테스트 제품군, 대학 과정에서의 활용으로 학습이 용이합니다. 활기찬 커뮤니티와 EnSimTech UG의 상용 지원으로 지속적인 개발과 접근성이 보장됩니다.

`target='_blank'`의 언더스코어의 비밀

2025-02-24

`target='_blank'`에 언더스코어가 필요한 이유가 궁금하신 적이 있으신가요? HTML5 이전에는 개발자들이 ``을 사용하여 SPA와 유사한 기능을 만들고, 각각 고유한 ID를 가진 프레임으로 창을 나누었습니다. `target` 속성은 링크를 어떤 프레임에 로드할지를 지정했습니다. `_blank`는 프레임 이름이 아니고, 새로운 창(당시에는 탭이 일반적이지 않았습니다)을 열도록 브라우저에 지시했습니다. 언더스코어는 특수 값이며, 프레임 이름이 아님을 나타냅니다. ``은 더 이상 사용되지 않지만, `_blank` 관례는 남아 있습니다.

개발

JSON: Unix 시스템에서의 기계 판독 가능 출력을 위한 실용적인 선택

2025-02-24

Postfix 메일 큐에서 이메일을 삭제한 경험을 바탕으로 저자는 기계 판독 가능 출력 형식으로 JSON을 사용할 것을 주장합니다. JSON은 완벽하지 않지만 Unix 시스템에서 명확성, 광범위한 호환성, 풍부한 도구 지원, 다른 형식으로의 쉬운 변환 등 여러 가지 실용적인 장점을 제공합니다. 저자는 새로운 프로그램의 경우 JSON만을 기계 판독 가능 출력 형식으로 사용하는 것이 가장 간단한 방법이며, 사용자 정의 형식 설계의 복잡성을 피하고 Unix 프로그램 간의 상호 운용성을 증진한다고 제안합니다.

arXivLabs: arXiv 새로운 기능 개발을 위한 커뮤니티 협업

2025-02-24
arXivLabs: arXiv 새로운 기능 개발을 위한 커뮤니티 협업

arXivLabs는 참여자들이 arXiv의 새로운 기능을 웹사이트에서 직접 개발하고 공유할 수 있는 실험적인 프레임워크입니다. arXivLabs와 협력하는 개인 및 조직은 개방성, 커뮤니티, 우수성, 사용자 데이터 개인 정보 보호라는 arXiv의 가치를 공유합니다. arXiv는 이러한 가치에 전념하며, 이를 준수하는 파트너와만 협력합니다. arXiv 커뮤니티를 향상시킬 아이디어가 있으십니까? arXivLabs에 대해 자세히 알아보세요.

개발

OBS Studio와 Fedora Flatpak의 분쟁 해결

2025-02-24
OBS Studio와 Fedora Flatpak의 분쟁 해결

OBS Studio팀과 Fedora Linux 개발자 간의 Fedora Flatpak 버전 OBS Studio 관련 분쟁이 해결되었습니다. 초기 법적 위협으로 상황이 악화되었지만, 양측은 대화를 통해 문제를 해결했습니다. OBS Studio팀은 지적 재산권 제거 또는 Fedora Flatpak 애플리케이션 이름 변경 요청을 철회했습니다. 앞으로 Qt 런타임 회귀, 버그 보고 메커니즘, 하드웨어 가속, X11 폴백, 플러그인 관련 문제 등 남은 기술적 문제 해결에 협력할 것입니다.

개발

OpenAI 인정: 최첨단 AI 모델도 인간 프로그래머를 대체할 수 없다

2025-02-24
OpenAI 인정: 최첨단 AI 모델도 인간 프로그래머를 대체할 수 없다

OpenAI의 새로운 논문에 따르면 GPT-4와 Claude 3.5와 같은 최첨단 대규모 언어 모델(LLM)조차도 소프트웨어 엔지니어링 작업의 대부분을 처리할 수 없다는 사실이 밝혀졌습니다. 연구원들은 Upwork에서 1400개 이상의 소프트웨어 엔지니어링 작업을 수집한 새로운 벤치마크 SWE-Lancer를 사용했습니다. 결과적으로 이러한 모델들은 표면적인 문제만 해결할 수 있었고, 대규모 프로젝트의 버그나 근본 원인을 찾을 수 없었습니다. LLM은 속도가 빠르지만, 정확성과 신뢰성이 인간 프로그래머를 대체하기에는 부족하며, OpenAI CEO인 Sam Altman의 예측과 상반됩니다.

개발

효율적인 슬라이딩 윈도우 알고리즘: 함수형 큐를 사용한 O(n) 해법

2025-02-24

이 글에서는 함수형 프로그래밍 기법을 사용하여 슬라이딩 윈도우 문제를 효율적으로 해결하는 알고리즘을 제시합니다. 두 개의 스택을 기반으로 구축된 함수형 큐를 사용하고 모노이드의 속성을 활용하여 최대값, 최소값, 합계 등 슬라이딩 윈도우의 다양한 통계량을 O(n) 시간에 계산합니다. 이 글에서는 모노이드로 주석이 달린 스택과 큐의 구현 세부 정보, 코드 예시, 그리고 관련 알고리즘 과제에 대해 설명합니다.

LeetArxiv: Arxiv 논문을 위한 LeetCode - 연구를 위한 실용적인 코딩 가이드

2025-02-24
LeetArxiv: Arxiv 논문을 위한 LeetCode - 연구를 위한 실용적인 코딩 가이드

LeetArxiv는 연구 경력으로 전환하려는 프로그래머를 위해 Arxiv 논문을 기반으로 한 매주 단계별 코딩 가이드를 제공합니다. 사례 연구는 1981년 논문의 AAN 이산 코사인 변환(DCT) 구현에 중점을 둡니다. 이 가이드는 DCT-II 방정식과 AAN 최적화(비용이 많이 드는 코사인 계산 감소, 대칭성 활용, 미리 계산된 상수 사용, 병렬 처리 사용)를 자세히 설명하는 C 구현(다른 언어로 쉽게 적용 가능)을 제공합니다. 이 연습에서는 알고리즘의 플로우차트와 코드를 다루며 실용적인 코딩 연습을 통해 복잡한 연구에 접근할 수 있도록 합니다.

FlashMLA: Hopper GPU를 위한 고효율 MLA 디코딩 커널

2025-02-24
FlashMLA: Hopper GPU를 위한 고효율 MLA 디코딩 커널

FlashMLA는 가변 길이 시퀀스 제공을 위해 최적화된 Hopper GPU용 고효율 MLA 디코딩 커널입니다. CUDA 12.6을 사용하는 H800 SXM5에서 메모리 제한 구성에서는 최대 3000GB/s, 계산 제한 구성에서는 580TFLOPS의 성능을 달성합니다. FlashMLA는 BF16 정밀도와 블록 크기 64의 페이징된 kvcache를 사용합니다. FlashAttention 2&3과 Cutlass 프로젝트에서 영감을 받은 FlashMLA는 대규모 시퀀스 처리에서 상당한 성능 향상을 제공합니다.

개발 MLA 디코딩

기적! 정렬 함수 버그 발견!

2025-02-24
기적! 정렬 함수 버그 발견!

저자는 수년간의 프로그래밍 경험에서 믿을 수 없는 일을 이야기합니다. JavaScript의 내장 `sort()` 함수에서 버그를 발견한 것입니다! 이 버그로 인해 정렬 결과가 잘못되어 오랫동안 그를 괴롭혔습니다. 마침내 그는 Code Studio 팀에 이 버그를 보고했고, 신속한 대응과 수정을 받았습니다. 이 이야기는 보기에 완벽해 보이는 시스템 소프트웨어에도 버그가 있을 수 있으며, 프로그래머는 항상 회의적인 태도를 유지하고, 컴파일러나 시스템을 맹목적으로 비난하기보다는 끈기 있게 문제의 근본 원인을 찾아야 함을 생생하게 보여줍니다.

개발 정렬 함수

선형 시간 알고리즘의 한계를 넘어서: 서브리니어 시간 알고리즘의 부상

2025-02-24

선형 시간 알고리즘은 오랫동안 문제 해결의 황금 기준으로 여겨져 왔습니다. 하지만 방대한 데이터 세트의 확산과 함께 서브리니어 시간 알고리즘이 점점 주목받고 있습니다. 서브리니어 시간 알고리즘은 입력 데이터의 아주 작은 부분만 읽기 때문에 불가능해 보일 수 있습니다. 일부 문제에 대해서는 결정적 서브리니어 시간 알고리즘이 존재하지만, 대부분의 문제는 무작위화가 필요하며 근사적인 해결책을 제공합니다. 최근 고전적인 최적화 문제와 속성 테스트 등 다양한 문제에서 획기적인 발전이 이루어지고 있습니다. Szemerédi 정칙성 보조정리와 저랭크 행렬 근사와 같은 기법이 서브리니어 알고리즘 설계에 유용하게 활용되고 있지만, 그 범위와 한계에 대해서는 아직 많은 부분이 밝혀지지 않았습니다.

1 2 152 153 154 156 158 159 160 214 215