2
최근에 SBCL에서 중첩 된 for 루프를 다루었습니다. 필자는지도로 축소 할 수있는 작업을 pmap (또는 유사한 기능)을 사용하여 쉽게 병렬로 만들 수 있음을 발견했습니다.루프 내에서 pmap을 사용하는 SBCL common lisp
기본 루프 : 나는 시도하고 다음과 같은 방법으로 루프 병렬 내 배를하기로 결정
(loop for element in list_of_lists
do (loop for element2 in list_of_lists2
...(random_function element element2)))
그리고 이것은 잘 작동하지만 궁금 해서요 경우 뭔가 같은 :
(defun supplementary_function (single_list list_collection)
"This function iterates through list_collection and executes (random_function) on pairs obtained"
(loop for element in list_collection
do (random_function single_list element)))
(map 'nil (lambda (x) (supplementary_function x list_of_lists2)) list_of_lists1)
필자는 성능 향상을 위해이 경우 맵을 제 경우에 pmap으로 쉽게 대체 할 수 있기를 바랍니다. 따라서 좀 더 명확히하기 위해 질문은 다음과 같습니다.
첫 번째 루프를 map으로 대체 할 수 있습니다. 각 맵 작업에서 두 번째 루프는 첫 번째 루프와 전체의 단일 요소를 사용하는 특정 함수 내에서 실행됩니다. 두 번째 루프. 왜 이런 일이 불가능해서는 안되는 지에 대한 개념적 실수는 없습니다. 그러나 약간의 메모리 오류가 발생합니다. (?)
대단히 고마워요!
매혹적인입니다, 감사합니다! 이것은 완벽하게 설명됩니다. –