C 언어 행 우선 과 열 우선 문제 에 대한 심도 있 는 분석
요약
본 고 는 주로'행 우선'원칙 과'열 우선'원칙 의 문 제 를 연구한다.
1.배경
먼저'행 우선'과'열 우선'의 지식 을 알 아 본다.이 두 가지 방식 은 수학 적 으로 다음 과 같이 직관 적 으로 설명 하고 다음 과 같은 행렬 을 정한다.
줄 우선 원칙 에 따라 정렬 방식 은?
열 우선 원칙 에 따라 정렬 방식 은?
2.컴퓨터 분야 의 응용
행렬 우선 원칙 은 컴퓨터 분야 에서 주로 다음 과 같다.줄 우선 순위 나 열 우선 순 위 는 좋 고 나 쁨 이 없 지만 메모리 에 있 는 데이터 에 대한 가장 좋 은 저장 접근 방식 과 직 결 됩 니 다.메모리 사용 에 있어 서 프로그램 이 접근 하 는 메모리 주소 간 의 연속 성 이 좋 을 수록 프로그램의 접근 효율 이 높 기 때문이다.이에 따라 프로그램 이 접근 하 는 메모리 주소 간 의 연속 성 이 떨어진다.따라서 우 리 는 줄 우선 체제 의 컴 파일 러,예 를 들 어 C/C++,CUDA 등에 서 줄 우선 데이터 저장 방식 을 사용 해 야 한다.열 우선 체제 의 컴 파일 러,예 를 들 어 Foortune,Matlab 등에 서 열 우선 데이터 저장 방식 을 사용한다.그러나 이런 사상 이 프로 그래 밍 에 침투 하면 코드 의 질 이 한 단계 높아진다.
3.행렬 계산 을 예 로 들 면(Matlab 컴 파 일 러 에서 테스트)
% data
A = [ 1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9];
B = [ 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9];
C = zeros(9,9);
% The method of matrix multiplication in Matlab
tic
C = A*B;
toc
% Our impletation method of matrix multiplication
tic
for ra = 1:9 % raws of the matrix A
for cb = 1:9 % columns of the matrix B
for len = 1:2
C(ra,cb) = A(ra,len)*B(len,cb)+C(ra,cb);
end
end
end
toc
% Optimal method 1
tic
for cb = 1:9 % columns of the matrix B
for ra = 1:9 % raws of the matrix A
for len = 1:2
C(ra,cb) = A(ra,len)*B(len,cb)+C(ra,cb);
end
end
end
toc
% Advanced optimal method 2
A = A'; % you can also directly given A = [ 1 2 3 4 5 6 7 8 9
% 1 2 3 4 5 6 7 8 9];
B = [ 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9];
tic
for i = 1:9 % columns of the matrix A
for j = 1:9 % columns of the matrix B
for len = 1:2
C(i,j) = A(len,i)*B(len,j)+C(i,j);
end
end
end
toc
4.테스트 와 분석테스트 결 과 는 위의 그림 에서 보 듯 이 첫 번 째 시간 은 Matlab 자체 의 곱셈 연산 이 고 두 번 째 는 우리 가 원시 적 으로 실현 한 곱셈 계산 이 며 세 번 째 는 순환 중의 행렬 변환(열 우선 컴 파일 러 의 처리 에 적응)이다.
가장 중요 한 것 은 네 번 째 는 본인 이 창작 한 행렬 곱셈 방법 입 니 다.쉽게 말 하면 A 행렬 을 옮 긴 다음 에 해당 하 는 알고리즘 을 설계 하여 행렬 곱셈 연산 을 실현 하 는 것 입 니 다.이 점 에서 원 리 를 이해 하 는 기초 위 에서 독자 에 게 약간의 깨 우 침 을 줄 수 있 기 를 바란다.본 사례 에서 이렇게 하 는 효율 이 가장 높 은 이 유 는 본 사례 에서 원시 데이터 구조 가 나 에 게 이렇게 처리 하기에 적합 하기 때문이다.그 이 유 는 두 번 째 로 이렇게 하 는 목적 은 모든 키 곱셈 의 처리 에 있어 두 곱셈 이 있 는 메모리 공간 이 연속 이 아니 라 연속(주의:이것 은 본 고의 핵심 이 고 독자 들 이 이해 하면 반드시 수확 이 있 을 것 이 며 제 가 제시 한 절차 가 실현 되 는 것 을 진지 하 게 보 는 것 입 니 다.이것 은 핵심 입 니 다.모 르 는 것 은 사상 을 교류 할 수 있 습 니 다)!
또한 본 고 에서 제 가 제시 한 이 방법 은 행렬 곱셈 에서 가장 좋 은 방법 입 니 다.적어도 수학 논리 적 으로 는 이 렇 습 니 다.Matlab 자체 의 곱셈 계산 이 성능 이 좋 은 이 유 는 Matlab 자체 의 연산 이 모두 최적화 되 었 기 때 문 입 니 다.하드웨어 가속,시스템 가속 등 자체 디자인 의 응용 이 가속 방법 을 호출 할 수 있 기 때 문 입 니 다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.