Skip to content

Commit

Permalink
Merge branch 'release-1.0.x'
Browse files Browse the repository at this point in the history
  • Loading branch information
gregjohnson committed Aug 13, 2021
2 parents 0ebfb98 + fc1826f commit 5a7071d
Show file tree
Hide file tree
Showing 187 changed files with 7,779 additions and 3,678 deletions.
36 changes: 36 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,42 @@
Version History
---------------

### Open VKL 1.0.0

- The version 1.0 release marks long term API stability (until v2.0)
- Open VKL can now be built for ARM CPUs that support Neon
- Iterator API updates:
- Introducing interval and hit iterator contexts, which hold
iterator-specific configuration (eliminates value selector objects)
- Interval and hit iteration is now supported on any volume attribute
- Interval iterators now include a `time` parameter
- Interval iterators now support the `intervalResolutionHint` parameter,
replacing `maxIteratorDepth` and `elementaryCellIteration`
- Supporting configurable background values; default is now
`VKL_BACKGROUND_UNDEFINED` (NaN) for all volume types
- `vklGetValueRange()` now supports all volume attributes
- Added ISPC-side API bindings for `vklGetNumAttributes()` and
`vklGetValueRange()`
- Structured regular volumes:
- Added support for tricubic filtering
- More accurate gradient computations respecting filter mode
- Hit iteration robustness improvements
- VDB volumes:
- Interval and hit iteration robustness improvements
- Corrected interval iterator `nominalDeltaT` computation for
non-normalized ray directions and non-uniform object-space grid spacings
- Fixed bug which could cause incorrect value range computations for
temporally varying volumes
- vklExamples additions demonstrating:
- Multi-attribute interval / hit iteration
- Configurable background values
- Temporally varying volumes
- Superbuild updates to latest versions of dependencies
- Now requiring minimum versions:
- Embree 3.13.1
- rkcommon 1.7.0
- ISPC 1.16.0

### Open VKL 0.13.0

- Driver (now device) API changes:
Expand Down
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)

## Establish project ##

project(openvkl VERSION 0.13.0 LANGUAGES C CXX)
project(openvkl VERSION 1.0.0 LANGUAGES C CXX)

## Add openvkl specific macros ##

Expand Down Expand Up @@ -47,13 +47,13 @@ openvkl_configure_build_type()
openvkl_configure_global_build_flags()
openvkl_configure_ispc_isa()

set(RKCOMMON_VERSION_REQUIRED 1.6.1)
set(RKCOMMON_VERSION_REQUIRED 1.7.0)
find_package(rkcommon ${RKCOMMON_VERSION_REQUIRED} REQUIRED)
get_target_property(RKCOMMON_INCLUDE_DIRS rkcommon::rkcommon
INTERFACE_INCLUDE_DIRECTORIES)


find_package(embree 3.6.1 REQUIRED)
find_package(embree 3.13.1 REQUIRED)
openvkl_create_embree_target()

## Build library, examples, and tests ##
Expand Down
456 changes: 272 additions & 184 deletions README.md

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Security Policy
===============

Intel is committed to rapidly addressing security vulnerabilities
affecting our customers and providing clear guidance on the solution,
impact, severity and mitigation.

Reporting a Vulnerability
-------------------------

Please [report any security vulnerabilities][guidelines] in this project
utilizing the [guidelines here][guidelines].

[guidelines]: https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html "Vulnerability Handling Guidelines"
3 changes: 2 additions & 1 deletion cmake/openvklConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## Copyright 2019-2020 Intel Corporation
## Copyright 2019-2021 Intel Corporation
## SPDX-License-Identifier: Apache-2.0

@PACKAGE_INIT@
Expand All @@ -16,6 +16,7 @@ set(OPENVKL_ISA_AVX @OPENVKL_ISA_AVX@)
set(OPENVKL_ISA_AVX2 @OPENVKL_ISA_AVX2@)
set(OPENVKL_ISA_AVX512KNL @OPENVKL_ISA_AVX512KNL@)
set(OPENVKL_ISA_AVX512SKX @OPENVKL_ISA_AVX512SKX@)
set(OPENVKL_ISA_NEON @OPENVKL_ISA_NEON@)

## Standard signal that the package was found ##

Expand Down
36 changes: 25 additions & 11 deletions cmake/openvkl_ispc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
option(OPENVKL_ISPC_FAST_MATH "enable ISPC fast-math optimizations" OFF)

# ISPC versions to look for, in decending order (newest first)
set(ISPC_VERSION_WORKING "1.15.0" "1.14.1")
set(ISPC_VERSION_WORKING "1.16.0")
list(GET ISPC_VERSION_WORKING -1 ISPC_VERSION_REQUIRED)

