我想使用cgal和多线程。我在手册上发现我需要英特尔TBB。然后我通过synaptic包安装了intel TBB(sysatem:Ubuntu 12.04)。 我该怎么办? 1)使用TBB重新编译库? (标志-DWITH_TBB = True似乎不起作用) 2)使用TBB编译通用文件(我在代码的CMakeList.txt中添加了以下行:
find_package(TBB QUIET) if(TBB_FOUND) 包括:($ {} TBB_USE_FILE) 列表(APPEND CGAL_3RD_PARTY_LIBRARIES $ {TBB_LIBRARIES}) ENDIF()
和cmake告诉: - 发现英特尔TBB,但我不确定在此之后是否真的链接了)
3)以多核方式启动程序(我不认为我应该使用mpirun的东西)
由于 切萨雷
答案 0 :(得分:1)
无需重新编译库。只有3D三角测量和3D网格划分包使用TBB才能实现并行性。
在cmake级别,使用它的一个解决方案是:
find_package( TBB QUIET )
if( TBB_FOUND )
include(${TBB_USE_FILE})
list(APPEND CGAL_3RD_PARTY_LIBRARIES ${TBB_LIBRARIES})
endif()
在include( ${CGAL_USE_FILE} )
之后。
答案 1 :(得分:0)
由于CGAL(几乎)是一个只有头的库,所以不需要重新编译(多线程算法在头文件中)。
这是一个以并行模式计算3D Delaunay三角剖分的简单示例。
g++ -O3 CGAL_triangulate.cpp -lCGAL -lmpfr -lgmp -ltbb -ltbbmalloc -lpthread -o CGAL_triangulate
要编译它,我使用以下命令行:
cgal_create_CMakeLists -s executable
作为替代方案,您可以使用CGAL附带的shellscript来创建CMakeFile:
{{1}}