Get Started with the Intel® oneAPI DPC++/C++ Compiler

ID 767258
Date 3/31/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Get Started on Windows*

Before You Begin

Set Environment Variables

The compiler integrates into the following versions of Microsoft Visual Studio*:

  • Visual Studio 2022
  • Visual Studio 2019
  • Visual Studio 2017

NOTE:
Support for Microsoft Visual Studio 2017 is deprecated as of the Intel® oneAPI 2022.1 release and will be removed in a future release.

For full functionality within Visual Studio, including debugging and development, Visual Studio Community Edition or higher is required. Visual Studio Express Edition allows only command-line builds. For all versions, Microsoft C++ support must be selected as part of the Visual Studio install. For Visual Studio 2017 and later, you must use a custom install to select this option.

You typically do not need to set the environment variables on Windows, as the compiler command-line window sets these variables for you automatically. If you need to set the environment variables, run the environment script as described in the suite-specific Get Started documentation.

The default installation directory (<install_dir>) is C:\Program Files (x86)\Intel\oneAPI.

Install GPU Drivers (Optional)

To develop and run applications for Intel GPUs you must first install the latest Intel GPU drivers.

Option 1: Use the Command Line in Microsoft Visual Studio

The Intel® oneAPI DPC++/C++ Compiler provides multiple drivers:

Language Linux Drivers Windows Drivers Option Style Notes

C

icx

icx-cc

icx-cc

Linux-style

icx is the recommended default C driver for Linux.

If you use icx with a C++ source file, it is compiled as a C++ file. Use icx to link C object files.

icx-cc is the Microsoft-compatible variant of icx.

C++

icpx

icpx

Linux-style

icpx is the recommended default C++ driver for Linux.

If you use icpx with a C source file, it is compiled as an C++ file. Use icpx to link C++ object files.

C/C++

icx-cl

icx

icx-cl

Windows-style

icx is the recommended default driver for Windows.

icx-cl is the Microsoft-compatible variant of icx. On Linux, icx-cl requires the Microsoft Visual Studio package.

Invoke the compiler using the following syntax:

{compiler driver} [option] file1 [file2...]

To invoke the compiler using the command line from within Microsoft Visual Studio, open a command prompt and enter your compilation command. For example:
icx hello-world.cpp

For SYCL compilation, use the -fsycl option with the C++ driver:

icx -fsycl hello-world.cpp

NOTE:
When using -fsycl, -fsycl-targets=spir64 is assumed unless the -fsycl-targets is explicitly set in the command.

Option 2: Use Microsoft Visual Studio

Project Support for the Intel® DPC++/C++ Compiler in Microsoft Visual Studio

New Microsoft Visual Studio projects for DPC++ are automatically configured to use the Intel® oneAPI DPC++/C++ Compiler.

New Microsoft Visual C++* (MSVC) projects must be manually configured to use the Intel® oneAPI DPC++/C++ Compiler.

NOTE:
.NET-based CLR C++ project types are not supported by the Intel® oneAPI DPC++/C++ Compiler. The specific project types will vary depending on your version of Visual Studio, for example: CLR Class Library, CLR Console App, or CLR Empty Project.

Use the Intel® DPC++/C++ Compiler in Microsoft Visual Studio

Exact steps may vary depending on the version of Microsoft Visual Studio in use.

  1. Create a Microsoft Visual C++ (MSVC) project or open an existing project.
  2. In Solution Explorer, select the project(s) to build with the Intel® oneAPI DPC++/C++ Compiler.
  3. Open Project > Properties .
  4. In the left pane, expand the Configuration Properties category and select the General property page.
  5. In the right pane change the Platform Toolset to the compiler you want to use:
    • For C++ with SYCL, select Intel® oneAPI DPC++ Compiler.
    • For C/C++, there are two toolsets.

      Select Intel C++ Compiler <major version> (example 2021) to invoke icx.

      Select Intel C++ Compiler <major.minor> (example 19.2) to invoke icl.

      Alternatively, you can specify a compiler version as the toolset for all supported platforms and configurations of the selected project(s) by selecting Project > Intel Compiler > Use Intel oneAPI DPC++/C++ Compiler.

  6. Rebuild, using either Build > Project only > Rebuild for a single project or Build > Rebuild Solution for a solution.

Select Compiler Version

If you have multiple versions of the Intel® oneAPI DPC++/C++ Compiler installed, you can select which version you want from the Compiler Selection dialog box:

  1. Select a project, then go to Tools > Options > Intel Compilers and Libraries > <compiler> > Compilers, where <compiler> values are C++ or DPC++.
  2. Use the Selected Compiler drop-down menu to select the appropriate version of the compiler.
  3. Select OK.

Switch Back to the Microsoft Visual Studio C++ Compiler

If your project is using the Intel® oneAPI DPC++/C++ Compiler, you can choose to switch back to the Microsoft Visual C++ compiler:

  1. Select your project in Microsoft Visual Studio.
  2. Right-click and select Intel Compiler > Use Visual C++ from the context menu.

This action updates the solution file to use the Microsoft Visual Studio C++ compiler. All configurations of affected projects are automatically cleaned unless you select Do not clean project(s). If you choose not to clean projects, you will need to rebuild updated projects to ensure all source files are compiled with the new compiler.

Build a Program From the Command Line

Use the following steps to test your compiler installation and build a program.

  1. Use a text editor to create a file called hello-world.cpp with the following contents:
    #include <iostream>
    
    int main()
    {
        std::cout << “Hello, world!\n”;
    
        return 0;
    }
    			
  2. Compile hello-world.cpp:
    icx hello-world.cpp
  3. Now you have an executable called hello-world.exe which can be run and will give immediate feedback:
    hello-world.exe
    Which outputs:
    Hello, world!

You can direct and control compilation with compiler options. For example, you can create the object file and output the final binary in two steps:

  1. Compile hello-world.cpp:
    icx hello-world.cpp /c /Fohello-world.obj 
    The /c option prevents linking at this step and /Fo specifies the name for the object file.
  2. Use the icx compiler to link the resulting application object code and output an executable:
    icx hello-world.obj /Fehello-world.exe 
    The /Fe option specifies the generated executable file name.

Refer to Compiler Options for details about available options.