ray를 사용한 병렬처리를 nested 하게 만드는 법 -2-
안녕하세요?
이번 포스팅에서는 어떻게 해서 지난번에 하지 못한 ray를 이용해서 호출한 메서드에서 다시 ray를 활용하는 것에 대해서 이야기를 해 보고자 합니다. 일단 이 과정이 잘 될지 안될 지는 모르겠습니다만, 이걸 영어권 자료에서는 nested라고 해서 병렬처리 안에 또 병렬처리를 하는 것으로 이야기를 하고 있습니다.
그리고 나서 일단 이 작업을 하기 위해서, 위 스크린샷에서 볼 수 있는 것처럼, 일단 두번째 타겟을 ray의 목표물로 지정을 해 준 다음에, 각자 처리되는 시간이 다를 수 있으니, 여기서는 ray.wait()을 붙여 주도록 합니다.
그런데 변수하나를 집어넣는 것이 빼먹어서 그런지 몰라도 또 에러가 나오는 것을 확인할 수 있었습니다. 이렇게 해서 일단 하나 나오기는 나왔습니다만, 일단 오류부터 잡아 보도록 합니다.
일단 여기서 에러는 바로 self를 빼먹은 것이었고, 이렇게해서 입력해야 할 변수는 모두 입력해 주는데 성공하기는 성공했습니다.
일단 이렇게 해서 첫 실행은 제대로 되는 것을 확인할 수 있기는 있었습니다. 이렇게 실행을 하였는데 47초로 조금 짧아진 것 같기는 합니다.
그리고 작동이 되었다는 중요한 요소로 바로 위 스크린샷과 같이 텍스트 파일이 생성이 되는 것을 확인할 수 있기는 있어야 합니다.
그리고 나서 다음으로 해야 하는 것으로는 위 스크린샷에서 볼 수 있는 것처럼 다시한번 더 실행을 시켰을 경우에는 43초로 더 짧아진 실행시간을 보여주고 있습니다. 아마 구름 IDE의 특징때문에 이러는 듯 합니다.
그래서 이번에는 조건을 달리해서 한번 알아보기 위해서, 위 스크린샷에서 볼 수 있는 것처럼 일단 시작시에 지정이 되는 cpu의 갯수를 12개에서 24개로 올려 보도록 합니다.
이렇게 해서 일단 실행을 시켰더니, 위 스크린샷에서 볼 수 있는 것처럼 우선 42초 정도 걸린 것을 확인할 수 있기는 있었습니다.
다시한번 실행을 시킨 결과는 위 스크린샷에서 볼 수 있는 것과 같이 일단 36초 정도 걸렸는데, 이렇게 구름 IDE가 항상 일정한 성능을 보여주지는 않아서 일단 여러번 작업을 해서 평균을 내야 하는 것이 걸리기는 합니다. 아무튼 계속해서 최적화를 위한 일차적인 실험에 들어가 보도록 합니다.