본문 바로가기
반응형

Program Language56

global memory replay overhead 쓸모없는 barrier를 제거 하였더니 global memory replay overhead가 줄었다.성능이 크게 올라갔다. //barrier(CLK_GLOBAL_MEM_FENCE);//mem_fence(CLK_GLOBAL_MEM_FENCE); 2012. 12. 21.
[C] likely/unlikely macros http://kerneltrap.org/node/4705 아래처럼 define 되는 likely라는 매크로가 있다.#define likely(x) __builtin_expect((x),1) #define unlikely(x) __builtin_expect((x),0) 이것은 어떤 기능을 할까? if (__builtin_expect (x, 0)) foo ();위와같은 코드가 있다고 할 때, 컴파일러는 x가 0이 될 확률이 높다는걸 '알게'된다.그럼 foo 함수를 실행할 가능성이 적어지고, 컴파일러가 최적화를 할 가능성이 커진다. 구체적인 예를 보자.int testfun(int x) { if(x) { x = 5; x = x * x; } else { x = 6; } return x; }함수 testfun은 인.. 2012. 12. 14.
LNK2005 already defined in LNK1169: one or more multiply defined symbols found LNK2005: __invalid_parameter already defined inLNK1169: one or more multiply defined symbols found 되게 귀찮게한다. 비쥬얼 스튜디오..gcc같은 경우엔 strength 따지거나 아니면 그냥 warning으로 넘어가는데 2012. 11. 27.
[CUDA] occupancy 들어가는말, GPU는 캐시가 없거나 아주 작다. 따라서 Global 메모리를 접근 빈도수가 높은데, latency또한 높기 때문에 GPU의 계산 속도는 엄청나게 느릴 것이다. 이것을 보안하기 위한 방법이 메모리에 접근하는 동안 실행되는 warp을 교체(context switch)해버리는 방법을 사용하게 된다.또한, 앞뒤 instruction간의 dependency가 있을 경우도 stall을 해야하는데 이것 또한 빠른 context switch로 상쇄(hide)시킬 수 있다. (or ILP를 높임) Fermi의 경우,GMEM latency: 400-800 cyclesArithmetic latency: 18-22cycles GPU는 SM에서 context switch가 자유롭다. (overhead = 0)[.. 2012. 11. 7.