문제

C#에 작성된 프로젝트가 있습니다. 여기서 매트릭스에 대한 다양한 선형 대수 연산 (lu-factorization)에 대한 프로젝트가 있습니다.

이 프로그램은 주로 이론을 확인하기 위해 생성 된 프로토 타입이므로 C# 구현으로 충분하지만 (더 빠른 C ++와 비교할 때) 코딩을 절약 할 수있는 좋은 BLAS 또는 LAPACK 라이브러리를 좋아할 것입니다.

간단히 말해서 .NET과 함께 사용하기 위해 무료/오픈 소스 BLA 또는 LAPACK 라이브러리를 추천 할 수 있습니까?

에길은 안부입니다.

업데이트 : 발견 Math.net Numerics 오늘은 흥미로워 보입니다. 누구든지 그 경험이 있습니까?

도움이 되었습니까?

해결책

AMD의 ACML은 a입니다 무료 다운로드하지만, 오픈 소스가 아닌 이진 전용입니다. .NET가 아닌 기본 코드입니다.

성능은 일반적으로 netlib.org 코드보다 우수하며 일반적으로 무료 IIRC가 아닌 Intel의 MKL과 거의 동일합니다.

다운로드에는 C#에 바인딩하는 방법을 보여주는 샘플 하나가 포함되어 있습니다. C#에서 다른 C 또는 C ++ 라이브러리를 호출하는 것과 다르지 않습니다.

라이브러리는 BLA, LAPACK, FFT 및 RNG를 구현합니다.

http://developer.amd.com/cpu/libraries/acml/downloads/pages/default.aspx

댓글에 응답하려면 편집 :

인텔 CPU에서 AMD의 ACML은 인텔의 MKL뿐만 아니라 알고리즘, 행렬 크기, 코어 수, 메모리 토폴로지 및 속도 등 등에 따라 다를 수 있습니다. 확실히 말할 수있는 유일한 방법은 자신의 벤치 마크를 실행하는 것입니다. 경우에 따라 ACML은 Itel 하드웨어에서도 MKL보다 빠릅니다.

어느 쪽이든 "순진한"구현보다 훨씬 빠릅니다. 크기가 큰 매트릭스. 둘 다 멀티 코어 프로세서에서 여러 스레드를 사용하도록 아키텍처되며, 손으로 트웨어 된 어셈블리 언어 커널과 다양한 컴퓨터의 캐시 동작에 대한 많은 튜닝이 있습니다.

을 위한 작은 매트릭스, 성능은 일반적으로 치료하지 않습니다. 현대 CPU는 가장 간단한 코드를 사용하더라도 몇 밀리 초로 작은 마틱을 해결할 수 있기 때문입니다. 이 경우 이미 수백 번 쓰여진 코드 작성 및 디버깅을 피하기 위해 도서관을 사용하고 있습니다.

다른 팁

수학 도서관 dotnumerics C#로 작성된 무료/오픈 소스 프로젝트는 Lapack, BLAS 및 Eispack의 번역을 C#로 포함합니다.

BLIS (Blis-Like Library Instantiation Software)는 오픈 소스 BLAS 라이브러리의 현재 골드 표준입니다. https://github.com/flame/blis MKL만큼 빠르지는 않지만 (가깝지만) 전설적인 고토 블라스의 포크 인 OpenBlas보다 빠르지는 않습니다. 잘 유지됩니다.

다른 답변에 언급 된 ACML은 더 이상 존재하지 않습니다. AMD는 이제 ACL (AMD Compute Library) 소프트웨어 스택의 일부로 오픈 소스 소프트웨어를 사용합니다. BLIS는 소프트웨어 스택의 일부입니다. https://developer.amd.com/amd-cpu-libraries/blas-library/.

Caviat : 포스터는 BLIS 프로젝트의 일부입니다. 위의 주장은 잘 문서화되어 있습니다.

(나중에 추가 : ".NET"을 알지 못했습니다. 불행히도 BLIS는 아직 Windows에 잘 지원되지 않습니다.)

Lutz Roeder는 좋은 오픈 소스 포트를 가지고 있습니다 mapack.net

과거에 다양한 프로젝트에 사용되었으며

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top