Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PortBLAS: core aborted on build with AdaptiveCPP on Intel GPUs #1418

Closed
chsasank opened this issue Mar 25, 2024 · 5 comments
Closed

PortBLAS: core aborted on build with AdaptiveCPP on Intel GPUs #1418

chsasank opened this issue Mar 25, 2024 · 5 comments
Labels
bug Something isn't working

Comments

@chsasank
Copy link
Contributor

chsasank commented Mar 25, 2024

I am building PortBLAS and benchmaking it for diff GPUs - see #1417. On Intel's the build crashes.

$ echo $CC $CXX $ACPP_TARGETS
clang-16 acpp generic
cmake -GNinja -DTUNING_TARGET=INTEL_GPU -DCMAKE_BUILD_TYPE=Release       -DSYCL_COMPILER=adaptivecpp -DACPP_TARGETS=$ACPP_TARGETS       -DBLAS_ENABLE_BENCHMARK=ON ..

(I removed lines from SYCL.cmake that disables benchmarks for adaptivecpp in PortBLAS)

Run benchmark:

$ cat << EOF > params.csv
n,n,1024,1024,1024,1,0
n,n,2048,2048,2048,1,0
n,n,4096,4096,4096,1,0
EOF
./benchmark/portblas/bench_gemm --csv-param params.csv --benchmark_out=../results.json \
    --benchmark_out_format=json --benchmark_format=console

Result:

Device vendor: pci:32902
Device name: Intel(R) Arc(TM) A770 Graphics
Device type: gpu
2024-03-25T17:22:51+05:30
Running ./benchmark/portblas/bench_gemm
Run on (12 X 4400 MHz CPU s)
CPU Caches:
  L1 Data 48 KiB (x6)
  L1 Instruction 32 KiB (x6)
  L2 Unified 1280 KiB (x6)
  L3 Unified 18432 KiB (x1)
Load Average: 6.80, 7.69, 6.19
***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead.
[AdaptiveCpp Warning] kernel_cache: This application run has resulted in new binaries being JIT-compiled. This indicates that the runtime optimization process has not yet reached peak performance. You may want to run the application again until this warning no longer appears to achieve optimal performance.
terminate called after throwing an instance of 'hipsycl::sycl::exception'
  what():  Operation not profiled: No execution start timestamp available
Aborted (core dumped)
@chsasank chsasank added the bug Something isn't working label Mar 25, 2024
@chsasank
Copy link
Contributor Author

Can confirm that acpp-info can detect the Intel GPU:

$ acpp-info -l
=================Backend information===================
Loaded backend 0: OpenMP
  Found device: hipSYCL OpenMP host device
Loaded backend 1: Level Zero
  Found device: Intel(R) Arc(TM) A770 Graphics

@chsasank
Copy link
Contributor Author

Can confirm that things work fine with dpcpp compiler on the same system/repo.

@illuhad
Copy link
Collaborator

illuhad commented Mar 25, 2024

what(): Operation not profiled: No execution start timestamp available

Likely the library attempts to use the SYCL queue profiling functionality (which is an optional feature according to the SYCL specification). The OpenCL and Level Zero backends do not currently implement this functionality. This is currently a known limitation, and one that is in line with the SYCL specification.

So I think we can close this here.

@illuhad illuhad closed this as completed Mar 25, 2024
@chsasank
Copy link
Contributor Author

Ah that's why portBLAS folks disabled benchmarking on AdaptiveCPP. Rest of the functionality should work fine?

@illuhad
Copy link
Collaborator

illuhad commented Mar 25, 2024

I think so. Compiler support in the generic SSCP compiler is on par between all the backends, and on the runtime side, the only additional limitation that OpenCL and L0 backends have is 2D and 3D data transfers due to limitations in the OpenCL/L0 USM API. I don't think that portBLAS uses that though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants