Hi Isuru,
    Thank you for maintaining the conda package and the suggestion.

It is true I don't have the conda environment activated when building
/ running my large app.   I installed conda for the sole purpose of
POCL and generally use homebrew for similar needs.   I'm not seeing
any difference in build/run of hello-opencl whether I have conda
activated or not.  SDKROOT is not set either way.

Starting with a fresh shell:
----------------------------------------------
Last login: Wed May 18 22:48:50 on ttys005
noah@Spitzer ~ % clang -g -L/Users/noah/miniforge3/lib/
-Wl,-rpath,/Users/noah/miniforge3/lib/  -lOpenCL
/Users/noah/Downloads/hello_opencl.c
noah@Spitzer ~ % ./a.out
Num Platforms: 1
platform[0] name: Portable Computing Language
platform[0] Num Devices: 1
device[0] name: pthread
function definition may only have a distinct !dbg attachment
i64 (i32)* @_Z13get_global_idj
Computed '1024/1024' correct values!
noah@Spitzer ~ % echo $SDKROOT

noah@Spitzer ~ % source /Users/noah/miniforge3/etc/profile.d/conda.sh
noah@Spitzer ~ % conda activate
(base) noah@Spitzer ~ % echo $SDKROOT

(base) noah@Spitzer ~ % clang -g -L/Users/noah/miniforge3/lib/
-Wl,-rpath,/Users/noah/miniforge3/lib/  -lOpenCL
/Users/noah/Downloads/hello_opencl.c
(base) noah@Spitzer ~ % ./a.out
Num Platforms: 1
platform[0] name: Portable Computing Language
platform[0] Num Devices: 1
device[0] name: pthread
function definition may only have a distinct !dbg attachment
i64 (i32)* @_Z13get_global_idj
Computed '1024/1024' correct values!

(base) noah@Spitzer ~ % which clang
/usr/bin/clang
----------------------------------------------


I'll check out your build.sh recipe.    At first glance, it is not
clear to me how you're dealing with the MacOS pthread not having
pthread_barrier_t and related functions.  When I tried to build POCL
last week, those pthread parts are needed.

Cheers,
-Noah


On Fri, May 20, 2022 at 7:51 AM Isuru Fernando <[email protected]> wrote:
>
> I think the issue is that you don't have the conda environment activated.
> Activating the conda environment sets the SDKROOT env variable
> so that clang can find the macOS SDK.
>
> I maintain the pocl conda package with some other maintainers. You
> can find our build scripts at 
> https://github.com/conda-forge/pocl-feedstock/blob/main/recipe/build.sh
>
> Isuru
>
> On Fri, May 20, 2022 at 9:38 AM Noah Reddell <[email protected]> 
> wrote:
>>
>> Hi,
>>    I upgraded to an M1 Pro Mac and found that MacOS's built-in OpenCL
>> implementation no longer supports the CPU device.  The GPU is
>> supported -- for now at least, but doesn't do fp64.
>>   I'm very motivated to have a local OpenCL platform on my Mac that
>> supports CPU device.  This is by far the most productive way for me to
>> first debug and develop kernels versus GPU-based debugging or on
>> remote systems.   So I return to POCL but for the first time trying to
>> use it on a Mac.  I'm having struggles.  (latest releases MacOS
>> 12.3.1, XCode 13.4)
>>
>> My problems trying to build and run the latest POCL are more complex,
>> so I'll first mention a problem trying to use POCL acquired with the
>> Conda package manager this week.   I can build and run a simple
>> hello-world program with one kernel and it computes the right answers
>> using POCL.
>> OpenCL Devices Detected:
>> Platform: Portable Computing Language
>> Type: CPU, Name: pthread
>>
>>
>> Unfortunately, when I run my large computational science application,
>> I get a runtime error shortly after the first call to
>> clEnqueueNDRangeKernel().  The function returns CL_SUCCESS, another
>> thread raises SIGABRT, I assume after the following output:
>>
>> ld: dynamic main executables must link with libSystem.dylib for
>> architecture arm64
>> error: linker command failed with exit code 1 (use -v to see invocation)
>> Final linking of kernel physical_initial_condition_evaluation failed.
>>
>> Since my hello-world app works, yet the app I care about doesn't,  my
>> leading suspicion so far is some confusion about which clang / llvm is
>> getting utilized.  I've tried to be careful about what PATH is set and
>> I'm not setting DYLD_LIBRARY_PATH in any way.
>> I'd love to pass "-v" to the POCL link as suggested, but I'm not sure
>> how to do that.
>> The main application *is* linked with -lSystem so that error message
>> is probably referring to the POCL kernel build.
>> It looks like POCL_MSG_PRINT_LLVM could be helpful, but I think that
>> is only set when POCL is built, and I'm not able to build.
>>
>> Ok,  so any suggestions about the above problem would be appreciated!
>>
>>
>> Sometime I'd really like to be able to build POCL myself.
>>
>> I can tell that some special steps are needed to get the latest POCL
>> to build for MacOS.  Who is maintaining that Conda package?   Are the
>> build steps available?
>>
>>    Lesser question stemming from my failed attempts to build POCL from 
>> source:
>> Question:  What is the difference between the "basic" device and
>> "pthread" device?  I'm not finding documentation for either host
>> devices.
>>    One reason I ask is that I found problems building "pthread" due to
>> Apple's pthread.h not including pthread_barrier support.      Looks
>> like two lines in CMakeLists.txt under if(ENABLE_HOST_CPU_DEVICES)
>> could be modified to turn off the pthreads device.   I also had
>> success naively providing  implementations of the missing functions in
>> file pthread_scheduler.c
>>
>>
>>
>> Warm regards,
>>
>> Noah
>>
>>
>> _______________________________________________
>> pocl-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/pocl-devel
>
> _______________________________________________
> pocl-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/pocl-devel


_______________________________________________
pocl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pocl-devel

Reply via email to