2011-08-28 4 views
1

저는 Intel의 Array Building Blocks에 대한 작업을 시작하려고합니다. "Hello World"에 대한 자습서가 하나만있는 것 같습니다 (http://www.hpc.lsu.edu/training/tutorials/sc10/tutorials/SC10Tutorials/docs/M07/M07.pdf). 그리고 나는 그것을 실제로 얻지 못하고있다.Intel ArBB를 사용하는 Visual Studio 2010의 Hello World?

저는 Visual Studio 2010을 사용하고 있는데, 위의 링크에서 얻은 코드입니다.

#include <C:/Program Files/intel/arbb/Beta6/include/arbb.hpp> 
//What do I have to do to make just "#include <arbb.hpp>" work? 

using namespace arbb; 

void my_function(f32& result, f32 input){ 
    std::cout << "Hello, world!" << std::endl; 
    result = input + 1.0f; //"Error: no operator "+" matches these operands 
} 

int main(){ 
    typedef closure<void (f32&, f32)> mfc; 
    mfc a = capture(my_function); 
    mfc b = call(my_function); 
    mfc c = call(my_function); 
} 

"Hello World"가 작동하려면 어떻게해야합니까?

+0

상당히 모호합니다. 확실히 Project + Properties, C/C++, General, Additional Include Directories 설정. –

답변

0

arbb 설치 경로에는 많은 샘플이 있습니다. Visual Studio 솔루션 파일을 사용하여 모든 샘플로 시작할 수 있습니다. 그것이 가장 쉬운 방법입니다.

처음부터 자신의 응용 프로그램을 컴파일하고 실행하려면 포함 및 종속성을 설정해야합니다.

리눅스에

, 당신은 경로 ~/(무엇이든)/인텔/arbb/Beta6을 추가 할 수 있습니다/Windows에서 -I

를 사용하여 컴파일 옵션에 포함 할 수있다 : 세트 = C를 포함 :/프로그램 파일/intel/arbb/Beta6/include/arbb.hpp;

또는 모든 환경 변수가 기본적으로 설정되도록하는 배치 스크립트가 있어야합니다.

--- 배치 파일의 내용 --- = O3 = %의 ARBB_ROOT %의 \ 빈 \의 IA32 SET의 PATH

SET의 ARBB_OPT_LEVEL; %의 ARBB_ROOT % \ bin에 \ IA32 \ % MSVS_VERSION % 대, % OPENCV_ROOT %의 \ 빈; %의 FFTW_ROOT의 %; %의 FREEGLUT_ROOT의 %; % PTHREADS_ROOT % \ lib에; % PATH %의

---- 여기 arbb에 안녕하세요 세계 프로그램 ---

#include <arbb.hpp> 

void arbb_hello_map(arbb::i32& val) 
{ 
    val = val * 2; 
} 
void arbb_hello(arbb::dense<arbb::i32>& data) 
{ 
    using namespace arbb; 
    map(arbb_hello_map)(data); 
} 

int main() 
{ 
    using namespace arbb; 
    int size = 5; 
    dense<i32> data = dense<i32>(size); 
    range<i32> write_data = data.write_only_range(); 
    for (int i = 0; i < size; ++i) 
    write_data[i] = i; 

    arbb::call(arbb_hello)(data); 
    std::cout << "hello: " << std::endl; 
    const_range<i32> read_data = data.read_only_range(); 
    for (int i = 0; i < size; ++i) 
    std::cout <<"data["<<i<<"] = " << read_data[i] <<"\n"; 
    return 0; 
} 

이며 사용하여 컴파일

g++ -m64 -I/home/YOUR_NAME/arbb/install//include -Wall -Werror -O3 -W -Wshadow temp.cpp -o temp -L/home/YOUR_NAME/arbb/install/lib/intel64 -larbb_dev -ltbb -littnotify 

을 사용하여 실행하십시오. /temp