- 질문 게시판입니다.
Date | 17/09/13 10:06:48 |
Name | 무적의청솔모 |
Subject | 루프 vs 벡터화 |
데이터가 클 때는 벡터로 만들어서 계산하는게 더 빠르다는데 왜 그런거죠? 확실히 써야되는 코드가 짧기는 한데 왜 그런건지 잘 모르겠습니다. 매트랩 처음 배울때도 매트랩에서는 모든 데이터를 벡터형태로 저장한다는 게 큰 특징이다. 라는데 그게 왜 장점인지 잘 모르겠더라구요. * 저는 컴공 전공자가 아니고 매트랩이랑 파이썬만 약간 만져본 사람입니다. 0
|
data structure 구현 방식마다 동작할 때 필요한 시간이 다릅니다.
http://www.sgi.com/tech/stl/complexity.html
데이터가 작을 때는 별 상관 없어도 많아지면 차이가 커지니까 big-o notation을 찾아 보시고 결정하세요.
http://www.sgi.com/tech/stl/complexity.html
데이터가 작을 때는 별 상관 없어도 많아지면 차이가 커지니까 big-o notation을 찾아 보시고 결정하세요.
한 마디로 말해서, 데이터를 일일히 하나씩 처리하느냐 아니면 여러 개를 묶어서 한번에 처리하느냐의 차이입니다.
SIMD(Single Instruction Multiple Data)라는 용어에 대해서 들어보셨는지 모르겠습니다. 이것은 마이클 플린이라는 학자가 분류한 컴퓨터의 작동 방법 중 하나로, 하나의 명령어를 묶여 있는 여러 개의 데이터(=벡터)에 동시에 적용하여 계산을 하는 방식입니다. 대량의 데이터 처리에 적합하지요. 요즘 CPU에는 이 SIMD를 지원하는 명령어 세트가 내장되어 있습니다. 인텔의 SSE가 대표적이지요. 매트랩 같은 프로그램에서 이 SSE를 적용하여 계산을 하면 계산 속도가 ... 더 보기
SIMD(Single Instruction Multiple Data)라는 용어에 대해서 들어보셨는지 모르겠습니다. 이것은 마이클 플린이라는 학자가 분류한 컴퓨터의 작동 방법 중 하나로, 하나의 명령어를 묶여 있는 여러 개의 데이터(=벡터)에 동시에 적용하여 계산을 하는 방식입니다. 대량의 데이터 처리에 적합하지요. 요즘 CPU에는 이 SIMD를 지원하는 명령어 세트가 내장되어 있습니다. 인텔의 SSE가 대표적이지요. 매트랩 같은 프로그램에서 이 SSE를 적용하여 계산을 하면 계산 속도가 ... 더 보기
한 마디로 말해서, 데이터를 일일히 하나씩 처리하느냐 아니면 여러 개를 묶어서 한번에 처리하느냐의 차이입니다.
SIMD(Single Instruction Multiple Data)라는 용어에 대해서 들어보셨는지 모르겠습니다. 이것은 마이클 플린이라는 학자가 분류한 컴퓨터의 작동 방법 중 하나로, 하나의 명령어를 묶여 있는 여러 개의 데이터(=벡터)에 동시에 적용하여 계산을 하는 방식입니다. 대량의 데이터 처리에 적합하지요. 요즘 CPU에는 이 SIMD를 지원하는 명령어 세트가 내장되어 있습니다. 인텔의 SSE가 대표적이지요. 매트랩 같은 프로그램에서 이 SSE를 적용하여 계산을 하면 계산 속도가 빨라질 수 있습니다. 당연한 것이, 한 번에 여러 개의 데이터를 동시에 계산하는 것이니까요. 제가 알기로 애초에 매트랩은 이런 종류의 계산을 위해 만들어진 프로그램이라고 알고 있습니다.
반면에, for 문이든 while 문이든 루프를 이용하여 계산하는 것은 플린의 분류법에 의하면 SISD(Single Instruction Single Data)로 작동하는 것입니다. 한 번에 데이터 하나씩만을 처리하는 것이지요. 이 방식은 프로그래밍하기에는 편하지만, 대량의 자료를 처리할 때에는 비효율적입니다. SIMD 기능이 도입되어 여러 개의 데이터를 동시에 처리할 수 있는 최신 CPU의 잠재력을 다 쓰지 못하는 것이거든요.
더 읽어볼 것 :
https://ko.wikipedia.org/wiki/%EB%B2%A1%ED%84%B0_%ED%94%84%EB%A1%9C%EC%84%B8%EC%84%9C
SIMD(Single Instruction Multiple Data)라는 용어에 대해서 들어보셨는지 모르겠습니다. 이것은 마이클 플린이라는 학자가 분류한 컴퓨터의 작동 방법 중 하나로, 하나의 명령어를 묶여 있는 여러 개의 데이터(=벡터)에 동시에 적용하여 계산을 하는 방식입니다. 대량의 데이터 처리에 적합하지요. 요즘 CPU에는 이 SIMD를 지원하는 명령어 세트가 내장되어 있습니다. 인텔의 SSE가 대표적이지요. 매트랩 같은 프로그램에서 이 SSE를 적용하여 계산을 하면 계산 속도가 빨라질 수 있습니다. 당연한 것이, 한 번에 여러 개의 데이터를 동시에 계산하는 것이니까요. 제가 알기로 애초에 매트랩은 이런 종류의 계산을 위해 만들어진 프로그램이라고 알고 있습니다.
반면에, for 문이든 while 문이든 루프를 이용하여 계산하는 것은 플린의 분류법에 의하면 SISD(Single Instruction Single Data)로 작동하는 것입니다. 한 번에 데이터 하나씩만을 처리하는 것이지요. 이 방식은 프로그래밍하기에는 편하지만, 대량의 자료를 처리할 때에는 비효율적입니다. SIMD 기능이 도입되어 여러 개의 데이터를 동시에 처리할 수 있는 최신 CPU의 잠재력을 다 쓰지 못하는 것이거든요.
더 읽어볼 것 :
https://ko.wikipedia.org/wiki/%EB%B2%A1%ED%84%B0_%ED%94%84%EB%A1%9C%EC%84%B8%EC%84%9C
목록 |
|