我正在尝试开始使用英特尔的阵列构建模块,而http://www.hpc.lsu.edu/training/tutorials/sc10/tutorials/SC10Tutorials/docs/M07/M07.pdf似乎只有一个关于“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 :(得分:0)
arbb安装路径中有许多样本可用。您可以使用visual studio解决方案文件从任何示例开始。这是最简单的方法。
为了从头开始编译和运行您自己的应用程序,您必须设置包含和依赖项。
在Linux上,您可以使用-I
在编译选项中添加路径〜/(whatever)/ intel / arbb / Beta6 / include在Windows上,您可以执行以下操作: 设置INCLUDE = C:/ Program Files / intel / arbb / Beta6 / include / arbb.hpp;
或者有一个批处理脚本,可以确保默认设置所有环境变量。
---批处理文件的内容---
SET ARBB_OPT_LEVEL = O3 SET PATH =%ARBB_ROOT%\ bin \ ia32;%ARBB_ROOT%\ bin \ ia32 \ vs%MSVS_VERSION%;%OPENCV_ROOT%\ bin;%FFTW_ROOT%;%FREEGLUT_ROOT%;%PTHREADS_ROOT%\ lib;%PATH%
----这是arbb中的hello world程序---
#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