if (NOT ISPC_EXECUTABLE)
Expand Down Expand Up @@ -83,14 +83,18 @@ endmacro ()

macro(openvkl_configure_ispc_isa)
# support only individual specification of ISAs
option(OPENVKL_ISA_SSE4 "Enables SSE4 ISA." ON)
option(OPENVKL_ISA_AVX "Enables AVX ISA." ON)
option(OPENVKL_ISA_AVX2 "Enables AVX2 ISA." ON)
option(OPENVKL_ISA_AVX512KNL "Enables AVX512 ISA for Knights Landing." OFF)
option(OPENVKL_ISA_AVX512SKX "Enables AVX512 ISA for Skylake." ON)

if (OPENVKL_ISA_AVX512KNL AND OPENVKL_ISA_AVX512SKX)
message(FATAL_ERROR "Only one AVX512 ISA may be enabled; choose either AVX512KNL or AVX512SKX")
if (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64|aarch64")
option(OPENVKL_ISA_SSE4 "Enables SSE4 ISA." ON)
option(OPENVKL_ISA_AVX "Enables AVX ISA." ON)
option(OPENVKL_ISA_AVX2 "Enables AVX2 ISA." ON)
option(OPENVKL_ISA_AVX512KNL "Enables AVX512 ISA for Knights Landing." OFF)
option(OPENVKL_ISA_AVX512SKX "Enables AVX512 ISA for Skylake." ON)

if (OPENVKL_ISA_AVX512KNL AND OPENVKL_ISA_AVX512SKX)
message(FATAL_ERROR "Only one AVX512 ISA may be enabled; choose either AVX512KNL or AVX512SKX")
endif()
else()
option(OPENVKL_ISA_NEON "Enables NEON ISA." ON)
endif()

# generate final ISPC target lists; both a full list of all targets, and lists
Expand All @@ -106,6 +110,12 @@ macro(openvkl_configure_ispc_isa)
message(STATUS "OpenVKL SSE4 ISA target enabled.")
endif()

if (OPENVKL_ISA_NEON)
set(OPENVKL_ISPC_TARGET_LIST ${OPENVKL_ISPC_TARGET_LIST} neon-i32x4)
set(OPENVKL_ISPC_TARGET_LIST_4 ${OPENVKL_ISPC_TARGET_LIST_4} neon-i32x4)
message(STATUS "OpenVKL NEON ISA target enabled.")
endif()

if (OPENVKL_ISA_AVX)
set(OPENVKL_ISPC_TARGET_LIST ${OPENVKL_ISPC_TARGET_LIST} avx)
set(OPENVKL_ISPC_TARGET_LIST_8 ${OPENVKL_ISPC_TARGET_LIST_8} avx)
Expand Down Expand Up @@ -139,7 +149,7 @@ macro(openvkl_configure_ispc_isa)
if (DEFINED ${TARGET_LIST})
list(LENGTH ${TARGET_LIST} NUM_TARGETS)

if (NUM_TARGETS EQUAL 1)
if (NUM_TARGETS EQUAL 1 AND NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64|aarch64")
list(APPEND ${TARGET_LIST} sse2)
endif()
endif()
Expand All @@ -158,7 +168,11 @@ macro (OPENVKL_ISPC_COMPILE)
string(REPLACE ";" "," ISPC_TARGET_ARGS "${ISPC_TARGETS}")

if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(ISPC_ARCHITECTURE "x86-64")
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64|aarch64")
set(ISPC_ARCHITECTURE "aarch64")
else()
set(ISPC_ARCHITECTURE "x86-64")
endif()
else()
set(ISPC_ARCHITECTURE "x86")
endif()
Expand Down
18 changes: 10 additions & 8 deletions cmake/openvkl_macros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -100,14 +100,16 @@ function(openvkl_get_compile_options_for_width WIDTH FLAGS)

message(STATUS "detected Clang or GNU compiler")

if(WIDTH EQUAL 4)
set(LOCAL_FLAGS "-msse4.2")
elseif(WIDTH EQUAL 8)
set(LOCAL_FLAGS "-mavx")
elseif(WIDTH EQUAL 16)
set(LOCAL_FLAGS "-mavx512f")
else()
message(FATAL_ERROR "unknown build width")
if(NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64|aarch64")
if(WIDTH EQUAL 4)
set(LOCAL_FLAGS "-msse4.2")
elseif(WIDTH EQUAL 8)
set(LOCAL_FLAGS "-mavx")
elseif(WIDTH EQUAL 16)
set(LOCAL_FLAGS "-mavx512f")
else()
message(FATAL_ERROR "unknown build width")
endif()
endif()

elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
Expand Down
Loading

0 comments on commit 5a7071d

Please sign in to comment.