SPO600 프로젝트 1부
이번 학기 프로젝트에는 SVE2 최적화를 오픈 소스 소프트웨어 패키지에 추가하는 작업이 포함됩니다.
첫 번째 부분에서는 다음 부분을 살펴보겠습니다.
(동일한 문서를 다시 작성하지 않기로 결정했습니다. 각 부분의 규칙here에 대한 자세한 내용을 읽을 수 있습니다.)
- Identify some candidate open-source packages for optimization.
- Find the SIMD implementations in these packages.
- Select the package you want to work with.
- Create a strategy for your changes.
- Note how the community accepts contributions and engages with the community to discuss your proposed work.
몇 가지 오픈 소스 후보를 찾아봅시다.
나는 지금 거의 2년 동안 상당한 오픈 소스 재미를 느끼고 있으며 호기심 때문에 이전에 기여하고 싶었던 라이브러리와 소프트웨어를 먼저 확인하기로 결정했습니다.
가장 최근의 아이디어는 Curl과 몇 가지 Python 라이브러리를 살펴보는 것이었습니다. 그리고 자바스크립트 웹 소켓 라이브러리를 보기로 했다. 그래도 랩에서 더 많은 팁을 읽은 후 다음 방법 중 하나로 어셈블리를 추가하는 것이 더 쉽기 때문에 라이브러리 수준 패키지만 살펴보고 c/C++를 사용하는 것이 훨씬 낫다고 생각했습니다.
Examples:
https://github.com/pandas-dev/pandas
https://github.com/booknlp/booknlp/find/main
https://github.com/optuna/optuna
더 나은 것으로 전환하기로 결정했고 몇 시간 동안 검색한 후 다음 저장소를 찾았습니다.
NSIMD https://github.com/agenium-scale/nsimd
FastDifferentialCoding https://github.com/lemire/FastDifferentialCoding
VS https://github.com/VcDevel/Vc
XSIMD https://github.com/xtensor-stack/xsimd
Google repo에서 이 프로젝트를 찾았다는 사실에 놀랐습니다.
https://github.com/google/highway 그리고 소유자 repo에 이메일을 보내 그들이 어떤 진전을 보였는지, 그리고 repo 내부의 SIMD/SVE 지침에 대한 모든 것을 확인했습니다.
피드백을 받았습니다:
하지만 안타깝게도 이 이메일을 받는 동안 SVE2 지침이 이미 있음을 확인했습니다.
약간의 경험을 갖고 todos를 구현하는 것은 좋지만 다른 blogPost에 있습니다.
계속 진행하기로 결정하고 다음 저장소를 발견했습니다.
XSIMDhttps://github.com/xtensor-stack/xsimd
VS https://github.com/VcDevel/Vc
왜요?
이 패키지에 SIMD 구현이 있습니까?
예, 두 리포지토리 모두 SIMD 명령어가 있지만 그 중 하나에는 arm 명령어만 있습니다.
작업할 패키지를 선택합니다.
패키지에 대해.
Vc는 명시적으로 데이터 병렬 프로그래밍을 위한 이식 가능하고 오버헤드가 없는 C++ 유형입니다.
저는 주로 VC와 함께 SVE2 명령어를 구현하고 XSIMD와 함께 작업할 것입니다.
변화를 위한 전략을 세우십시오.
지금은 이미 GitHub에서 리포지토리를 포크하고 내 로컬 VSCode에 복제했습니다. 이제 코드를 탐색하여 업데이트할 수 있는 항목, 빌드 프로세스가 작동하는 방식, 라이브러리가 전반적으로 작동하는 방식, .h(헤더 파일) + 빌드용 스크립트 등과 같은 SVE2 명령어의 모든 기능을 구현하는 방법을 살펴보겠습니다. 에.
커뮤니티가 기여를 수락하고 커뮤니티와 협력하여 제안된 작업을 논의하는 방법에 유의하십시오.
SVE2 명령어를 repo에 추가할 수 있는지 확인하려면 슬랙이나 이메일에 메시지를 작성해야 합니다. 하지만 GitHub 리포지토리이므로 새 풀 요청으로 간단하게 내 업데이트를 확인하기를 바랍니다.
문제를 만들었습니다. 어떻게 될지 봅시다:
https://github.com/VcDevel/Vc/issues/320
또한 나는 확실히 google/highway에서 시간을 보낼 것입니다. 가능한 한 빨리 이에 대한 내 새 블로그를 기다리십시오.
결론
⚠️ 컴퓨터 아키텍처 블로그 게시물: 링크
연결
🖇 팔로우GitHub
🖇 팔로우
_p.s 이 게시물은 내 소프트웨어 이식성 및 최적화 수업을 위해 작성되었습니다. 실습 6.
Reference
이 문제에 관하여(SPO600 프로젝트 1부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aserputoff/spo600-project-part-1-5de5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)