uint8 값을 RGB 포맷으로 옮기고 있거든


for()

{

  value = 이미지포인터[좌표(float)];

  *ptr++ = value;

  *ptr++ = value;

  *ptr++ = value;

}


요런식으로 하고있는데, 이미지 크기가 너무 큰데다 이 부분 좌표 연산에 줌 기능때문에 float 연산 들어가서 오버헤드가 심각하더라구...



당장 드는 생각은 이런게 있는데, 다 뭔가 이상함


1) SIMD

키 포인트는 정렬된 메모리같은데, float 이랑 uint8이랑 섞을 수 있나..?


2) 멀티쓰레딩

내가 만든 프로그램이 작업 관리자에서 점유율 2~30% 이상으론 안올라가서 생각한건데

실제로 8, 16쓰레드로 나눠서 돌려봤는데 별 효험은 없었음... 왜지ㅠ


3) OpenCL

예제 보니까 얘도 src랑 dst가 같은 사이즈인 경우가 많던데 (보통 콘볼루션 용도)

1 값 -> 3 값으로 뿔리는게 가능한가?



혹시 위에 얘기한거 말고 더 좋은 솔루션 있으면 힌트좀 주라...

위에것도 된다 안된다 정도만 알려주면 하는법은 알아서 찾아볼게ㅠㅠ

가능성만 파악할 수 있게 좀 도와조...