2016-10-19 2 views
0

Kompilieren Ich habe das folgende Stück Code, iTBB Fehler beim

#include <iostream> 
#include <cstring> 
#include "tbb/tbb.h" 

using namespace std; 
using namespace tbb; 

class Accumulate{ 
    float& arr; 
    float* src; 

    public: 
    Accumulate(float& _arr, float* _src) 
    :arr(_arr), src(_src){} 
    void operator() (int i) const{ 
     arr += src[i]; 
    } 

}; 

int main(int argc, const char * argv[]) { 
    float arr[4] = {1,3,9,27}; 
    float sum = 0; 
    parallel_for(0, 4, Accumulate(sum, arr)); 
    cout<< sum << endl; 
} 

I Verwendung von parllel_for zu machen versuchen auszuführen versuchen die Summe zu berechnen, und dies erfordert die TBB-Bibliothek. Ich habe das Quell-tbb-Verzeichnis heruntergeladen und in mein xcode-Projektverzeichnis eingefügt.

Wenn ich versuche, den obigen Code zu kompilieren, ich scheine die folgenden Fehler ‚TBB/intern/_flow_graph_types_impl.h‘ Datei nicht

ich bin fehlen, bitte rät ich bin nicht sicher, was gefunden zu bekommen

Antwort

3

kann ich diese Datei in TBB Repo sehen: https://github.com/01org/tbb/blob/tbb_2017/include/tbb/internal/_flow_graph_types_impl.h

Bitte stellen Sie sicher, dass Ihre Installation von TBB nicht beschädigt wird.

Off-topic Beratung gibt es ein Datum Rennen in Ihrem Programm ist auf sum und Sie können Lambda statt expliziten Funktors verwenden:

int main(int argc, const char * argv[]) { 
    float arr[4] = {1,3,9,27}; 
    atomic<float> sum = 0; // fixing data-race. Still, it's not recommended way 
    parallel_for(0, 4, [&](int i){ 
     sum += arr[i]; 
    }); 
    cout<< sum << endl; 
} 

Siehe auch tbb::parallel_reduce, um diesen Code korrekt, sauber zu machen, und effizient.