#CGAL多线程

时间:2015-08-06 11:20:55

标签: multithreading cgal

我想使用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的东西)

由于 切萨雷

2 个答案:

答案 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} )之后。

使用与否的选择取决于Parallel_tag中的TDS标记,例如thisthat示例。

答案 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}}
相关问题