search for: omp_get_thread_num

Displaying 20 results from an estimated 34 matches for "omp_get_thread_num".

2013 Jun 08
2
Compile error with gfortran-4.6
...oes not occur any problem. When compiling the code in gfortran 4.6, an error message appears. In other compilers the error does not occur. A small example. ## Code in Fortran        subroutine hello()        implicit none        integer :: nthreads, tid        integer :: omp_get_num_threads, omp_get_thread_num        integer :: omp_get_max_threads, omp_set_num_threads        print *, 'Máximo de threads', omp_get_max_threads()        !$omp parallel         tid = omp_get_thread_num()        print *, 'Hello World from thread = ', tid        print *, 'Number of threads =', omp_get_t...
2015 Dec 02
2
clang only spawns one thread
Hi, I am using LLVM 3.6.1 to test the following code: #include <omp.h> #include <stdio.h> #include <stdlib.h> int main() { int tid, nthreads; #pragma omp parallel sections private(nthreads, tid) { #pragma omp section { tid = omp_get_thread_num(); printf("Hello, tid = %d\n ", tid); } #pragma omp section { tid = omp_get_thread_num(); printf("Hello, tid = %d\n ", tid); } } if (tid == 0) { nthreads = omp_get_num_threads(); printf("number of threads = %d \n", nthreads)...
2017 Jan 20
9
[RFC] IR-level Region Annotations
Hi Sanjoy, Yes, that's exactly what we have been looking at recently here, but the region tags seem to make it possible to express the control flow as well, so I think we could start with reg ions+metadata, as Hal and Xinmin proposed, and then figure out what needs to be first class instructions. --Vikram Adve > On Jan 19, 2017, at 11:03 PM, Sanjoy Das <sanjoy at
2017 Jan 21
2
[RFC] IR-level Region Annotations
...> i32* val = alloca i32 > i32* I = alloca 32 > i32* priv_val = alloca i32 > i32* priv_i alloca 32 > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] > > %priv_i = omp_get_thread_num(); > compute_something_into_val(%priv_val, %priv_i); > a[priv_i] = %priv_val; > > llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; > .... > > I = > Val = > Foo(val, i). > } > > "Prepare phase" is our way of minimizing...
2017 Jan 20
5
[RFC] IR-level Region Annotations
...some small changes in optimizer to understand region-annotation intrinsic. > > { void main() { > i32* val = alloca i32 > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(), "QUAL.PRIVATE"(i32* val), "QUAL.NUM_THREADS"(i32 4)] > > int i = omp_get_thread_num(); > compute_something_into_val(val, i); > a[i] = val; > > llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; > } > > With above representation, we can do privatization and outlining as below > > { void main() { > i32* val = alloca i32 > i32...
2017 Feb 01
0
[RFC] IR-level Region Annotations
...> i32* val = alloca i32 > i32* I = alloca 32 > i32* priv_val = alloca i32 > i32* priv_i alloca 32 > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] > > %priv_i = omp_get_thread_num(); > compute_something_into_val(%priv_val, %priv_i); > a[priv_i] = %priv_val; > > llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; > .... > > I = > Val = > Foo(val, i). > } > > "Prepare phase" is our way of minimizing...
2017 Feb 01
2
[RFC] IR-level Region Annotations
...loca i32 >> i32* I = alloca 32 >> i32* priv_val = alloca i32 >> i32* priv_i alloca 32 >> tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] >> >> %priv_i = omp_get_thread_num(); >> compute_something_into_val(%priv_val, %priv_i); >> a[priv_i] = %priv_val; >> >> llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; >> .... >> >> I = >> Val = >> Foo(val, i). >> } >> >> "Prep...
2017 Feb 01
0
[RFC] IR-level Region Annotations
...loca i32 >> i32* I = alloca 32 >> i32* priv_val = alloca i32 >> i32* priv_i alloca 32 >> tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] >> >> %priv_i = omp_get_thread_num(); >> compute_something_into_val(%priv_val, %priv_i); >> a[priv_i] = %priv_val; >> >> llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; >> .... >> >> I = >> Val = >> Foo(val, i). >> } >> >> "Prep...
2017 Feb 01
1
[RFC] IR-level Region Annotations
...2* I = alloca 32 >>> i32* priv_val = alloca i32 >>> i32* priv_i alloca 32 >>> tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] >>> >>> %priv_i = omp_get_thread_num(); >>> compute_something_into_val(%priv_val, %priv_i); >>> a[priv_i] = %priv_val; >>> >>> llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; >>> .... >>> >>> I = >>> Val = >>> Foo(val, i). >&g...
2017 Jan 20
3
[RFC] IR-level Region Annotations
...gt;> understand region-annotation intrinsic. >> >> { void main() { >> i32* val = alloca i32 >> tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(), >> "QUAL.PRIVATE"(i32* val), "QUAL.NUM_THREADS"(i32 4)] >> >> int i = omp_get_thread_num(); >> compute_something_into_val(val, i); >> a[i] = val; >> >> llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; >> } >> >> With above representation, we can do privatization and outlining as below >> >> { void main() { >...
2013 Jun 08
0
Compile error gfortran-4.6
...oes not occur any problem. When compiling the code in gfortran 4.6, an error message appears. In other compilers the error does not occur. A small example. ## Code in Fortran        subroutine hello()        implicit none        integer :: nthreads, tid        integer :: omp_get_num_threads, omp_get_thread_num        integer :: omp_get_max_threads, omp_set_num_threads        print *, 'Máximo de threads', omp_get_max_threads()        !$omp parallel         tid = omp_get_thread_num()        print *, 'Hello World from thread = ', tid        print *, 'Number of threads =', omp_get_t...
2017 Feb 01
0
[RFC] IR-level Region Annotations
...;>>> i32* priv_val = alloca i32 >>>> i32* priv_i alloca 32 >>>> tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] >>>> >>>> %priv_i = omp_get_thread_num(); >>>> compute_something_into_val(%priv_val, %priv_i); >>>> a[priv_i] = %priv_val; >>>> >>>> llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; >>>> .... >>>> >>>> I = >>>> Val = &...
2017 Feb 01
2
[RFC] IR-level Region Annotations
...108997.html — Mehdi { void main() { i32* val = alloca i32 i32* I = alloca 32 i32* priv_val = alloca i32 i32* priv_i alloca 32 tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] %priv_i = omp_get_thread_num(); compute_something_into_val(%priv_val, %priv_i); a[priv_i] = %priv_val; llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; .... I = Val = Foo(val, i). } "Prepare phase" is our way of minimizing the impact to existing optimizations. Xinmin -----Original Message-----...
2017 Feb 01
1
[RFC] IR-level Region Annotations
...izer to understand region-annotation intrinsic. >> >> { void main() { >> i32* val = alloca i32 >> tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(), >> "QUAL.PRIVATE"(i32* val), "QUAL.NUM_THREADS"(i32 4)] >> >> int i = omp_get_thread_num(); >> compute_something_into_val(val, i); >> a[i] = val; >> >> llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; >> } >> >> With above representation, we can do privatization and outlining as >> below >> >> { void mai...
2017 Feb 01
0
[RFC] IR-level Region Annotations
...() { > i32* val = alloca i32 > i32* I = alloca 32 > i32* priv_val = alloca i32 > i32* priv_i alloca 32 > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] > > %priv_i = omp_get_thread_num(); > compute_something_into_val(%priv_val, %priv_i); > a[priv_i] = %priv_val; > > llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; > .... > > I = > Val = > Foo(val, i). > } > > "Prepare phase" is our way of minimizing the im...
2017 Feb 01
2
[RFC] IR-level Region Annotations
...108997.html — Mehdi { void main() { i32* val = alloca i32 i32* I = alloca 32 i32* priv_val = alloca i32 i32* priv_i alloca 32 tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] %priv_i = omp_get_thread_num(); compute_something_into_val(%priv_val, %priv_i); a[priv_i] = %priv_val; llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; .... I = Val = Foo(val, i). } "Prepare phase" is our way of minimizing the impact to existing optimizations. Xinmin -----Original Message-----...
2017 Feb 01
2
[RFC] IR-level Region Annotations
...() { > i32* val = alloca i32 > i32* I = alloca 32 > i32* priv_val = alloca i32 > i32* priv_i alloca 32 > tok = llvm.experimental.intrinsic_a()[ "DIR.PARALLEL"(),"QUAL.PRIVATE"(i32* %priv_val, i32 %priv_i), "QUAL.NUM_THREADS"(i32 4)] > > %priv_i = omp_get_thread_num(); > compute_something_into_val(%priv_val, %priv_i); > a[priv_i] = %priv_val; > > llvm.experimental.intrinsic_b(tok)["DIR.END.PARALLEL"()]; > .... > > I = > Val = > Foo(val, i). > } > > "Prepare phase" is our way of minimizing the im...
2019 Feb 01
2
Set the number of threads using openmp with .Fortran?
...:: iso_c_binding, only : c_double, c_int integer(c_int), intent(in) :: ncores integer :: iam ! Specify number of threads to use: !$call omp_set_num_threads(ncores) !$omp parallel private(iam) iam=omp_get_thread_num() !$omp critical write(*,*) 'Hello from', iam !$omp end critical !$omp end parallel end subroutine hello end module hello_openmp *and this is my R function:* #'@export #'@useDynLib helloOpenMP, .registration = TRUE hello <- function(ncores=4) { .Fortran("hello...
2015 Oct 11
2
How to add NOP?
Can you send the IR you are using? Volkan On Thu, Oct 8, 2015 at 6:28 AM Erdem Derebaşoğlu < erdemderebasoglu at hotmail.com> wrote: > Thanks. I enabled my pass. I have one resolved issue though: > MachineMemOperand::getAddrSpace() always returns zero. How can I use it to > distinguish private memory accesses? > > Erdem > > ------------------------------ > From:
2007 Nov 29
2
[LLVMdev] LLVM and OpenMP
...* %sum, align 4 ; <i32> [#uses=1] %tmp5 = call i32 (i8*, ...)* @printf( i8* getelementptr ([10 x i8]* @.str, i32 0, i32 0), i32 %tmp3 ) nounwind $ ret i32 undef } define internal void @main.omp_fn.0(i8* %.omp_data_i) { entry: %tmp1 = tail call i32 (...)* @omp_get_thread_num( ) ; <i32> [#uses=1] %tmp3 = bitcast i8* %.omp_data_i to i32** ; <i32**> [#uses=1] %tmp4 = load i32** %tmp3, align 4 ; <i32*> [#uses=1] %tmp45 = bitcast i32* %tmp4 to i8* ; <i8*> [#uses=1] %...