go에서 mkl 사용하기
환경은 macOS Mojave입니다.
TL;DR;
/opt/intel/mkl/bin/pkgconfig/*.pc
파일 수정PKG_CONFIG_PATH
go build
세부 정보
Step1: mkl 설치
Intel 페이지에서 mkl 설치를 다운로드합니다.
다운로드하려면 사용자 등록이 필요합니다.
Step2: /opt/intel/mkl/bin/pkgconfig/*.pc 파일 수정
내가 설치한 환경의 기본값이 잘못되었습니다.
다음과 같이 수정합니다.
diff /opt/intel/mkl/bin/pkgconfig/mkl-static-lp64-iomp.pc /opt/intel/mkl/bin/pkgconfig/mkl-static-lp64-iomp.pc.back
14c14
< prefix=/opt/intel/compilers_and_libraries_2019.4.233/mac/mkl
---
> prefix=/opt/intel/compilers_and_libraries_2019.4.233/mac/mkl/bin/pkgconfig/mkl
Step3: 환경 변수 PKG_CONFIG_PATH 설정
cgo는 내부에서 실행하기 위해pkg-config
설정 파일의 존재를 알려줄 필요가 있습니다.
저는 GoLand를 사용하기 때문에 아래와 같이 구축 설정을 했습니다.
Step4: cgo 호출 코드
cgo로 호출하세요.이번에는 블라스에 포함된 asum을 연습으로 호출했다.
코드 예제
package main
import (
// #cgo pkg-config: mkl-static-lp64-iomp
// #include "mkl.h"
"C"
"fmt"
)
func main() {
n := 10
vec := make([]float32, n)
for i := 0; i < n; i++ {
vec[i] = float32(i) + 1.0
}
result := C.cblas_sasum((C.int)(n), (*C.float)(&vec[0]), 1)
fmt.Printf("result=%v", result)
}
Step5: go build
이미 구축하고 실행할 수 있을 거예요.
감상
나는 패키지-config 설정이 잘못된 곳에서 그것에 빠졌다.
참고 문헌
diff /opt/intel/mkl/bin/pkgconfig/mkl-static-lp64-iomp.pc /opt/intel/mkl/bin/pkgconfig/mkl-static-lp64-iomp.pc.back
14c14
< prefix=/opt/intel/compilers_and_libraries_2019.4.233/mac/mkl
---
> prefix=/opt/intel/compilers_and_libraries_2019.4.233/mac/mkl/bin/pkgconfig/mkl
package main
import (
// #cgo pkg-config: mkl-static-lp64-iomp
// #include "mkl.h"
"C"
"fmt"
)
func main() {
n := 10
vec := make([]float32, n)
for i := 0; i < n; i++ {
vec[i] = float32(i) + 1.0
}
result := C.cblas_sasum((C.int)(n), (*C.float)(&vec[0]), 1)
fmt.Printf("result=%v", result)
}
나는 패키지-config 설정이 잘못된 곳에서 그것에 빠졌다.
참고 문헌
Reference
이 문제에 관하여(go에서 mkl 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jnory/items/6260e0cb76d12b8edd2a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)