Skip to content

Commit c178b67

Browse files
tyoungscmdbtucker
andauthored
Creating new FPGA tutorial: Autorun (oneapi-src#786)
* New FPGA tutorial: autorun kernels * Formatting * Addressed Mike's comments. * Changing some leftover typos from copying the base template * Clang-format * Small change to output * README update * Addressing Mike's comments * Long path fixes for Windows * Set the SYCL_ENABLE_DEFAULT_CONTEXTS env variable to 1 before running Windows Emulator * Update README with environment variable when running emulator on Windows. * Fix spacing in README Co-authored-by: Mike Tucker <[email protected]>
1 parent 1316f97 commit c178b67

File tree

11 files changed

+793
-0
lines changed

11 files changed

+793
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
if(UNIX)
2+
# Direct CMake to use dpcpp rather than the default C++ compiler/linker
3+
set(CMAKE_CXX_COMPILER dpcpp)
4+
else() # Windows
5+
# Force CMake to use dpcpp rather than the default C++ compiler/linker
6+
# (needed on Windows only)
7+
include (CMakeForceCompiler)
8+
CMAKE_FORCE_CXX_COMPILER (dpcpp IntelDPCPP)
9+
include (Platform/Windows-Clang)
10+
endif()
11+
12+
cmake_minimum_required (VERSION 3.4)
13+
14+
project(Autorun CXX)
15+
16+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
17+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
18+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
19+
20+
add_subdirectory (src)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
Copyright Intel Corporation
2+
3+
SPDX-License-Identifier: MIT
4+
https://opensource.org/licenses/MIT
5+
6+
Permission is hereby granted, free of charge, to any person obtaining a copy
7+
of this software and associated documentation files (the "Software"), to deal
8+
in the Software without restriction, including without limitation the rights
9+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
copies of the Software, and to permit persons to whom the Software is
11+
furnished to do so, subject to the following conditions:
12+
13+
The above copyright notice and this permission notice shall be included in all
14+
copies or substantial portions of the Software.
15+
16+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
SOFTWARE.
23+
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# Autorun Kernels
2+
This FPGA tutorial demonstrates how to create the equivalent of OpenCL 'autorun' kernels in oneAPI. An autorun kernel is one that is submitted before the `main()` function begins, and typically (though not necessarily) never finishes.
3+
4+
***Documentation***: The [DPC++ FPGA Code Samples Guide](https://software.intel.com/content/www/us/en/develop/articles/explore-dpcpp-through-intel-fpga-code-samples.html) helps you to navigate the samples and build your knowledge of DPC++ for FPGA. <br>
5+
The [oneAPI DPC++ FPGA Optimization Guide](https://software.intel.com/content/www/us/en/develop/documentation/oneapi-fpga-optimization-guide) is the reference manual for targeting FPGAs through DPC++. <br>
6+
The [oneAPI Programming Guide](https://software.intel.com/en-us/oneapi-programming-guide) is a general resource for target-independent DPC++ programming.
7+
8+
| Optimized for | Description
9+
--- |---
10+
| OS | Linux* Ubuntu* 18.04/20.04, RHEL*/CentOS* 8, SUSE* 15; Windows* 10
11+
| Hardware | Intel® Programmable Acceleration Card (PAC) with Intel Arria® 10 GX FPGA <br> Intel® FPGA Programmable Acceleration Card (PAC) D5005 (with Intel Stratix® 10 SX) <br> Intel® FPGA 3rd party / custom platforms with oneAPI support <br> *__Note__: Intel® FPGA PAC hardware is only compatible with Ubuntu 18.04*
12+
| Software | Intel® oneAPI DPC++ Compiler <br> Intel® FPGA Add-On for oneAPI Base Toolkit
13+
| What you will learn | How and when to use autorun kernels
14+
| Time to complete | 15 minutes
15+
16+
## Purpose
17+
The purpose of this tutorial is to demonstrate how to create autorun kernels in DPCPP. Autorun kernels are submitted to the SYCL queue automatically before `main()` begins and are meant to have no direct interaction with the host. This means that they should not directly access global memory (e.g., via USM pointers or SYCL acccessors) and the host should not wait for them to finish.
18+
19+
Typically, these kernels are meant to run forever, and data is streamed to and from them using SYCL pipes. This technique is illustrated in the figures below where the middle light-blue kernels (`ARKernel` and `ARForeverKernel`) are autorun kernels, and the dark-blue kernels on the left and right are regular SYCL kernels. The images below correspond to the `Autorun` and `AutorunForever` kernels used in this tutorial. See the comments and code in `autorun.cpp` for more details on the differences.
20+
21+
<img src="autorun.png" alt="autorun" width="800"/>
22+
23+
<img src="autorun_forever.png" alt="autorun_forever" width="800"/>
24+
25+
## Key Concepts
26+
* How to use the autorun kernel header file (`autorun.hpp`).
27+
* When it is appropriate to use autorun kernels.
28+
29+
## License
30+
Code samples are licensed under the MIT license. See
31+
[License.txt](https://github.com/oneapi-src/oneAPI-samples/blob/master/License.txt) for details.
32+
33+
Third party program Licenses can be found here: [third-party-programs.txt](https://github.com/oneapi-src/oneAPI-samples/blob/master/third-party-programs.txt)
34+
35+
## Building the `autorun` Tutorial
36+
37+
### Include Files
38+
The included header `dpc_common.hpp` is located at `%ONEAPI_ROOT%\dev-utilities\latest\include` on your development system.
39+
40+
### Running Samples in DevCloud
41+
If running a sample in the Intel DevCloud, remember that you must specify the type of compute node and whether to run in batch or interactive mode. Compiles to FPGA are only supported on fpga_compile nodes. Executing programs on FPGA hardware is only supported on fpga_runtime nodes of the appropriate type, such as fpga_runtime:arria10 or fpga_runtime:stratix10. Neither compiling nor executing programs on FPGA hardware are supported on the login nodes. For more information, see the Intel® oneAPI Base Toolkit Get Started Guide ([https://devcloud.intel.com/oneapi/documentation/base-toolkit/](https://devcloud.intel.com/oneapi/documentation/base-toolkit/)).
42+
43+
When compiling for FPGA hardware, it is recommended to increase the job timeout to 12h.
44+
45+
46+
### Using Visual Studio Code* (Optional)
47+
48+
You can use Visual Studio Code (VS Code) extensions to set your environment, create launch configurations,
49+
and browse and download samples.
50+
51+
The basic steps to build and run a sample using VS Code include:
52+
- Download a sample using the extension **Code Sample Browser for Intel oneAPI Toolkits**.
53+
- Configure the oneAPI environment with the extension **Environment Configurator for Intel oneAPI Toolkits**.
54+
- Open a Terminal in VS Code (**Terminal>New Terminal**).
55+
- Run the sample in the VS Code terminal using the instructions below.
56+
57+
To learn more about the extensions and how to configure the oneAPI environment, see
58+
[Using Visual Studio Code with Intel® oneAPI Toolkits](https://software.intel.com/content/www/us/en/develop/documentation/using-vs-code-with-intel-oneapi/top.html).
59+
60+
After learning how to use the extensions for Intel oneAPI Toolkits, return to this readme for instructions on how to build and run a sample.
61+
62+
### On a Linux* System
63+
64+
1. Generate the `Makefile` by running `cmake`.
65+
```
66+
mkdir build
67+
cd build
68+
```
69+
To compile for the Intel® PAC with Intel Arria® 10 GX FPGA, run `cmake` using the command:
70+
```
71+
cmake ..
72+
```
73+
Alternatively, to compile for the Intel® FPGA PAC D5005 (with Intel Stratix® 10 SX), run `cmake` using the command:
74+
75+
```
76+
cmake .. -DFPGA_BOARD=intel_s10sx_pac:pac_s10
77+
```
78+
You can also compile for a custom FPGA platform. Ensure that the board support package is installed on your system. Then run `cmake` using the command:
79+
```
80+
cmake .. -DFPGA_BOARD=<board-support-package>:<board-variant>
81+
```
82+
83+
2. Compile the design through the generated `Makefile`. The following build targets are provided, matching the recommended development flow:
84+
85+
* Compile for emulation (fast compile time, targets emulated FPGA device):
86+
```
87+
make fpga_emu
88+
```
89+
* Generate the optimization report:
90+
```
91+
make report
92+
```
93+
* Compile for FPGA hardware (longer compile time, targets FPGA device):
94+
```
95+
make fpga
96+
```
97+
98+
### On a Windows* System
99+
100+
1. Generate the `Makefile` by running `cmake`.
101+
```
102+
mkdir build
103+
cd build
104+
```
105+
To compile for the Intel® PAC with Intel Arria® 10 GX FPGA, run `cmake` using the command:
106+
```
107+
cmake -G "NMake Makefiles" ..
108+
```
109+
Alternatively, to compile for the Intel® FPGA PAC D5005 (with Intel Stratix® 10 SX), run `cmake` using the command:
110+
111+
```
112+
cmake -G "NMake Makefiles" .. -DFPGA_BOARD=intel_s10sx_pac:pac_s10
113+
```
114+
You can also compile for a custom FPGA platform. Ensure that the board support package is installed on your system. Then run `cmake` using the command:
115+
```
116+
cmake -G "NMake Makefiles" .. -DFPGA_BOARD=<board-support-package>:<board-variant>
117+
```
118+
119+
2. Compile the design through the generated `Makefile`. The following build targets are provided, matching the recommended development flow:
120+
121+
* Compile for emulation (fast compile time, targets emulated FPGA device):
122+
```
123+
nmake fpga_emu
124+
```
125+
* Generate the optimization report:
126+
```
127+
nmake report
128+
```
129+
* Compile for FPGA hardware (longer compile time, targets FPGA device):
130+
```
131+
nmake fpga
132+
```
133+
134+
*Note:* The Intel® PAC with Intel Arria® 10 GX FPGA and Intel® FPGA PAC D5005 (with Intel Stratix® 10 SX) do not support Windows*. Compiling to FPGA hardware on Windows* requires a third-party or custom Board Support Package (BSP) with Windows* support.<br>
135+
*Note:* If you encounter any issues with long paths when compiling under Windows*, you may have to create your ‘build’ directory in a shorter path, for example c:\samples\build. You can then run cmake from that directory, and provide cmake with the full path to your sample directory.
136+
137+
### In Third-Party Integrated Development Environments (IDEs)
138+
139+
You can compile and run this tutorial in the Eclipse* IDE (in Linux*) and the Visual Studio* IDE (in Windows*). For instructions, refer to the following link: [Intel® oneAPI DPC++ FPGA Workflows on Third-Party IDEs](https://software.intel.com/en-us/articles/intel-oneapi-dpcpp-fpga-workflow-on-ide)
140+
141+
142+
## Running the Sample
143+
144+
1. Run the sample on the FPGA emulator (the kernel executes on the CPU):
145+
```
146+
./autorun.fpga_emu (Linux)
147+
set SYCL_ENABLE_DEFAULT_CONTEXTS=1 && autorun.fpga_emu.exe (Windows)
148+
```
149+
Note that when running this particular sample in emulation on Windows, an environment variable must be set as shown or the execution will hang.
150+
151+
152+
2. Run the sample on the FPGA device:
153+
```
154+
./autorun.fpga (Linux)
155+
```
156+
157+
### Example of Output
158+
```
159+
Running the Autorun kernel test
160+
Running the AutorunForever kernel test
161+
PASSED
162+
```
Loading
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.28307.705
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autorun", "autorun.vcxproj", "{66A01391-21D2-46BB-A37A-6B8670BEE1FC}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|x64 = Debug|x64
11+
Release|x64 = Release|x64
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{66A01391-21D2-46BB-A37A-6B8670BEE1FC}.Debug|x64.ActiveCfg = Debug|x64
15+
{66A01391-21D2-46BB-A37A-6B8670BEE1FC}.Debug|x64.Build.0 = Debug|x64
16+
{66A01391-21D2-46BB-A37A-6B8670BEE1FC}.Release|x64.ActiveCfg = Release|x64
17+
{66A01391-21D2-46BB-A37A-6B8670BEE1FC}.Release|x64.Build.0 = Release|x64
18+
EndGlobalSection
19+
GlobalSection(SolutionProperties) = preSolution
20+
HideSolutionNode = FALSE
21+
EndGlobalSection
22+
GlobalSection(ExtensibilityGlobals) = postSolution
23+
SolutionGuid = {E3206292-E99D-4ADC-B428-E0557E8070D4}
24+
EndGlobalSection
25+
EndGlobal
Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|x64">
5+
<Configuration>Debug</Configuration>
6+
<Platform>x64</Platform>
7+
</ProjectConfiguration>
8+
<ProjectConfiguration Include="Release|x64">
9+
<Configuration>Release</Configuration>
10+
<Platform>x64</Platform>
11+
</ProjectConfiguration>
12+
</ItemGroup>
13+
<ItemGroup>
14+
<ClCompile Include="src\autorun.cpp" />
15+
</ItemGroup>
16+
<ItemGroup>
17+
<None Include="README.md" />
18+
</ItemGroup>
19+
<PropertyGroup Label="Globals">
20+
<VCProjectVersion>15.0</VCProjectVersion>
21+
<ProjectGuid>{66a01391-21d2-46bb-a37a-6b8670bee1fc}</ProjectGuid>
22+
<Keyword>Win32Proj</Keyword>
23+
<RootNamespace>autorun</RootNamespace>
24+
<WindowsTargetPlatformVersion>$(WindowsSDKVersion.Replace("\",""))</WindowsTargetPlatformVersion>
25+
</PropertyGroup>
26+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
27+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
28+
<ConfigurationType>Application</ConfigurationType>
29+
<UseDebugLibraries>true</UseDebugLibraries>
30+
<PlatformToolset>Intel(R) oneAPI DPC++ Compiler</PlatformToolset>
31+
<CharacterSet>Unicode</CharacterSet>
32+
</PropertyGroup>
33+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
34+
<ConfigurationType>Application</ConfigurationType>
35+
<UseDebugLibraries>false</UseDebugLibraries>
36+
<PlatformToolset>Intel(R) oneAPI DPC++ Compiler</PlatformToolset>
37+
<WholeProgramOptimization>true</WholeProgramOptimization>
38+
<CharacterSet>Unicode</CharacterSet>
39+
</PropertyGroup>
40+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
41+
<ConfigurationType>Application</ConfigurationType>
42+
<UseDebugLibraries>true</UseDebugLibraries>
43+
<PlatformToolset>Intel(R) oneAPI DPC++ Compiler</PlatformToolset>
44+
<CharacterSet>Unicode</CharacterSet>
45+
</PropertyGroup>
46+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
47+
<ConfigurationType>Application</ConfigurationType>
48+
<UseDebugLibraries>false</UseDebugLibraries>
49+
<PlatformToolset>Intel(R) oneAPI DPC++ Compiler</PlatformToolset>
50+
<WholeProgramOptimization>true</WholeProgramOptimization>
51+
<CharacterSet>Unicode</CharacterSet>
52+
</PropertyGroup>
53+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
54+
<ImportGroup Label="ExtensionSettings">
55+
</ImportGroup>
56+
<ImportGroup Label="Shared">
57+
</ImportGroup>
58+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
59+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
60+
</ImportGroup>
61+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
62+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
63+
</ImportGroup>
64+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
65+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
66+
</ImportGroup>
67+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
68+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
69+
</ImportGroup>
70+
<PropertyGroup Label="UserMacros" />
71+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
72+
<LinkIncremental>true</LinkIncremental>
73+
</PropertyGroup>
74+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
75+
<LinkIncremental>true</LinkIncremental>
76+
</PropertyGroup>
77+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
78+
<LinkIncremental>false</LinkIncremental>
79+
</PropertyGroup>
80+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
81+
<LinkIncremental>false</LinkIncremental>
82+
</PropertyGroup>
83+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
84+
<ClCompile>
85+
<PrecompiledHeader>Use</PrecompiledHeader>
86+
<WarningLevel>Level3</WarningLevel>
87+
<Optimization>Disabled</Optimization>
88+
<SDLCheck>true</SDLCheck>
89+
<ConformanceMode>true</ConformanceMode>
90+
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
91+
<AdditionalIncludeDirectories>$(ONEAPI_ROOT)dev-utilities\latest\include</AdditionalIncludeDirectories>
92+
</ClCompile>
93+
<Link>
94+
<SubSystem>Console</SubSystem>
95+
<GenerateDebugInformation>true</GenerateDebugInformation>
96+
</Link>
97+
</ItemDefinitionGroup>
98+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
99+
<ClCompile>
100+
<PrecompiledHeader>Use</PrecompiledHeader>
101+
<WarningLevel>Level3</WarningLevel>
102+
<Optimization>Disabled</Optimization>
103+
<SDLCheck>true</SDLCheck>
104+
<ConformanceMode>true</ConformanceMode>
105+
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
106+
<EnableFPGACompilationAhead>true</EnableFPGACompilationAhead>
107+
<AdditionalOptions>-DFPGA_EMULATOR %(AdditionalOptions)</AdditionalOptions>
108+
<ObjectFileName>$(IntDir)autorun.obj</ObjectFileName>
109+
<AdditionalIncludeDirectories>$(ONEAPI_ROOT)dev-utilities\latest\include</AdditionalIncludeDirectories>
110+
</ClCompile>
111+
<Link>
112+
<SubSystem>Console</SubSystem>
113+
<GenerateDebugInformation>true</GenerateDebugInformation>
114+
</Link>
115+
</ItemDefinitionGroup>
116+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
117+
<ClCompile>
118+
<PrecompiledHeader>Use</PrecompiledHeader>
119+
<WarningLevel>Level3</WarningLevel>
120+
<Optimization>MaxSpeed</Optimization>
121+
<FunctionLevelLinking>true</FunctionLevelLinking>
122+
<IntrinsicFunctions>true</IntrinsicFunctions>
123+
<SDLCheck>true</SDLCheck>
124+
<ConformanceMode>true</ConformanceMode>
125+
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
126+
<AdditionalIncludeDirectories>$(ONEAPI_ROOT)dev-utilities\latest\include</AdditionalIncludeDirectories>
127+
</ClCompile>
128+
<Link>
129+
<SubSystem>Console</SubSystem>
130+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
131+
<OptimizeReferences>true</OptimizeReferences>
132+
<GenerateDebugInformation>true</GenerateDebugInformation>
133+
</Link>
134+
</ItemDefinitionGroup>
135+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
136+
<ClCompile>
137+
<PrecompiledHeader>Use</PrecompiledHeader>
138+
<WarningLevel>Level3</WarningLevel>
139+
<Optimization>MaxSpeed</Optimization>
140+
<FunctionLevelLinking>true</FunctionLevelLinking>
141+
<IntrinsicFunctions>true</IntrinsicFunctions>
142+
<SDLCheck>true</SDLCheck>
143+
<ConformanceMode>true</ConformanceMode>
144+
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
145+
<EnableFPGACompilationAhead>true</EnableFPGACompilationAhead>
146+
<AdditionalOptions>-DFPGA_EMULATOR %(AdditionalOptions)</AdditionalOptions>
147+
<ObjectFileName>$(IntDir)autorun.obj</ObjectFileName>
148+
<AdditionalIncludeDirectories>$(ONEAPI_ROOT)dev-utilities\latest\include</AdditionalIncludeDirectories>
149+
</ClCompile>
150+
<Link>
151+
<SubSystem>Console</SubSystem>
152+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
153+
<OptimizeReferences>true</OptimizeReferences>
154+
<GenerateDebugInformation>true</GenerateDebugInformation>
155+
</Link>
156+
</ItemDefinitionGroup>
157+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
158+
<ImportGroup Label="ExtensionTargets">
159+
</ImportGroup>
160+
</Project>
Loading

0 commit comments

Comments
 (0)