Skip to content

Instantly share code, notes, and snippets.

@HuangJiaLian
Created May 30, 2023 11:43
Show Gist options
  • Save HuangJiaLian/626b15a2ab3602ebd9fc6be32503bf4a to your computer and use it in GitHub Desktop.
Save HuangJiaLian/626b15a2ab3602ebd9fc6be32503bf4a to your computer and use it in GitHub Desktop.
Installation log to make GPU version runs on macOS

This is a installation log to enable GPU version ppafm runs macOS(13.4)

To use the GPU version of [[ppafm]] on macOS, I installed pyopencl and pocl as following, instead of using pip to install.

conda install -c conda-forge pyopencl
conda install -c conda-forge pocl

Installation log

pip install pyopencl
~/Github/ppafm/examples/PTCDA_Hartree main* ❯ ./run_gpu.py                                                      22:13:12
 PACKAGE_PATH =  /Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm
 CPP_PATH     =  /Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/cpp
Initializing an OpenCL environment on Apple
UNSUPPORTED (log once): buildComputeProgram: cl2Metal failed
Traceback (most recent call last):
  File "/Users/huangj4/Github/ppafm/examples/PTCDA_Hartree/./run_gpu.py", line 15, in <module>
    afmulator = AFMulator(
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/ocl/AFMulator.py", line 102, in __init__
    oclu.init_env()
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/ocl/oclUtils.py", line 75, in init_env
    FFcl.init(env)
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/ocl/field.py", line 34, in init
    cl_program = env.loadProgram(env.CL_PATH / 'FF.cl')
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/ocl/oclUtils.py", line 30, in loadProgram
    program = cl.Program(self.ctx, f.read()).build(options=['-I', cl_path])
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/pyopencl/__init__.py", line 534, in build
    self._prg, was_cached = self._build_and_catch_errors(
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/pyopencl/__init__.py", line 582, in _build_and_catch_errors
    raise err
pyopencl._cl.RuntimeError: clBuildProgram failed: BUILD_PROGRAM_FAILURE - clBuildProgram failed: BUILD_PROGRAM_FAILURE - clBuildProgram failed: BUILD_PROGRAM_FAILURE

Build on <pyopencl.Device 'Apple M2 Pro' on 'Apple' at 0x1027f00>:

program_source:15:10: fatal error: 'splines.cl' file not found
#include "splines.cl"
         ^~~~~~~~~~~~

(options: -I "/Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/ocl/cl" -I /Users/huangj4/anaconda3/lib/python3.10/site-packages/pyopencl/cl)
(source saved as /var/folders/r7/78fts_m10097pxwwrsd4yt2m0000gp/T/tmpnywgt4uj.cl)

I uninstall it by pip uninstall pyopencl and then use conda to install.

conda install -c conda-forge pyopencl

Then another error comes:

 PACKAGE_PATH =  /Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm
 CPP_PATH     =  /Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/cpp
Traceback (most recent call last):
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/ocl/oclUtils.py", line 68, in get_platforms
    platforms = cl.get_platforms()
pyopencl._cl.LogicError: clGetPlatformIDs failed: PLATFORM_NOT_FOUND_KHR

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/huangj4/Github/ppafm/examples/PTCDA_Hartree/./run_gpu.py", line 15, in <module>
    afmulator = AFMulator(
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/ocl/AFMulator.py", line 102, in __init__
    oclu.init_env()
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/ocl/oclUtils.py", line 74, in init_env
    env = OCLEnvironment(i_platform)
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/ocl/oclUtils.py", line 14, in __init__
    platforms = get_platforms()
  File "/Users/huangj4/anaconda3/lib/python3.10/site-packages/ppafm/ocl/oclUtils.py", line 70, in get_platforms
    raise RuntimeError('Could not find any OpenCL platforms. Check that the OpenCL ICD for your device is installed.')
RuntimeError: Could not find any OpenCL platforms. Check that the OpenCL ICD for your device is installed.

Followed by https://documen.tician.de/pyopencl/misc.html#installation , I tried to install pocl

conda install -c conda-forge pocl

It worked.

@HuangJiaLian
Copy link
Author

I thought I made it 😅

Anyhow, I just put some test info on my laptop here.

Macbook Pro M2, macOS 13.4.
Data downloading time is not included here.

ppafm/examples/Graphene
run.sh 48s
run_gpu.py 53s

ppafm/examples/PTCDA_Hartree
run.sh 2m44s
run_gpu.py 16s
run_gpu_easy.py 18s

ppafm/examples/pyridineDensOverlap
run.sh 2m16s
run_gpu.py 16s

In the last two examples, the image numbers are not the same for run.sh and run_gup.py. So it's also not comparable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment