Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28497 Discussions

Can a DLL from a X86 CPU be used by the MAX 1100 GPU

Anders_S_1
New Contributor III
1,991 Views

Hi,

I am using a third party DLL library in my CPU-based calculations. Can this DLL library be used if I move parts of the computations to the GPU or has a new DLL library to be constructed?

Best regards

Anders S

0 Kudos
1 Solution
Barbara_P_Intel
Moderator
1,868 Views

Also, the Intel® Data Center GPU Max 1100 is available only on Linux at this time. 

View solution in original post

20 Replies
AishwaryaCV_Intel
Moderator
1,960 Views

Hi,


Thank you for posting in intel community.


Could you please let us know which GPU programming you are using to move it from CPU to GPU?

And also could you tell us about which 3rd party DLL you are using?


Thanks And Regards,

Aishwarya


0 Kudos
Anders_S_1
New Contributor III
1,949 Views

Hi Aishwarya,

The idea to move some calculations to the MAX 1100 GPU is in a very early stage.

If it is possible to use the third party DLL, this would strongly simplify the process.

The DLL library at the moment runs on a CPU with Intel Fortran Classic. I am greatly thankful for any advice on

this matter. I am a GPU novice, so maybe my question was silly. When it comes to choosing

software I have understood that SYCL/DC++ is one good choice in some cases.

I choose at the moment not to give the name of the third party distributing the DLLs.

Best regards

Anders S

0 Kudos
Steve_Lionel
Honored Contributor III
1,900 Views

The DLL would require that it be run on a processor supporting the instruction set specified when it was built. My understanding is that Intel Fortran supports OpenMP offloading to an Intel GPU, but not SYCL. In any case, the DLL would need to modified to take advantage of a GPU.

Barbara_P_Intel
Moderator
1,869 Views

Also, the Intel® Data Center GPU Max 1100 is available only on Linux at this time. 

Anders_S_1
New Contributor III
1,770 Views

Hi Barbara,

Thanks! I hope/guess that Fortran will be added to the list sooner or later, won't it?

Best regards

Anders S

0 Kudos
Barbara_P_Intel
Moderator
1,711 Views

Let me clarify. The Intel Fortran Compiler (ifx) will offload to an Intel GPU if you add OpenMP offload directives on both Windows and LInux.

The Intel® Data Center GPU Max 1100 (PVC) can only be used on Linux.

 

 

0 Kudos
jimdempseyatthecove
Honored Contributor III
1,863 Views

FWIW (on Windows) x86 is 32-bit (x64 is 64-bit)

ifx (oneAPI Fortran) only generates 64-bit code (at least that is my understanding).

ifx supports OpenMP offloading to GPU, ifort does not.

Jim Dempsey

0 Kudos
Anders_S_1
New Contributor III
1,768 Views

Hi Jim,

Thanks for your reply!

What exactly is meant by offloading? Does this also include "embedding" the DLL in a suitable way, so it can be used

on the GPU hardware?

Where can I find a description of the OpenMP offloading?

Best regards

Anders S

0 Kudos
jimdempseyatthecove
Honored Contributor III
1,766 Views

Offloading:

Code with offloading, when compiled with a compiler supporting offloading, generates "fat binaries".

By this we mean it generates code that runs on the CPU plus

partially-processed code to be one time JIT (Just In Time) compiled to be injected into the GPU.

The offloading at runtime is performed via compiler directives.

Google: "Fortran OpenMP offload examples"

One example: https://www.openmp.org/wp-content/uploads/SC19-Koniges-Legacy-Fortran.pdf

Jim Dempsey

 

Anders_S_1
New Contributor III
1,748 Views

Hi Steve and Jim,

Thanks for elucidating answers!

A final question: If I modify my DLLs for the GPU hardware, it is then possible to offload

part of my ifx code with OpenMP to the GPU and there set up an MPI-parallelized computation.

As I can not use OpenMP parallelization, I have to use MPI.

Best  regards

Anders S

0 Kudos
Anders_S_1
New Contributor III
1,688 Views

Hi Jim,

Thanks also for the application example!

1. Having been told that the third party DLL library has to be recompiled to work on the MAX GPU, how do I get hold of

