AMD는 LLVM libc를 위한 효율적인 장치 측 `malloc` 구현을 업스트림하여 GPU 메모리 관리에 중요한 개선을 도입했습니다. 이 개발은 표준 C/C++ 코드가 GPU에서 실행될 수 있도록 하는 광범위한 노력의 일환으로, GPU 프로그래밍의 성능과 사용성을 향상시키는 데 기여합니다.
새로운 `malloc` 구현은 전역 참조 카운트 포인터를 활용하여 동적으로 생성되고 파괴되는 슬랩 인터페이스에 대한 접근을 관리합니다. 각 슬랩은 고정 크기 할당을 나타내는 큰 비트 필드로 구성되어 있습니다. 이 방법은 원하는 크기에 대한 슬랩을 검색하거나 생성하고, 공간을 예약하며, 할당을 위한 자유 비트를 식별함으로써 효율적인 메모리 할당을 가능하게 합니다. 메모리를 해제할 때는 비트를 지우고 할당된 공간을 해제하는 과정을 포함합니다.
이 혁신적인 접근 방식은 동적 메모리의 성장과 축소를 용이하게 할 뿐만 아니라, 첫 사용 시 더 빠른 모드와 비RPC(non-RPC) 버전과 같은 향후 개선을 위한 기반을 마련합니다. 이 개발의 의미는 상당하며, 특히 동적 메모리 관리가 필요한 시나리오에서 GPU 애플리케이션의 성능 향상으로 이어질 수 있습니다.
전반적으로 AMD의 효율적인 `malloc` 지원 업스트림은 GPU 프로그래밍에서 주목할 만한 발전을 나타내며, 특히 고성능 컴퓨팅 및 게임 애플리케이션에서 기술 산업에서 경쟁 우위를 제공할 가능성이 있습니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.