Mac Pro Core i7

Hardware: Dual quad-core Intel Xeon x64 "Nehalem" (each core with 2 hyper-threads) = 16 processors, sharing 26 GB RAM

Software: Windows Server 2008 R2 (=Windows 7), MS Visual Studio 2010 Ultimate, Intel C++ compilers 16.0, Intel Parallel Studio XE 2016, Intel MKL, IPP, and TBB libraries

  • Intel C/C++ compiler doc: Go to Help > Intel Compilers and Libraries > Intel C++ Compiler Documentation
  • Parallel Studio sample programs: C:\Program Files (x86)\Intel\Composer XE\Samples\en_US
  • Netbeans: You may wish to develop your Java assignment using this popular IDE.
  • Access:

  • You're going to use your UofG user ID, but you'll be told a password that you have to change the first time you login. Be prepared with one that meets the fussy criteria, because there is a timeout: 7+ characters, 3 of 4 categories {lowercase, uppercase, digits, special characters}, and it won't let you use parts of your user ID or name.
  • If you run into any "domain" problem, prefix your user ID with "LOCKHART\" which specifies the machine itself, e.g., LOCKHART\moi.
  • On any Windows box, go to Programs > Accessories > Remote Desktop Connection, then log in.
  • On a Sun Ray, you may also first start a Windows session, then follow the above. (Sun Ray Linux sessions don't have a working RDP client. There is a 3090 icon on the kiosk screen, but it doesn't work.)
  • On one of our lab Macs, open Applications > Remote Desktop Connection.
  • On your own Linux box, install an RDP (Remote Desktop Protocol) client such as rdesktop, and use that.
  • Off campus: Remember that you have to start the Cisco VPN client first, or the RDP connection will fail!
  • You can only have one lockhart Windows Server session at a time. So, if you "disconnect" yourself in Windows, your session will be suspended until you connect again. Closing an RDP client window will also do a disconnect; it will not log you off.

    Please note! In Remote Desktop terms, "disconnecting" is very different from "logging off": only the latter actually terminates your session, while disconnecting leaves it running. Sometimes the operator will request you to "log off" in order to do some system maintenance. In that case, please do not simply disconnect! If you disconnect and leave your session running, the operator will have to kill it.

    This is a high-end shared-memory (SMP) multiprocessor, ideal for POSIX threads and OpenMP jobs. It was recently upgraded with more than double the RAM. Parallel Studio has a node-locked license.

    It is not practical to run CUDA programs on lockhart's NVIDIA graphics processor unit (GPU) because you require exclusive control over the attached monitor. Please run GPU programs on another computer. The instructor will be happy to give you an account on a Linux research machine for that purpose.

    How to run pthreads programs, both Win32 and x64

    Since Windows does not support POSIX threads natively, we use a third-party package (see Public Documents = C:\Users\Public\Documents\win32 and win64) that converts the <pthread.h> API to Windows threads. The package originates from [ sourceware.org ]. You can download it directly from svn.blender.org/svnroot/bf-blender/trunk/lib/{windows,win64}/pthreads.

    First, when you create a new Visual Studio project, follow these steps:

  • 1. On the main page, click on New Project. Make sure that the "location" is going onto your My Documents\Visual Studio 2010\Projects directory). Whatever "location" is shown here is going to get a new subdirectory with the project name, regardless whether you check "Create directory for solution" or not.
  • 2. Under Installed Templates select Visual C++ > General > Empty, which avoids dragging in all the Windows API components. Enter the project name, and unclick "Create directory for solution" (unless you want it to create another level of folders).
  • 3. In the Solution Explorer panel, select the project name (not the solution name, which is the top-level container for the project).
  • 4. Under the Project menu, select Intel Compiler > Use Intel C++. Then click on the Properties button and check the Configuration Properties under General to confirm that Platform Toolset is really set to Intel C++ Compiler 16.0. This will insure that you are compiling with the Intel compiler, which is most compatible with the Amplifier and Inspector tools.
  • Now, follow these steps to configure Visual Studio to find this package. The relevant settings are all in the project's Configuration Properties. You should repeat the steps for each configuration (combo of Debug/Release + Win32/x64). TIP: If you think you are going to use the Release configuration later, you can save having to change these properties again on its pages: Before changing any properties, switch the Configuration setting from "Active(Debug)" to "All Configurations", then you will only need to change the properties one time.

    If you miss any, there will be compile, link, or execution errors due to not finding the include file, the library, or the DLL, respectively. Click Apply before you go onto the next page.

  • 5. Debugging > Environment: PATH=C:\Users\Public\Documents\win32 (or 64)\lib;%PATH% . This tells where the DLL is found at execution time. You need to add ";%PATH%" otherwise this change to the path will hide any other DLLs needed by the program. Setting the following line, Merge Environment, to "Yes" is supposed to take care of that, but it doesn't seem to work.
  • 6. C/C++ > General > Additional Include Dirs: C:\Users\Public\Documents\win32 (or 64) \include
  • 7. Linker > General > Additional Library Dirs: C:\Users\Public\Documents\win32 (or 64) \lib
  • 8. Linker > Input > Additional Dependencies: pthreadVC2.lib . Pull down <Edit...> and type the library into the text box.
  • NOTE: If you are building a command line application (to run in a shell), and you want to hold the shell open when the program exits, this setting is more convenient than prompting for user input:

  • Linker > System > SubSystem: select Console
  • Finally, to ensure that the threads are scheduled onto invididual cores by the OS (rather than taking turns on a single core assigned to the entire process), you should explicitly set a thread scheduling attribute (PTHREAD_SCOPE_SYSTEM) as shown in lines 26, 30, 31, and 47 in the book's Fig. 6.16 program.