Компилиране с cxxptl / настройки / среди

Ако сте свалили версиите на проекта от ревизия 300 или нагоре (които отразяват промените от лекция #13, т.е. включват паралелизацията), ще ви трябва да добавите и библиотеката CXXPTL при компилация на проекта. Ето инструкции как да направите това:

::Visual Studio::

1. Свалете си този файл и го сложете в SDK директорията си (ако subst-а ви е активен, директно го сложете в K:\)
2. Десен бутон върху архива -> "Extract here". Ще се появи директория cxxptl, в която ще има сорсовете и компилирана статична библиотека libcxxptl.lib. Т.е. след тази стъпка трябва да може да виждате следния файл: К:\cxxptl\cxxptl.h
3. (опц) Ако сте си сваляли и работили върху fmiray проекта преди, изтриите вашите .vcproj/.sln файлове и ги регенерирайте отново от .dsp-то (т.е. отворете пак .dsp-то с Visual Studio и му разрешете да ви конвертира проекта до текущата версия на Visual Studio-то)

В проекта ще видите 4 конфигурации - Debug, Debug Single-threaded, Release и Release Single-threaded. Разликата между тях е, че Debug и Release ползват CXXPTL и оползотворяват всички ядра/процесори по подразбиране, докато Debug Single-threaded и Release Single-threaded не линкват с CXXPTL и си работят по стария начин, само с една нишка. Разбира се, нищо не пречи да работите с една нишка и в Release режим, като в GlobalSettings на сценовия файл укажете параметър "NUMTHREADS 1"
Една препоръчителна оптимизация: От Project->Properties->C++->Code generation, в полето "Enable Enhanced Instruction Set" задайте "SSE2", а в "Floating point model" (ако го имате) задайте "fast" (това са част от оптимизациите, които споменахме на лекция 13).

::Dev-C++::

1. Свалете си този файл и го разархивирайте някъде. В него има 3 файла: readme със инструкции за инсталация, един хедър (cxxptl.h) и една статична библиотека (libcxxptl.a).
2. cxxptl.h копирайте в include поддиректорията на Dev-C++ инсталацията ви. Например, ако Dev-C++ е инсталирано в C:\Dev-CPP, то копирайте този файл в C:\Dev-CPP\include
3. libcxxptl.a копирайте в lib поддиректорията на Dev-C++. По аналогия с горния пример, сложете файла в C:\Dev-CPP\lib
4. Това е всичко - проектът вече трябва да се компилира успешно.

При Dev-C++ също можете да си поиграете с опциите на компилатора с цел да генерира по-бърз код.

::Linux & OS X::

Независимо каква среда за разработка ползвате, инсталирането на cxxptl под Unix-like системи е идентично.

1. Отворете терминал и в него напишете следните команди:

svn co https://fract.svn.sourceforge.net/svnroot/fract/cxxptl
cd cxxptl
make
sudo make install

2. С това инсталацията на cxxptl е готова. Прекомпилирайте проекта и той би трябвало вече да ползва всички процесори в системата.

::Компилиране от сорсовете::

CXXPTL е open-source библиотека и е тривиално да се компилира от сорсовете си. Проблемът под Windows идва по-скоро от това, че ви трябва GNU make за да ползвате Makefile-а на проекта. Стъпките за Microsoft Visual Studio са следните:

1. Отворете "Visual studio command prompt" (Start->All Programs->Microsoft Visual Studio XXXX->Visual Studio Tools->Visual Studio XXX command prompt). С помощта на командата cd идете до директорията, в която сте изтеглили сорс-кода на CXXPTL;
2. Трябва да имате GNU make в изпълнимия път; Mingw32 предлага GNU make, а самото mingw32 идва заедно с Dev-C++, така че най-лесният начин тук е да ползваме make-то, което идва с Dev-C++. То се намира в bin/ поддиректорията на Dev-C++; за да добавите тази поддиректория към PATH, въведете в терминала следната команда:

PATH=%PATH%;C:\Dev-CPP\bin

(тук приемам, че Dev-C++ е инсталирано в C:\Dev-CPP; заместете с правилния път, ако е необходимо).

3. Пуснете командата "make"
4. В резултат трябва да ви се появи libcxxptl.lib

Ако се сблъскате с проблеми, съобщавайте, да ги отстраним своевременно.