내용으로 건너뛰기
사용자 도구
로그인
사이트 도구
도구
문서 보기
이전 판
백링크
최근 바뀜
미디어 관리
사이트맵
로그인
최근 바뀜
미디어 관리
사이트맵
기술자료
작업공간
개인공간
사이트맵
추적:
kb:inteltbb
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== Intel Threading Building Blocks ====== [[http://threadingbuildingblocks.org/]] Widely used C++ template library for task parallelism ====== 컨테이너 ====== ===== 목록 ===== * **concurrent_unordered_map** * insert, begin/end 동시 수행 가능 * erase는 스레드 세이프하지 않다. * insert가 동시에 수행 가능하다보니, pair 객체가 임시로 생성되었다가 삭제될 수 있다. * **concurrent_unordered_set** * concurrent_unordered_map과 비슷 * **concurrent_hash_map** * count, find, insert, erase 동시 수행 가능 * begin/end는 스레드 세이프하지 않다. find, insert, erase 수행시 기존 iterator가 무효화될 수 있다. * **concurrent_queue** * push, pop은 동시 수행 가능. 동시 수행 가능하니, pop은 당연히 실패할 수 있다. 그래서 이름이 try_pop * size 함수는 정확하지 않을 수 있다. 그래서 이름이 unsafe_size * begin/end는 스레드 세이프하지 않고, 느리기까지 하다. 디버깅용 정도로만 사용하거나, 그냥 없다고 생각하자. * **concurrent_bounded_queue** * 최대 크기가 정해져 있는 큐 * push 함수는 큐가 꽉 찬 경우, 블로킹된다. * try_pop 말고도 블로킹되는 pop 함수가 있다. * size 함수가 음수를 리턴할 수 있으며, 이는 대기 중인 pop 함수 호출의 갯수를 의미한다. * abort 함수를 통해 대기 중인 push, pop 함수를 취소시킬 수 있다. (예외 발생) * **concurrent_priority_queue** * 아이템이 우선 순위 기반으로 나온다는 것 말고는 concurrent_queue와 같다. * **concurrent_vector** * 컨테이너 끝에 아이템을 추가하는 것과 begin/end, at은 동시에 수행 가능 * insert, erase, reserve, shrink_to_fit, swap, clear 류는 스레드 세이프하지 않다. * 컨테이너 크기 증가시키면서 동시에 access하는 경우, 아직 덜 완성된 객체에 대한 참조가 반환될 수 있다. ===== 정리 ===== * concurrent_unordered_map vs concurrent_hash_map * concurrent_unordered_map: permits concurrent traversal and insertion, no visible locking, closely resembles the C++0x unordered_map. * concurrent_hash_map: permits concurrent erasure, built-in locking \\ ====== 메모리 할당자 ====== ===== 목록 ===== * **scalable_allocator** * 걍 allocator? * **cache_aligned_allocator** * false sharing 문제를 해결하기 위한 할당자 * 객체들이 서로 인접하는 걸 막기 위해, 작은 오브젝트를 할당하더라도 캐쉬 라인 크기(보통 128바이트)만큼의 메모리를 할당해버린다. ===== 정리 ===== * 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 바이트 중에서 랜덤으로 할당 테스트했을 때 빠르다. * 8192 바이트를 테스트 셋에다 추가하니까, 느려진다. 대충 아무 것도 안 한 것보다 2배 정도 느리다. * 9K ~ 12K 사이에 있는 크기의 블록을 할당할 경우, 메모리 낭비가 심하다. ====== 링크 ====== * [[https://software.intel.com/en-us/forums/intel-threading-building-blocks]]
kb/inteltbb.txt
· 마지막으로 수정됨: 2015/11/06 09:34 저자
excel96
문서 도구
문서 보기
이전 판
백링크
맨 위로