Intel® oneAPI Data Parallel C++
Support for Intel® oneAPI DPC++ Compiler, Intel® oneAPI DPC++ Library, Intel ICX Compiler , Intel® DPC++ Compatibility Tool, and GDB*

new to sycl

NewtonDynamics
New Contributor I
1,114 Views

hi, I am new to sycl.

It seems to be what I have been waiting for almost 15 years.  and it is very close to what Microsoft AMD was supposed to be. 

Anyway, I tried this in 2019 with other developer sdk, but I could not get it to work no matter how much effort I put it, until really set in and I abandoned the project. 

 

I now see that Intel provides a very nice integration with VS 2017 and newer version, so I am trying again.

I start by making the hello world with the VS wizard tool.

my first test at running it printed fail.

I looked at the code and changed device selection from default to host, and that works just fine.

 

After reading some of the doc from the https://sycl.readthedocs.io/en/latest/iface/platform.html

I found a code snipped that let me enumerate the platforms and devices.

I modified so that I can select a device other that the default.

These are the platform and devices listed. 

  • Platform: Intel(R) FPGA Emulation Platform for OpenCL(TM)
    Device: Intel(R) FPGA Emulation Device
  • Platform: Intel(R) OpenCL
    Device: Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
  • Platform: AMD Accelerated Parallel Processing
    Device: Ellesmere
  • Platform: Intel(R) OpenCL HD Graphics
    Device: Intel(R) HD Graphics 630
  • Platform: Intel(R) Level-Zero
    Device: Intel(R) Graphics [0x5912]
  • Platform: SYCL host platform
    Device: SYCL host device

when selecting intel GPU, the demo fail silently, but if I select:  Platform: AMD Accelerated Parallel Processing, Device: Ellesmere, I get this error message. 

 

"Device: Ellesmere
InvalidBuiltinSetName: Expects OpenCL.std. Actual is SPIRV.debug [Src: ..\..\..\libSPIRV\SPIRVModule.cpp:594 SPIRVBuiltinSetNameMap::rfind(BuiltinSetName, &BuiltinSet) ]"

 

followed by this hard crash:

Exception thrown at 0x00007FF9AAAB80B0 (amdocl64.dll) in DPCPPConsoleApplication1.exe: 0xC0000005: Access violation reading location 0x0000000000000008.

 

This is the code that I adapted to make possible select any device from the enumeration.

 

queue q;
  for (auto &platform : platforms) 
  {
	  auto devices = platform.get_devices();
	  for (auto &device : devices) 
	  {
		  auto name = platform.get_info<sycl::info::platform::name>();
		  int vendorName = name.find("AMD");
		  //int vendorName = name.find("Intel(R) Level - Zero");
		  //int vendorName = name.find("SYCL host platform");
		  if (vendorName >= 0)
		  {
			  auto info = device.get_info<sycl::info::device::name>();
			  std::cout << "Platform: " << name << std::endl;
			  std::cout << "  Device: " << info << std::endl;

			  q = queue(device);
		  }
	  }
  }

 

 

please any help would be greatly appreciated.

Julio Jerez

 

 

 

0 Kudos
6 Replies
NewtonDynamics
New Contributor I
1,103 Views

ok when reading the messages, before the crash, it seems the amd drive does not find the correct spiv generated code, 

so I looked the options in visual studio, and there are two intel compilers.

- Intel(R) oneAPI DPC++ Compiler 

- Intel(R) oneAPI DPC++ Compiler 2022 

 

I change to Intel(R) oneAPI DPC++ Compiler 2022 

and try again, and this time the enumeration onle find Intel Platform and devices and the host, but not the discrete GPU 

 

  • Platform: Intel(R) FPGA Emulation Platform for OpenCL(TM)
    Device: Intel(R) FPGA Emulation Device
  • Platform: Intel(R) OpenCL
    Device: Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
  • Platform: Intel(R) OpenCL HD Graphics
    Device: Intel(R) HD Graphics 630
  • Platform: Intel(R) Level-Zero
    Device: Intel(R) Graphics [0x5912]
  • Platform: SYCL host platform
    Device: SYCL host device

 

when selection: 

Platform: Intel(R) OpenCL HD Graphics
Device: Intel(R) HD Graphics 630

 

now the program does works.

but this beg the question, how do I make work with some more powerful GPU.

I saw many, many video where they talk about Sycl, and that is supposed to work with all the HPC capable devices. 

even here on this forum, I see many people talking about CUDA back end. 

 

I am delighted that this works at all with the cpu and, with the HD graphic embedded in the CPU,

but the last time the same kernels in Opencl. The 630 performance was actually comparable to multithreaded avx2.

Nowhere near what the discrete graphics car was capable of delivering.

 

Julio

0 Kudos
NoorjahanSk_Intel
Moderator
1,069 Views

Hi,


Thanks for reaching out to us.

We are looking into your issue. We will get back to you soon.


Thanks & Regards,

Noorjahan.


0 Kudos
JyotsnaK_Intel
Moderator
1,011 Views

Hi,


Thank you for your inquiry. We offer support for hardware platforms that the Intel® oneAPI product supports. These platforms include those that are part of the Intel® Core™ processor family or higher, the Intel® Xeon® processor family, the Intel® Xeon® Scalable processor family, and others which can be found here – Intel® oneAPI Base Toolkit System Requirements, Intel® oneAPI HPC Toolkit System Requirements, Intel® oneAPI IoT Toolkit System Requirements

If you wish to use oneAPI on hardware that is not listed at one of the sites above, we encourage you to visit and contribute to the open oneAPI specification - https://www.oneapi.io/spec/


0 Kudos
NoorjahanSk_Intel
Moderator
995 Views

Hi,


Has the information provided above helped? If yes, Could you please confirm whether we can close this thread from our end?


Thanks & Regards,

Noorjahan.


0 Kudos
NoorjahanSk_Intel
Moderator
972 Views

Hi,

I have not heard back from you, so I will close this inquiry now. If you need further assistance, please post a new question.


Thanks & Regards,

Noorjahan.


0 Kudos
NewtonDynamics
New Contributor I
731 Views

hi, 

I started looking at this sycl last year but I have to postponed because the lack of support for any decent GPU.

but now I am considering giving another shot, given that has released a consumer class GPU the ARC 770.

I check the doc, and not where mention support for it, I am assuming this because the website had not been updated.

 

my question is would oneAPI recognize and enumerate an ARC 7780 gpu?

 

Julio.

 

 

 

 

0 Kudos
Reply