C / C ++에 BLAS의 참조 수준 구현이 있습니까?


11

netlib BLAS 구현은 훌륭한 참조이며, 대부분 최적화되지 않고 잘 문서화되어 있습니다 (예 : zgemm ). 그러나 그것은 Fortran 77에 있으며, 더 현대적인 프로그래밍 교육을받은 사람들에게는 다소 접근 할 수 없습니다. C / C ++에 netlib와 같은 BLAS의 참조 레벨 구현이 있습니까?

답변:


10

GNU Scientific Library의 구현 을 살펴 보셨습니까 ? 소스 코드를 충분히 읽을 수 있고 루틴이 잘 문서화되어 있습니다.


나에게 좋아 보인다. 문서에는 약간 부족하지만 변수 이름은 명확하게 생각할 정도로 충분히 선택됩니다. 아마도 netlib BLAS 루틴의 시작 주석 앞에 추가 할 것입니다. 정확히 무엇이 문제가 되나요? 대안이 있습니까?
맥스 허친슨

6

BLAS의 주목할만한 C 언어 구현은 ATLAS입니다. 유용한 기능 중 :

  1. 대수 루틴은 간단한 C뿐만 아니라 여러 아키텍처 및 변형에 대해 고도로 최적화 된 어셈블러 지원 버전으로 구현되었습니다.
  2. 빌드 시스템에는 ATLAS 라이브러리의 여러 변형을 컴파일하여 주어진 시스템에서 가장 빠른 것을 설정하는 "자동 튜너"가 있습니다.

http://math-atlas.sourceforge.net/


나는 ATLAS를 보았지만 이것을 놓쳤다. 참조 구현의 경로는 "src / blas / reference"이며, 문자 유형과 루틴 이름 사이에 "ref"가 삽입되고 문자 인수가 추가됩니다.
Max Hutchinson

3

Netlib은 또한 BLAS를 포함 하는 CLAPACK 을 생성 하지만 f2c를 통해 실행되는 포트란 코드 일 뿐이므로 약간 복잡합니다 (예 : zgemm ).



0

RNPRNP2 에 BLAS / LAPACK 비트가 구현되어 있습니다 .


이것은 흥미롭지 만, BLSL 이후와 GSL 및 ATLAS의 참조 구현보다 훨씬 간단합니다.
Max Hutchinson

-1

현재 dgemm을 다른 수준의 병렬화 (명령 수준, OpenMP, MPI)로 이끄는 예제로 사용하는 "LAFF-On High-Performance Computing"(대량 오픈 온라인 과정)을 진행하고 있습니다.

이것은 BLAS에 대한 참조 구현이 아니지만 성능을 위해 BLAS를 코딩하는 방법에 대한 참조입니다. 정보를 유지하려면 www.ulaff.net을 방문하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.