- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Trying to write test programs using GPU offloads
Getting: could not find 'ocloc'
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Resolved the issue
I had mistakenly selected
Enable OpenMP Offloading | Generate Device Binary for Intel GPU's
instead of
Enable OpenMP Offloading | Generate x86 + SPIR64 fat binary
*** However ***
Using the same project that had mistakenly used Generate Device Binary for Intel GPU's
And changing the Code Generation to Generate x86 + SPIR64 fat binary
Would produce a failing application.
forrtl: severe (151): allocatable array is already allocated
If I do a Build | Clean, the build
Then build
LINK : fatal error LNK1181: cannot open input file 'x64\Debug\GPUtest.obj'
However the compilation of GPUtest succeeded (no error listed)
*** I had to create a new project to undo the Generate Device Binary for Intel GPU's
It appears that something is sticking around in the project folder should you mistakenly select
Enable OpenMP Offloading | Generate Device Binary for Intel GPU's
build
Enable OpenMP Offloading | Generate x86 + SPIR64 fat binary
Jim Dempsey
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I can run dpc++ test programs
ifx under Windows is the issue.
module mod_GPUtest
real(8), allocatable :: CPUarray(:,:)
real(8), allocatable :: GPUarray(:,:)
end module mod_GPUtest
program GPUtest
use omp_lib
use mod_GPUtest
implicit none
allocate(CPUarray(3,10000))
!$omp allocate allocator(omp_target_shared_mem_alloc)
allocate(CPUarray(3,10000))
end program GPUtestGPUtest.f90
C:\test\GPUtest\GPUtest\GPUtest.f90(24): warning #9127: The executable ALLOCATE directive associated with an ALLOCATE statement is deprecated.
C:\test\GPUtest\GPUtest\GPUtest.f90(24): warning #9127: The executable ALLOCATE directive associated with an ALLOCATE statement is deprecated.
Linking...
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.2.0 Build 20250605
Copyright (C) 1985-2025 Intel Corporation. All rights reserved.
Link: warning #10441: The OpenCL offline compiler could not be found and is required for AOT compilation.See "https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-cpp-compiler-dev-guide-and-reference/top/compilation/ahead-of-time-compilation.html" for more information.
Link: error #10037: could not find 'ocloc'
Link: error #10401: error running 'Offline Compiler'Note, the !$omp ... directive is depreciated
Jim Dempsey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
PATH includes
...;C:\Program Files (x86)\Intel\oneAPI\ocloc\latest\bin;...
That directory includes
06/12/2025 12:07 PM 40,336,608 clangFEWrapper.dll
06/12/2025 12:07 PM 3,485,408 iga64.dll
06/12/2025 12:07 PM 85,942,496 igc64.dll
06/12/2025 12:07 PM 1,126,112 igdfcl64.dll
06/12/2025 12:07 PM 751,840 ocloc.exe
06/12/2025 12:07 PM 1,971,424 ocloc64.dll
06/12/2025 12:07 PM 147,156,704 opencl-clang264.dllJim Dempsey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Are you compiling from the oneAPI command prompt? What compiler options are you using?
Add option "-#" and see what the driver is feeding the compiler and linker.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks @Ron_Green for the follow-up.
Additional info:
/nologo /debug:full /Od /QxHost /Qopenmp-targets:spir64_gen /Qopenmp /Qiopenmp /warn:interfaces /module:"x64\Debug\\" /object:"x64\Debug\\" /traceback /check:bounds /check:stack /libs:dll /threads /dbglibs /cAdding /#
(before you examine the following report, look at what follows, this may save you time)
Build started at 10:00 AM...
1>------ Build started: Project: GPUtest (IFX), Configuration: Debug x64 ------
Compiling with Intel® Fortran Compiler 2025.2.1 [Intel(R) 64]...
GPUtest.f90
C:\PROGRA~2\Intel\oneAPI\compiler\2025.2\bin/compiler\xfortcom \
-triple \
x86_64-pc-windows-msvc \
--dependent-lib=msvcrtd \
--dependent-lib=ifconsol.lib \
--dependent-lib=libifcoremdd.lib \
--dependent-lib=libifportmd.lib \
--dependent-lib=libircmt \
--dependent-lib=libmmd \
--dependent-lib=oldnames \
--dependent-lib=svml_dispmd \
--dependent-lib=libiomp5md \
-emit-llvm-bc \
-emit-llvm-uselists \
-mrelax-all \
"-verify nomodule" \
-main-file-name \
C:\test\GPUtest\GPUtest\GPUtest.f90 \
-mllvm \
--relocation-model=pic \
-pic-level \
2 \
"-options-string /nologo /debug:full /Od /QxHost /Qopenmp-targets:spir64_gen /Qopenmp /Qiopenmp /warn:interfaces /module:x64\Debug\ /object:x64\Debug\ /traceback /check:bounds /check:stack /libs:dll /threads /dbglibs /c /# /Qlocation,link,C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\HostX64\x64 /Qm64 " \
-menable-unsafe-fp-math \
-freciprocal-math \
-mframe-pointer=all \
-omp \
-omp_simd \
"-omp_target spir64_gen" \
-disable-llvm-passes \
-target-cpu \
core-avx2 \
-debug-info-kind=limited \
-gcodeview \
-mllvm \
-debug-line-version=2 \
-gno-column-info \
-O0 \
-fveclib=SVML \
-fintel-advanced-optim \
-mllvm \
-loopopt \
-floopopt-pipeline=full \
-mllvm \
-disable-hir-generate-mkl-call \
-mllvm \
-paropt=31 \
-mllvm \
-vecopt=true \
-mllvm \
-enable-vec-clone=true \
-nothreadprivate_compat \
-fintel-libirc-allowed \
-o \
C:\Users\jim00\AppData\Local\Temp\2535646.bc \
-D__INTEL_LLVM_COMPILER=20250200 \
-D__INTEL_LLVM_COMPILER_UPDATE=0 \
-D_WIN32 \
-D_M_AMD64=100 \
-D_M_X64=100 \
-D_WIN64=1 \
-D_MSC_VER=1938 \
-D_MSC_FULL_VER=193833130 \
-D_MSC_EXTENSIONS \
-D_DEBUG \
-D_MT \
-D_DLL \
-D__INTEL_COMPILER_BUILD_DATE=20250605 \
-D__MSVC_RUNTIME_CHECKS \
-D_OPENMP=202011 \
-D__SSE__ \
-D__SSE_MATH__ \
-D__AVX512VBMI__ \
-D__INTEL_COMPILER=20250200 \
-D__INTEL_COMPILER_UPDATE=0 \
-IC:\test\GPUtest\GPUtest \
-I. \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\opt\compiler\include\intel64 \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\include \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\opt\compiler\include \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\lib\clang\21\include \
"-IC:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um" \
"-IC:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared" \
"-IC:\Program Files (x86)\Intel\oneAPI\compiler\2025.2\opt\compiler\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\mkl\2025.2\..\latest\include" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\atlmfc\include" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\\PlatformSDK\include\um" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\\PlatformSDK\include\shared" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\\PlatformSDK\include" \
-automatic \
"-check bounds" \
"-check stack" \
-faltmathlib=SVML \
"-fp_model fast" \
"-fp_modbits honor_f32_conversion" \
-gen_interfaces \
"-module x64\Debug\" \
-omp \
-omp_simd \
-omp_offload \
-O0 \
-g2 \
"-reentrancy threaded" \
-traceback \
"-warn interfaces" \
-simd \
-offload_host \
-nooffload_do_concurrent \
C:\test\GPUtest\GPUtest\GPUtest.f90
C:\PROGRA~2\Intel\oneAPI\compiler\2025.2\bin/compiler\xfortcom \
-triple \
x86_64-pc-windows-msvc \
--dependent-lib=msvcrtd \
--dependent-lib=ifconsol.lib \
--dependent-lib=libifcoremdd.lib \
--dependent-lib=libifportmd.lib \
--dependent-lib=libircmt \
--dependent-lib=libmmd \
--dependent-lib=oldnames \
--dependent-lib=svml_dispmd \
--dependent-lib=libiomp5md \
-emit-obj \
-mrelax-all \
"-verify nomodule" \
-main-file-name \
C:\Users\jim00\AppData\Local\Temp\2535646.bc \
-mllvm \
--relocation-model=pic \
-pic-level \
2 \
"-options-string /nologo /debug:full /Od /QxHost /Qopenmp-targets:spir64_gen /Qopenmp /Qiopenmp /warn:interfaces /module:x64\Debug\ /object:x64\Debug\ /traceback /check:bounds /check:stack /libs:dll /threads /dbglibs /c /# /Qlocation,link,C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\HostX64\x64 /Qm64 " \
-menable-unsafe-fp-math \
-freciprocal-math \
-mframe-pointer=all \
-omp \
-omp_simd \
"-omp_target spir64_gen" \
-target-cpu \
core-avx2 \
-debug-info-kind=limited \
-gcodeview \
-mllvm \
-debug-line-version=2 \
-gno-column-info \
-O0 \
-fveclib=SVML \
-fintel-advanced-optim \
-mllvm \
-loopopt \
-floopopt-pipeline=full \
-mllvm \
-disable-hir-generate-mkl-call \
-mllvm \
-paropt=31 \
-mllvm \
-vecopt=true \
-mllvm \
-enable-vec-clone=true \
-nothreadprivate_compat \
-fintel-libirc-allowed \
-o \
C:\Users\jim00\AppData\Local\Temp\25356842535646.obj \
-source_form \
ir \
-D__INTEL_LLVM_COMPILER=20250200 \
-D__INTEL_LLVM_COMPILER_UPDATE=0 \
-D_WIN32 \
-D_M_AMD64=100 \
-D_M_X64=100 \
-D_WIN64=1 \
-D_MSC_VER=1938 \
-D_MSC_FULL_VER=193833130 \
-D_MSC_EXTENSIONS \
-D_DEBUG \
-D_MT \
-D_DLL \
-D__INTEL_COMPILER_BUILD_DATE=20250605 \
-D__MSVC_RUNTIME_CHECKS \
-D_OPENMP=202011 \
-D__INTEL_OFFLOAD \
-D__SSE__ \
-D__SSE_MATH__ \
-D__AVX512VBMI__ \
-D__INTEL_COMPILER=20250200 \
-D__INTEL_COMPILER_UPDATE=0 \
-IC:\Users\jim00\AppData\Local\Temp \
-I. \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\opt\compiler\include\intel64 \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\include \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\opt\compiler\include \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\lib\clang\21\include \
"-IC:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um" \
"-IC:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared" \
"-IC:\Program Files (x86)\Intel\oneAPI\compiler\2025.2\opt\compiler\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\mkl\2025.2\..\latest\include" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\atlmfc\include" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\\PlatformSDK\include\um" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\\PlatformSDK\include\shared" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\\PlatformSDK\include" \
-automatic \
"-check bounds" \
"-check stack" \
-faltmathlib=SVML \
"-fp_model fast" \
"-fp_modbits honor_f32_conversion" \
-gen_interfaces \
"-module x64\Debug\" \
-omp \
-omp_simd \
-omp_offload \
-O0 \
-g2 \
"-reentrancy threaded" \
-traceback \
"-warn interfaces" \
-simd \
-offload_host \
-nooffload_do_concurrent \
C:\Users\jim00\AppData\Local\Temp\2535646.bc
C:\PROGRA~2\Intel\oneAPI\compiler\2025.2\bin/compiler\xfortcom \
-triple \
spir64_gen \
-aux-triple \
x86_64-pc-windows-msvc \
--dependent-lib=libcmt \
--dependent-lib=ifconsol.lib \
--dependent-lib=libifcoremt.lib \
--dependent-lib=libifport.lib \
--dependent-lib=libircmt \
--dependent-lib=libmmt \
--dependent-lib=oldnames \
--dependent-lib=svml_dispmt \
--dependent-lib=libiomp5md \
-emit-llvm-bc \
-emit-llvm-uselists \
-mrelax-all \
"-verify nomodule" \
-main-file-name \
C:\test\GPUtest\GPUtest\GPUtest.f90 \
-mllvm \
--relocation-model=pic \
-pic-level \
2 \
"-options-string /nologo /debug:full /Od /QxHost /Qopenmp-targets:spir64_gen /Qopenmp /Qiopenmp /warn:interfaces /module:x64\Debug\ /object:x64\Debug\ /traceback /check:bounds /check:stack /libs:dll /threads /dbglibs /c /# /Qlocation,link,C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\HostX64\x64 /Qm64 " \
-menable-unsafe-fp-math \
-freciprocal-math \
-mframe-pointer=all \
-omp \
-omp_simd \
"-omp_target spir64_gen" \
-offload_target \
-fopenmp-host-ir-file-path \
C:\Users\jim00\AppData\Local\Temp\2535646.bc \
-debug-info-kind=limited \
-gcodeview \
-mllvm \
-debug-line-version=2 \
-gno-column-info \
-O0 \
-fveclib=SVML \
-mllvm \
-paropt=63 \
-mllvm \
-vecopt=true \
-mllvm \
-enable-vec-clone=true \
-enable-itt-annot \
-mllvm \
-spirv-opt \
-nothreadprivate_compat \
-fintel-libirc-allowed \
-o \
C:\Users\jim00\AppData\Local\Temp\25356113GPUtest.bc \
-D__INTEL_LLVM_COMPILER=20250200 \
-D__INTEL_LLVM_COMPILER_UPDATE=0 \
-D_WIN32 \
-D_M_AMD64=100 \
-D_M_X64=100 \
-D_WIN64=1 \
-D_MSC_VER=1938 \
-D_MSC_FULL_VER=193833130 \
-D_MSC_EXTENSIONS \
-D_MT \
-D__INTEL_COMPILER_BUILD_DATE=20250605 \
-D__MSVC_RUNTIME_CHECKS \
-D_OPENMP=202011 \
-D__INTEL_OFFLOAD \
-D__MMX__ \
-D__SSE__ \
-D__SSE_MATH__ \
-D__SSE2__ \
-D__SSE2_MATH__ \
-D__pentium4 \
-D__pentium4__ \
-D__tune_pentium4__ \
-D__INTEL_COMPILER=20250200 \
-D__INTEL_COMPILER_UPDATE=0 \
-IC:\test\GPUtest\GPUtest \
-I. \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\opt\compiler\include\intel64 \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\include \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\opt\compiler\include \
-IC:\PROGRA~2\Intel\oneAPI\compiler\2025.2\lib\clang\21\include \
"-IC:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um" \
"-IC:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared" \
"-IC:\Program Files (x86)\Intel\oneAPI\compiler\2025.2\opt\compiler\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\mkl\2025.2\..\latest\include" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\atlmfc\include" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\\PlatformSDK\include\um" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\\PlatformSDK\include\shared" \
"-IC:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\\PlatformSDK\include" \
-automatic \
"-check bounds" \
"-check stack" \
-faltmathlib=SVML \
"-fp_model fast" \
"-fp_modbits honor_f32_conversion" \
-gen_interfaces \
"-module x64\Debug\" \
-omp \
-omp_simd \
-omp_offload \
-O0 \
-g2 \
"-reentrancy threaded" \
-traceback \
"-warn interfaces" \
-simd \
-offload_target \
-nooffload_do_concurrent \
C:\test\GPUtest\GPUtest\GPUtest.f90
C:\PROGRA~2\Intel\oneAPI\compiler\2025.2\bin/compiler\clang-offload-bundler \
-allow-missing-bundles \
-type=o \
-targets=openmp-spir64_gen,host-x86_64-pc-windows-msvc \
-output=x64/Debug/GPUtest.obj \
-input=C:\Users\jim00\AppData\Local\Temp\25356113GPUtest.bc \
-input=C:\Users\jim00\AppData\Local\Temp\25356842535646.obj \
-base-temp-dir=C:\Users\jim00\AppData\Local\Temp\25356000000070942
del C:\Users\jim00\AppData\Local\Temp\253562clangdashv4
del C:\Users\jim00\AppData\Local\Temp\2535635.i90
del C:\Users\jim00\AppData\Local\Temp\2535646.bc
del C:\Users\jim00\AppData\Local\Temp\253565arg2
del C:\Users\jim00\AppData\Local\Temp\253566clangdashv2
del C:\Users\jim00\AppData\Local\Temp\25356842535646.obj
del C:\Users\jim00\AppData\Local\Temp\253569arg2
del C:\Users\jim00\AppData\Local\Temp\2535610clangdashv2
del C:\Users\jim00\AppData\Local\Temp\25356113GPUtest.bc
del C:\Users\jim00\AppData\Local\Temp\25356124.i90
del C:\Users\jim00\AppData\Local\Temp\2535613out2
del C:\Users\jim00\AppData\Local\Temp\2535614arg3
Linking...
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.2.0 Build 20250605
Copyright (C) 1985-2025 Intel Corporation. All rights reserved.
Link: warning #10441: The OpenCL offline compiler could not be found and is required for AOT compilation.See "https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-cpp-compiler-dev-guide-and-reference/top/compilation/ahead-of-time-compilation.html" for more information.
Link: error #10037: could not find 'ocloc'
Link: error #10401: error running 'Offline Compiler'
Build log written to "file://C:/test/GPUtest/GPUtest/x64/Debug/BuildLog.htm"
GPUtest - 2 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Build completed at 10:00 AM and took 00.626 seconds ==========
Additional information
If I launch MS VS Community 2020 from the start (Windows Search) I get the missing ocloc as shown above.
If I launch a oneAPI command prompt,
then issue devenv to launch MS VS Community 2020,
open my solution then build
Linking...
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.2.0 Build 20250605
Copyright (C) 1985-2025 Intel Corporation. All rights reserved.
Error: Device name missing.
Command was: ocloc -file C:\Users\jim00\AppData\Local\Temp\17368323llvm-spirv2.out -output_no_suffix -spirv_input -output C:\Users\jim00\AppData\Local\Temp\17368911llvm-spirv.out -options "-g -cl-opt-disable -cl-take-global-address -cl-match-sincospi"
Link: error #10401: error running 'Offline Compiler'
There appears to be two issues
1) MS VS environment is not setup for ifx offloading (I can work around this by running devenv from oneAPI command prompt)
2) Possibly my error in not specifying a device name (Intel(R) Arc(TM) Pro B50 Graphics)
When I run DPCPP, it seems to work without issue.
Apparently I must include the target device name in the project build properties? How?
Jim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Additional info:
Platform: Intel(R) oneAPI Unified Runtime over Level-Zero
Device: Intel(R) Arc(TM) Pro B50 Graphics
Vendor: Intel(R) Corporation
Type: GPU
Max Compute Units: 128
Max Clock Frequency (MHz): 2600
Global Memory Size (MB): 15876
Double Precision Support: Yes
Platform: Intel(R) OpenCL
Device: Intel(R) Core(TM) i9-14900K
Vendor: Intel(R) Corporation
Type: CPU
Max Compute Units: 32
Max Clock Frequency (MHz): 0
Global Memory Size (MB): 65291
Double Precision Support: Yes
Platform: Intel(R) OpenCL Graphics
Device: Intel(R) Arc(TM) Pro B50 Graphics
Vendor: Intel(R) Corporation
Type: GPU
Max Compute Units: 128
Max Clock Frequency (MHz): 2600
Global Memory Size (MB): 15876
Double Precision Support: YesJim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Resolved the issue
I had mistakenly selected
Enable OpenMP Offloading | Generate Device Binary for Intel GPU's
instead of
Enable OpenMP Offloading | Generate x86 + SPIR64 fat binary
*** However ***
Using the same project that had mistakenly used Generate Device Binary for Intel GPU's
And changing the Code Generation to Generate x86 + SPIR64 fat binary
Would produce a failing application.
forrtl: severe (151): allocatable array is already allocated
If I do a Build | Clean, the build
Then build
LINK : fatal error LNK1181: cannot open input file 'x64\Debug\GPUtest.obj'
However the compilation of GPUtest succeeded (no error listed)
*** I had to create a new project to undo the Generate Device Binary for Intel GPU's
It appears that something is sticking around in the project folder should you mistakenly select
Enable OpenMP Offloading | Generate Device Binary for Intel GPU's
build
Enable OpenMP Offloading | Generate x86 + SPIR64 fat binary
Jim Dempsey
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page