Software Archive
Read-only legacy content
17061 Discussions

cilk_spawn inside cilk_for

Meir_F_
Beginner
355 Views

Hi,

For some reason, whenever I have a spawn and sync inside a cilk_for it seems as though the spawn does not get recognized.  I end up getting a compile time error of Expected _Cilk_spawn before _Cilk_sync.  As an example consider the following (overly simple) program:

void foo(){
    cout << "foo";
}

void bar(){
    cout << "bar";
}

void baz(){
    cout << "baz";
}

int main(){
    cilk_for(int i-0; i<10; i++){
        cilk_spawn foo();
        bar();
        cilk_sync;
        baz();
    }
}

 

If I try to compile this I get the above mentioned error.  Does anyone have any idea as to why this might be happening and/or how I can solve it.  (If I move the spawn and sync into a separate helper method it solves the problem, but unfortunately in my real use case it would mean passing a lot of variables by pointer.)  I am using g++ 4.8.1 with cilkplus.

Thanks!

  - Meir

0 Kudos
2 Replies
ARCH_R_Intel
Employee
355 Views

It's a bug in the gcc implementation. icc compiled it without complaint (after I fixed the "int i-0" typo and added the obvious includes/using).  I'll try to get this reported to the code maintainer.

0 Kudos
Igor_Z_Intel
Employee
355 Views

Yes, this looks like a bug in GCC's Cilkplus branch. Unfortunately there are no plans to support separate branches anymnore since now we are integrating Cilk_for support into the GCC trunk (it will be version 5.0) thus all Cilk+ features will be there together. Of course, we will make sure that given test works in the trunk after we finish integration

0 Kudos
Reply