Remove Locks

In the Source window, you located the synchronization objects that caused significant waits while the processor cores were underutilized . To resolve the issue, do the following:

  1. Open the code editor.

  2. Modify the code to remove locks.

  3. Recompile the project and check the result.

Open the Code Editor

Note

Depending on the sample code version, your source line numbers may slightly differ from the numbers provided in this tutorial.

Click the Source Editor button to open the nqueens_parallel.f90 file in your default editor:

Remove Locks

The critical section introduced in line 141 protects the global variable from a race condition in a multithreaded application but it spawns a redundant synchronization. To resolve this issue, you may replace the critical section with an atomic operation as follows:

  1. Edit like 141 to replace the OMP CRITICAL with the OMP ATOMIC directive.

  2. Comment out or remove line 143.

  3. Save your changes.

Recompile the Project and Check the Result

  1. From the Build menu, select Rebuild nqueens_parallel.

    The project is rebuilt.

  2. From the Debug menu, select Start Without Debugging to run the application.

    Visual Studio runs the nqueens_parallel.exe. Note that execution time reduced from 46975 ms to 21315 ms.

Key Terms

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.