加速图像处理的神器: INTEL ISPC编译器基于CMAKE快速创建VISUAL STUDIO项目
Posted 帅的发光发亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加速图像处理的神器: INTEL ISPC编译器基于CMAKE快速创建VISUAL STUDIO项目相关的知识,希望对你有一定的参考价值。
INTEL ISPC编译器基于CMAKE快速创建VISUAL STUDIO项目
把ISPC集成进Visual Studio项目的方法很多,最简单的是把ISPC编译命令设置在Pre-Build Event或者Custom Build Tool里面,例如这篇文章 将英特尔 SPMD 程序编译器(ispc)集成至 Microsoft Visual Studio。这种比较适合把ISPC整合进现有的项目里。
下面介绍利用ISPC 自带例程的cmake来创建项目。
ISPC例程的文件结构
ISPC release包解压缩以后有个examples目录
examples 根目录下
- CMakeLists.txt, 这个是创建整个solution的总入口
- tasksys.cpp, timing.h 是让ISPC程序可以创建多任务来充分利用CPU多核的代码
examples\\simple…mandelbrot等目录
- 每个目录下都是一个单独ISPC测试项目的所有代码
examples\\cmake目录
- AddISPCExample.cmake 是供当前solution下各个项目添加配置ISPC文件的cmake脚本
配置我们的项目
这里我们需要借用一些example目录里面的脚本
首先创建一个项目目录 ispc_cmake
- 将examples目录里的CMakeLists.txt, tasksys.cpp, timing.h拷贝到ispc_cmake目录下
- 将examples目录下的cmake目录拷贝到ispc_cmake目录下
- 在这个目录下新建一个目录kmeans_ispc,用来放项目的文件, 我借用了ISPC开发包的examples\\simple项目来测试,所以把examples\\simple下的CMakeLists.txt,simple.cpp, simple.ispc复制到ispc_cmake\\kmeans_ispc目录里
ispc_cmake下面文件:
kmeans_ispc下面文件:
接下来修改ispc_cmake目录下的CmakeLists.txt
cmake_minimum_required(VERSION 3.12)
# 这里是VS solution的名字
set (PROJECT_NAME ispc_cmake)
project(${PROJECT_NAME})
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/AddISPCExample.cmake)
if(WIN32)
add_compile_definitions(WIN32)
add_compile_options(/EHsc)
endif()
if (ISPC_BUILD)
set (ISPC_EXECUTABLE $<TARGET_FILE:ispc>)
set (EXAMPLES_ROOT ${CMAKE_SOURCE_DIR}/examples)
else()
find_program (ISPC_EXECUTABLE ispc)
if (NOT ISPC_EXECUTABLE)
message(FATAL_ERROR "Failed to find ispc" )
endif()
set (EXAMPLES_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
endif()
# 这里放我们项目目录的名字
add_subdirectory(kmeans_ispc)
修改ispc_cmake\\kmeans_ispc目录下的CmakeLists.txt
# 这里需要ISPC编译器编译的文件的名字
set (ISPC_SRC_NAME "simple")
# 测试的cpp文件的名字
set (TARGET_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/simple.cpp)
# 这里告诉ISPC生成哪些平台的代码,包括了sse2/ssd4/avx1/avx2/avx512
set (ISPC_IA_TARGETS "sse2-i32x4,sse4-i32x8,avx1-i32x8,avx2-i32x8,avx512knl-i32x16,avx512skx-i32x16" CACHE STRING "ISPC IA targets")
set (ISPC_ARM_TARGETS "neon" CACHE STRING "ISPC ARM targets")
# 这里NAME是VS里面project的名字
# USE_COMMON_SETTINGS, 这个参数告诉cmake把tasksys.cpp也编译进去
add_ispc_example(NAME "ispc_kmeans"
ISPC_IA_TARGETS ${ISPC_IA_TARGETS}
ISPC_ARM_TARGETS ${ISPC_ARM_TARGETS}
ISPC_SRC_NAME ${ISPC_SRC_NAME}
TARGET_SOURCES ${TARGET_SOURCES}
USE_COMMON_SETTINGS)
CMAKE生成项目,编译
命令行下进入ispc_test目录,运行:
mkdir build
cd build
cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --config Release
就可以在build\\kmeans_ispc\\Release目录下得到ispc_kmeans.exe
这时候用VS打开build目录下的ispc_cmake.sln
就可以像开发普通C++项目一样随意修改和编译cpp和ispc文件了,
运行也是一样 Shift+F5
以上是关于加速图像处理的神器: INTEL ISPC编译器基于CMAKE快速创建VISUAL STUDIO项目的主要内容,如果未能解决你的问题,请参考以下文章
加速图像处理的神器: INTEL ISPC编译器 迁移图像旋转算法 - ISPC单精度 从单核 到 多核
加速图像处理的神器: INTEL ISPC编译器 迁移图像旋转算法 - ISPC单精度 从单核 到 多核
加速图像处理的神器: INTEL ISPC编译器 迁移图像旋转算法 - ISPC单精度 从单核 到 多核
加速图像处理的神器: INTEL ISPC 编译器迁移图像旋转算法 - 从 ISPC双精度到 ISPC单精度