2011-01-31 4 views
4

안녕하세요, 현재 연구 프로젝트로 FORTRAN 77에서 C로 raytracer를 포팅 중입니다.openCL 코드를 작성할 때 GPU가없는 단일 코어 컴퓨터에서 어떻게 작동합니까?

필수 사항을 이식 한 후 문제는 병렬화를 진행하는 방법입니다.
실험실에서는 2 ~ 8 개의 코어가 있지만 GPU가없는 몇 가지 Opteron 시스템에 액세스 할 수 있습니다 (현재). 우리는 64b 젠투를 실행 중입니다.

GPGPU 버전은 매우 바람직하지만, 프로젝트에 단 한 명의 프로그래머 만 있으면 별도의 비 GPU 및 GPU 버전을 유지하는 것이 옵션이 아닙니다.
또한 코드는 GPL 처리 될 것이고, 다른 하드웨어에서 사용되는 코드를 보려고합니다.

그래서 전체 프로그램은 GPU 또는 멀티 코어 시스템이 없어도 쉽게 컴파일/실행이 가능해야합니다.
OpenCl은 GPU가없는 머신에서 실행될 수 있으므로 좋은 옵션처럼 보이지만이 코드는 단일 코어 또는 32b 시스템에서 어떻게 수행됩니까?
openCL없이 쉽게 컴파일 할 수 있도록 코드를 작성할 수 있습니까?

답변

8

현재 AMD, nVidia (Cuda), Apple, Intel의 네 가지 주요 OpenCL 구현이 있으며 곧있을 가능성이 더 높습니다. OpenCL implementations. OpenCL은 GPU 컴퓨팅을 겨냥한 언어가 아니며 이기종 장치를위한 일반적인 컴퓨팅 언어로 설계되었습니다. 예 : 당신은 GPU 및 비 AMD CPU (물론 x86)가없는 AMD 구현을 사용할 수 있습니다.

openCL을 사용하지 않고 쉽게 컴파일 할 수 있도록 코드를 작성할 수 있습니까?

당신이 한 사람의 프로젝트라고 말한 것처럼 나는 그것이 노력할만한 가치가 없다고 생각합니다.

이 코드는 단일 코어 또는 32b 시스템에서 어떻게 수행됩니까?

마찬가지로 모든 원시 프로그램이 실행됩니다. OpenCL 벡터 유형을 통해 SIMD에 액세스 할 수 있습니다. 또한 작업 그룹 구성을 통한 스레딩을 처리 할 수 ​​있습니다.

하지만 동일한 커널/작업 그룹 설정으로 모든 장치에서 100 % 성능을 얻을 수 있다고 기대하지 마십시오. 가능한 기기 별 조정이 많습니다 (OpenCL CPU Tutorial for a start).

나는 OpenCL에 대해 말할 것입니다. 그것은 여러분의 어플리케이션에 더 많은 가능성을 제공하며 플랫폼 독립적입니다.

+0

좋습니다. 감사. –

2

OpenCL과 C99의 공통점을 이용하고 차이점을 처리하기 위해 프리 프로세서를 사용할 수 있습니다. 그렇다면 C99와 OpenCL 코드베이스가 하나 있습니다. SmallPT-GPU

그러나 CPU의 OpenCL 구현은 모든 휴대용 스칼라 C 코드와 비슷해야하며 벡터 유형의 OpenCL을 사용하여 휴대용 SIMD를 허용하는 것이 좋습니다.

+0

좋은 소리입니다. SmallPT-GPU가 어떻게 작동 하는지를 자세히 살펴볼 것입니다 - 감사합니다! –

관련 문제