안녕하세요.
이번에 학부연구생이 되어 매트랩으로 시뮬레이션을 진행 중인데
시뮬레이터의 연산량이 좀 되어
10번 샘플만 취해도 한시간 좀 넘게 걸립니다. (노트북 : 4500U)
아직 데탑 받을 짬도 아니기도 하고,
개인 데탑도 없어서 하나 맞추려고 하는데
혹시 싱글코어의 속도가 느려도 코어가 여러개인게 좋나요
아니면 코어가 어쨌든 많은게 좋나요?
단적으로 질문드리면 라이젠 3300X와 3500이라고 볼 수 있겠습니다.
여윳돈이 그리 많지 않아, 한번 살때 신중하게 사려고 하네요
답변해주시면 감사하겠습니다
이번에 학부연구생이 되어 매트랩으로 시뮬레이션을 진행 중인데
시뮬레이터의 연산량이 좀 되어
10번 샘플만 취해도 한시간 좀 넘게 걸립니다. (노트북 : 4500U)
아직 데탑 받을 짬도 아니기도 하고,
개인 데탑도 없어서 하나 맞추려고 하는데
혹시 싱글코어의 속도가 느려도 코어가 여러개인게 좋나요
아니면 코어가 어쨌든 많은게 좋나요?
단적으로 질문드리면 라이젠 3300X와 3500이라고 볼 수 있겠습니다.
여윳돈이 그리 많지 않아, 한번 살때 신중하게 사려고 하네요
답변해주시면 감사하겠습니다
아 참고로 수치해석이나 그래프를 그리진 않습니다. 분야가 통신 분야인지라 단순계산만 확실하면 좋을 것으로 예상됩니다.
그리고 제가 단독으로 제작한 시뮬레이터가 아니라 이전에 교수님의 동료분께서 남겨주신 시뮬레이터입니다. 단순계산이라고 한 점은 복잡한 모듈은 크게 사용되지 않아서 그랬습니다. 혼란드려서 죄송해요. 다만 처리해야할 행렬값이 큽니다.
기본적으론 멀티코어보다는 싱글코어 성능이 중요함, 그리고 단순 계산을 원했으면 매트랩을 쓰면 안되지
행렬연산이고 2차원 좌표에 존재하는 정보들을 계산합니다. 혹시 파이썬으로 계산하는게 더 좋나요? 수식이 조금 복잡하긴 하지만 파이썬으로 못만들정도는 아닙니다. 하지만 행렬계산만큼은 매트랩이 강력하다고 아는데 아닌가요?
알고리즘을 사용해서 큰 행렬 연산을 상대적으로 빠르게 처리할 수 있다는거뿐이지 matlab은 근본적으로 존나 느림, 그리고 그 행렬연산의 속도라는 것도 알고리즘이 멀티코어 연산을 상정해두어야 멀티코어에 의미가 있는거지 아무리 옥타코어에서 기본 연산 돌려봤자 싱글코어로만 연산이 돌아가게 되어 있다.
어쨌건 내 경험상 니가 다루는 시뮬레이션이 절대 큰 행렬을 다루지 않을거라고 생각하고 모듈 사용 안할거고 행렬 연산이 1000x1000 이하면 행렬 연산 같은 쌉소리 하지말고 다른 코드로 짜든가 하거라
제가 만든 시뮬레이터가 아니라 예전에 교수님 동료분께서 남기신 거라 행렬 크기가 좀 큽니다...다만 다행인 점은 행렬 크기가 크긴 하지만 추가적으로 모듈을 사용하시지 않으셨다는 점이겠네요. 대부분 switch문과 for문으로 해결하셨더라구요. 또한 2011년도에 제작된 시뮬레이터라 개선이 가능하면 해보고 싶네요. 말씀 감사합니다.
싱글코어 성능 중요함
하드웨어는 잘 모르겠으나 장기적인 관점에서 매트랩 사용은 부천드리지않아요 엄청나게 느립니다.. python의 c기반 라이브러리(numpy)나 c언어의 사용을 고려해보세용
*추천
https://youtu.be/pJIxVS-wlHc
octave가
matlab과 비슷하다고 보심됩니다.
참고로 matlab은 for문이 ementwise operation보다 훨씬느리므로 본인이 for문을 사용해 연산을 하신다면 리팩토링도 고려해보시기를 바래요
*elementwise
1. 만약 for문을 사용한다면 elementwise 연산으로 리팩토링 (e.g. Y=A.*X) 2. 그래도 느리면 python에서 numpy사용 3. 그리면 C나 fortran사용(비추) 4. 서버 사용하여 파이썬 다시 돌려보기(서버사용경험이 있다면, colab 등) 5.하드웨어 교체 고려
말씀 감사합니다! 장기적으로 진행 중인 과제라 파이썬으로 개선해봐야겠습니다. 윗분의 말씀대로 모듈을 거의 사용하지 않았고, for문으로 대부분 처리되어 있었기 때문에 파이썬으로 다시 만드는게 좋을 것 같습니다.
python 한답시고 for 문 그대로 옮기면 별반 차이 없거나 더 나빠지는 수가 있음. 벡터화 (위에서 말하는 1) 부터 하는게 순서 아닐지.