this compiler to make this change together with the third party selling the DLL library?

2. The DLL library uses two integer vectors in the calling program to store intermediate results. I have been told that

several attempts to use OpenMP has failed due to this and I have also tried with negative results. This is the reason

why I use MPI, which works. Therefore, my question about MPI or non-OpenMP parallelization on the GPU remains.

I guess that your question to Barbara has to do with this, has'nt it?

Best regards

Anders S

 

 

0 Kudos
jimdempseyatthecove
Honored Contributor III
1,701 Views

Barbara, is work being done on a driver for the  Intel® Data Center GPU Max 1100 (PVC)?

If so, when is it expected to be available?

Jim Dempsey

0 Kudos
Barbara_P_Intel
Moderator
1,653 Views

I do not know the roadmap for a GPU driver for Intel® Data Center GPU Max 1100 (PVC) on Windows.

There are GPU drivers for other Intel GPUs on Windows, if Windows is required. ifx with OpenMP offload directives are required to use them.

The Fortran System Requirements article gives more information on the Intel GPUs that have Windows drivers. Look in the Windows section and click on on the info to get the OCLOC and Level 9 driver information.

Be aware that not all Intel GPUs have 64-bit hardware support. 

 

 

Anders_S_1
New Contributor III
1,643 Views

Hi Barbara,

Thanks very much for your informative answer!

As I have a feeling that the MAX GPU with 64-bit support is right

for my application, I do ask you to keep me posted when this becomes clear.

Best regards

Anders S

0 Kudos
Steve_Lionel
Honored Contributor III
1,677 Views

There's no point in asking for a compiler that doesn't exist, that being a Windows compiler targeting the MAX GPU. 

0 Kudos
Anders_S_1
New Contributor III
1,674 Views

Hi Steve,

Thanks for a rapid reply!

OK, I evidently asked the wrong question!

So, what to do if I sit with a DLL library that works with Fortran Classic and I want to offload

part of my code including the DLL library to the MAX GPU? Recompile it with the ifx compiler or what?

Best regards

Anders S

0 Kudos
Anders_S_1
New Contributor III
1,643 Views

Hi Steve,

Does your answer imply that there will be no Windows compiler in the future?

Best  regards

Anders S

0 Kudos
Steve_Lionel
Honored Contributor III
1,603 Views

@Anders_S_1 wrote:

Hi Steve,

Does your answer imply that there will be no Windows compiler in the future?


See that "Retired" in my profile description? That means I have no insight into Intel's future plans - I was simply stating what I know exists today. I can tell you from experience that the level of HPC activity on Windows servers is very low compared to Linux, and I would find it understandable if Intel chooses to focus on Linux.  Intel today does have a Fortran compiler for Windows that targets other Intel GPUs, but again OpenMP offload must be used.

If you are itching to make use of the MAX GPU series, then I suggest seeing if the software you use can be adapted to use OpenMP and ported to Linux.

0 Kudos
jimdempseyatthecove
Honored Contributor III
1,663 Views

As Barbara stated the MAX GPU is supported on Linux only. GPU support requires a driver for the O/S as well as the offload compiler component. Apparently, these are only supported (available) on Linux. As you are using a DLL, this means that you are running on Windows. Ergo, you are out of luck at this time as far as Windows goes.

 

As you have the source code to the dll2, you could consider dual booting you system, Windows and Linux, compiling the DLL as a Linux .so library, and run the application under Linux.

 

Also, regarding Windows and OpenMP

>>The DLL library uses two integer vectors in the calling program to store intermediate results.

 

IF these two vectors are module variables, make them threadprivate

ELSIF these two vectors are passed as arguments, have thest arguments local/private to the thread.

 

Also, IIF these two vectors are the entire problem dataset (as opposed to unique set per thread), then you will need to make code changes in dll2.

 

Jim Dempsey

Anders_S_1
New Contributor III
1,638 Views

Hi Jim,

Thanks for your suggestions to try to make OpenMP work. I will

try these ideas asap.

If possible I will try to stay with Windows as I use the QuickWin library as

an excellent run-time process monitor of the time evolution of multi-particle kinetics.

Best regards

Anders S

0 Kudos
Reply