โปรแกรม C++ ของฉันใช้เวลาประมาณ 300 วินาทีในการทำงาน ภายในโปรแกรมของฉัน ฉันต้องหารเวกเตอร์ของฉันด้วย cwis เครื่องวิเคราะห์ VS บอกว่าการดำเนินการนี้ใช้เวลาประมาณ 15% ของเวลาทำงาน นี่คือรหัส:
template <class T> myVector<T> cWisDivide(myVector<T> &vec1,
myVector<T> &vec2)
{
try
{
if (vec1._rows == vec2._rows)
{
myVector<T> result(vec1._rows);
//#pragma omp parallel for
for (int r = 1; r <= vec1._rows; r++)
{
if (vec2(r) != 0)
{
result(r) = vec1(r) / vec2(r);
}
else
{
throw std::runtime_error("");
}
}
return result;
}
}
catch (const exception &e)
{
....
}
}
ฟังก์ชั่นนี้ถูกเรียกหลายครั้ง ถ้าฉันใช้ #pragma ... ก่อนการวนซ้ำ การใช้งาน cpu จะคงอยู่ 100% เป็นเวลาประมาณ 350 วินาที ซึ่งมากกว่าเวลาที่ใช้ในการรันโปรแกรมตามลำดับ
ฉันจะขอบคุณถ้าใครสามารถช่วยฉันในเรื่องนี้
vec1._rows
ใหญ่แค่ไหน? - person Oliver Charlesworth   schedule 08.02.2015r
ในfor
ลูปควรถูกกำหนดก่อนfor
เอง แบบนี้:int r; #pragma.... for(r = 1...)
- person Michał Walenciak   schedule 08.02.2015for
มันบอกว่า: สังเกตว่าตัวนับการวนซ้ำ j และ k จะต้องถูกทำให้เป็นส่วนตัว หากคุณต้องการทำเครื่องหมายบางอย่างเป็นpublic
หรือprivate
จะต้องมีอยู่แล้ว (ดังนั้นจะต้องมองเห็นได้ก่อน#pragma
) - person Michał Walenciak   schedule 08.02.2015