[Openmp-dev] Segmentation fault libomptarget.so

Talita Perciano via Openmp-dev openmp-dev at lists.llvm.org
Tue Feb 12 13:44:50 PST 2019


Tried all the above... still segfault on my end. BTW, I don't know if
that's relevant but I'm using cuda 9.2.

On Tue, Feb 12, 2019 at 1:42 PM Alexey Bataev <a.bataev at outlook.com> wrote:

> Tried your example with my correction,
>
> $./a.out 1000
> Here
>
> min = 0.000047, max = 0.999994, avg = 0.504811
>
> $
>
> -------------
> Best regards,
> Alexey Bataev
>
> 12.02.2019 16:38, Talita Perciano пишет:
>
> Thanks for your quick response Alexey. I've just tried what you suggested
> and I'm still getting the same error.
>
> Best,
> Talita
>
> On Tue, Feb 12, 2019 at 1:36 PM Alexey Bataev <a.bataev at outlook.com>
> wrote:
>
>> Try to modify target pragma this way
>>
>> #pragma omp target map(from: x[:n]) map(tofrom:y[:n])
>>
>> -------------
>> Best regards,
>> Alexey Bataev
>>
>> 12.02.2019 16:33, Talita Perciano via Openmp-dev пишет:
>>
>> Hi,
>>
>> I'm trying openmp offloading to gpu and I'm getting a segfault when
>> trying to run a test code. I followed the instructions explained here
>> https://www.hahnjo.de/blog/2018/10/08/clang-7.0-openmp-offloading-nvidia.html
>> .
>>
>> Here is the piece of code I'm trying to run:
>>
>> #include <malloc.h>
>> #include <stdio.h>
>> #include <stdlib.h>
>>
>> int main(int argc, char* argv[])
>> {
>>     if (argc != 2)
>>     {
>>         printf("Usage: %s \n", argv[0]);
>>         return 0;
>>     }
>>
>>     int n = atoi(argv[1]);
>>
>>     double* x = (double*)malloc(sizeof(double) * n);
>>     double* y = (double*)malloc(sizeof(double) * n);
>>
>>     double idrandmax = 1.0 / RAND_MAX;
>>     double a = idrandmax * rand();
>>     for (int i = 0; i < n; i++)
>>     {
>>         x[i] = idrandmax * rand();
>>         y[i] = idrandmax * rand();
>>     }
>>     printf("Here\n\n");
>>     #pragma omp target
>>     #pragma omp parallel for
>>     {
>>         for (int i = 0; i < n; i++)
>>             y[i] += a * x[i];
>>     }
>>
>>     double avg = 0.0, min = y[0], max = y[0];
>>     for (int i = 0; i < n; i++)
>>     {
>>         avg += y[i];
>>         if (y[i] > max) max = y[i];
>>         if (y[i] < min) min = y[i];
>>     }
>>
>>     printf("min = %f, max = %f, avg = %f\n", min, max, avg / n);
>>
>>     free(x);
>>     free(y);
>>
>>     return 0;
>> }
>>
>> I'm compiling the code like this: clang -fopenmp -fopenmp-targets=nvptx64
>> -O2 example.c
>> When I run I get a Segmentation fault immediately.
>>
>> Any thoughts?
>>
>> Thanks!
>> Talita
>>
>>
>> _______________________________________________
>> Openmp-dev mailing listOpenmp-dev at lists.llvm.orghttps://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev
>>
>>
>
> --
> Dr. Talita Perciano
> Research Scientist - CRD, Lawrence Berkeley National Laboratory
> Data Analytics & Visualization Group
> Center for Advanced Mathematics for Energy Research Applications
> One Cyclotron Road
> Berkeley, CA 94720
> 059-3034B  M/S 59R3103
> Work: (510) 486-5060
> tperciano at lbl.gov
> http://tperciano.wixsite.com/home
>
>

-- 
Dr. Talita Perciano
Research Scientist - CRD, Lawrence Berkeley National Laboratory
Data Analytics & Visualization Group
Center for Advanced Mathematics for Energy Research Applications
One Cyclotron Road
Berkeley, CA 94720
059-3034B  M/S 59R3103
Work: (510) 486-5060
tperciano at lbl.gov
http://tperciano.wixsite.com/home
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/openmp-dev/attachments/20190212/c720641e/attachment.html>


More information about the Openmp-dev mailing list