2
我是OpenMP的新手。我試圖使用for循環的多個核心,但我得到這個編譯錯誤:OpenMP - OpenMP中的索引變量'for'語句必須具有帶符號整數類型
「錯誤C3016:'x':索引變量在'OpenMP'爲'語句必須有符號整數類型」。
我知道與Microsoft Visual Studio 2010(我正在使用的)標準的OpenMP 2.0,由於某些原因不支持無符號數據類型,但我不相信我有任何未簽名的數據類型在此使用循環。
這裏是我的代碼看起來像:
可變Declerations:
struct Vertex
{
float x, y;
};
FractalGenerator::Vertex FractalGenerator::_fracStart;
FractalGenerator::Vertex FractalGenerator::_fracEnd;
float FractalGenerator::_pointPrecision = 0.008f;
float FractalGenerator::_scaleFactor = 1;
For循環:
float _fracStep = _pointPrecision/_scaleFactor;
#pragma omp parallel for
for (float x = _fracStart.x; x < _fracEnd.x; x += _fracStep)
{
for (float y = _fracStart.y; y < _fracEnd.y; y += _fracStep)
{
看起來你是對的。哇,這是一個無賴。看起來我必須找到一個不同的並行編程API。謝謝! – arnm
有一種方法可能是將浮點值累加起來,這樣就可以使用整數,然後在循環內進行分割。浮點差距在性能方面並不可怕,所以如果你有足夠的處理器,它應該會給你一個很好的提升。 –
@cstuts,你可以使用OpenMP,只是迭代'currentStep'變量,而不是'x',其中'x = _fracStart.x + currentStep * _fracStep' – Lol4t0