Programa geçerli bir sudoku bulmaca çözümünün verilip verilmediğini test edecek bir program tasarlıyorum. İlk önce C++ 'da tasarladım ama şimdi paralel hale getirmek istiyorum. Program hatasız derler. Bir sudoku bulmaca çözümünün tüm satırlarını doğrulamak için openMP'yi bir C++ işlevine nasıl uygulanır?
Önce bir yapılandırılmış bloğunun içinde bir return ifadesi kullanılarak başa bir yolunu zorunda kaldı. Sadece doğru olarak başlatılan bir dizi dizi yapmaya karar verdim. Ancak bu işlevin çıkışı yanlıştır ve gönderdiğim çözümün gerçek olduğu gerçeğini biliyorum. OpenMP'ye yeni geldim ve birinin bana yardım edip edemeyeceğini merak ediyordum?Bir sorunu duygu benim değişken bir benim diğer değişken nextSudokuNum geri ayarlı alma ile belki de geri ayarlanır ve alma ile var.
bool test_rows(int sudoku[9][9])
{
int i, j, a;
int nextSudokuNum = 1;
bool rowReturn[9];
#pragma omp parallel for private(i)
for(i = 0; i < 9; i++)
{
rowReturn[i] = true;
}
#pragma omp parallel for private(i,j) \
reduction(+: a, nextSudokuNum)
for(i = 0; i < 9; i++)
{
for(j = 0; j < 9; j++)
{
a = 0;
while(sudoku[i][a] != nextSudokuNum) {
a++;
if(a > 9) {
rowReturn[i] = false;
}
}
nextSudokuNum++;
}
nextSudokuNum = 1;
}
for(i = 0; i < 9; i++)
{
if(rowReturn[i] == false) {
cout << "Invalid Sudoku Solution(Next Valid Sudoku Number Not Found)" << endl;
cout << "Check row " << (i+1) << endl;
return false;
}
}
cout << "Valid sudoku rows(Returning true)" << endl;
return true;
}
:
Bu nedenle, yeni kod gibi görünmelidir. Reddetmeyi yanlış okumalıydım. Bir ++ işleminin kaydını tutarken, bu işlemin toplam miktarını takip etmek için azaltmayı kullanmanız gerektiğini düşündüm. Sanırım kitapları tekrar vurmam gerek. Openmp'yi daha iyi anlayabilmem için kullanabileceğim herhangi bir kaynağınız var mı? YouTube videoları veya yardımcı bir makale. Yardımın için teşekkürler! – xTaylorFerg
Redüksiyon ile ilgili anlattığınız şey tam olarak doğru ... * ama sadece farklı süreçler tarafından artırılan paylaşılan değişkenlerde *.Klasik azaltma örneği, dizinin farklı bölümlerinde farklı işlemlerin çalıştığı bir dizinin elemanlarını özetlemeye çalışıyor. – NoseKnowsAll
[Bu kitap] (http://www.amazon.com/Using-OpenMP-Programming-Engineering-Computation/dp/0262533022) çok yararlı buldum, ancak ücretsiz [çevrimiçi dersler] var (https: // computing. llnl.gov/tutorials/openMP/) bu da benim için daha az ulaşılabilir olsa da, yararlıdır. – NoseKnowsAll