-
Notifications
You must be signed in to change notification settings - Fork 49
Бражников Е.А. ЛР№2 Умножение плотных матриц. Элементы типа double. Блочная схема, алгоритм Фокса. OpenMP. #148
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 10 commits
0408623
e3fe768
c0d35a1
1a58a48
dc97e6b
ebebc56
8f9847a
a6e8116
96d5a08
8079238
c85fee9
2f21cf9
4c8a9f0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| Source.cpp | ||
| c1xx : error C2338: двухэтапный поиск имен не поддерживается для C++/CLI, C++/CX или OpenMP. Используйте /Zc:twoPhase- | ||
| c1xx : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| �� |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| #TargetFrameworkVersion=v4.0:PlatformToolSet=v142:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0 | ||
| Debug|Win32|C:\App\CProjects\OpenMP\| |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| | ||
| Microsoft Visual Studio Solution File, Format Version 12.00 | ||
| # Visual Studio Version 16 | ||
| VisualStudioVersion = 16.0.29613.14 | ||
| MinimumVisualStudioVersion = 10.0.40219.1 | ||
| Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OpenMP", "OpenMP.vcxproj", "{1B1C8D32-78CD-45DF-9974-696CB25F6C82}" | ||
| EndProject | ||
| Global | ||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
| Debug|x64 = Debug|x64 | ||
| Debug|x86 = Debug|x86 | ||
| Release|x64 = Release|x64 | ||
| Release|x86 = Release|x86 | ||
| EndGlobalSection | ||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
| {1B1C8D32-78CD-45DF-9974-696CB25F6C82}.Debug|x64.ActiveCfg = Debug|x64 | ||
| {1B1C8D32-78CD-45DF-9974-696CB25F6C82}.Debug|x64.Build.0 = Debug|x64 | ||
| {1B1C8D32-78CD-45DF-9974-696CB25F6C82}.Debug|x86.ActiveCfg = Debug|Win32 | ||
| {1B1C8D32-78CD-45DF-9974-696CB25F6C82}.Debug|x86.Build.0 = Debug|Win32 | ||
| {1B1C8D32-78CD-45DF-9974-696CB25F6C82}.Release|x64.ActiveCfg = Release|x64 | ||
| {1B1C8D32-78CD-45DF-9974-696CB25F6C82}.Release|x64.Build.0 = Release|x64 | ||
| {1B1C8D32-78CD-45DF-9974-696CB25F6C82}.Release|x86.ActiveCfg = Release|Win32 | ||
| {1B1C8D32-78CD-45DF-9974-696CB25F6C82}.Release|x86.Build.0 = Release|Win32 | ||
| EndGlobalSection | ||
| GlobalSection(SolutionProperties) = preSolution | ||
| HideSolutionNode = FALSE | ||
| EndGlobalSection | ||
| GlobalSection(ExtensibilityGlobals) = postSolution | ||
| SolutionGuid = {6C4D8EEB-51FE-4154-99E4-CDCA1A9EC6A1} | ||
| EndGlobalSection | ||
| EndGlobal |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,154 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
| <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
| <ItemGroup Label="ProjectConfigurations"> | ||
| <ProjectConfiguration Include="Debug|Win32"> | ||
| <Configuration>Debug</Configuration> | ||
| <Platform>Win32</Platform> | ||
| </ProjectConfiguration> | ||
| <ProjectConfiguration Include="Release|Win32"> | ||
| <Configuration>Release</Configuration> | ||
| <Platform>Win32</Platform> | ||
| </ProjectConfiguration> | ||
| <ProjectConfiguration Include="Debug|x64"> | ||
| <Configuration>Debug</Configuration> | ||
| <Platform>x64</Platform> | ||
| </ProjectConfiguration> | ||
| <ProjectConfiguration Include="Release|x64"> | ||
| <Configuration>Release</Configuration> | ||
| <Platform>x64</Platform> | ||
| </ProjectConfiguration> | ||
| </ItemGroup> | ||
| <PropertyGroup Label="Globals"> | ||
| <VCProjectVersion>16.0</VCProjectVersion> | ||
| <ProjectGuid>{1B1C8D32-78CD-45DF-9974-696CB25F6C82}</ProjectGuid> | ||
| <RootNamespace>OpenMP</RootNamespace> | ||
| <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> | ||
| </PropertyGroup> | ||
| <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | ||
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | ||
| <ConfigurationType>Application</ConfigurationType> | ||
| <UseDebugLibraries>true</UseDebugLibraries> | ||
| <PlatformToolset>v142</PlatformToolset> | ||
| <CharacterSet>Unicode</CharacterSet> | ||
| </PropertyGroup> | ||
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||
| <ConfigurationType>Application</ConfigurationType> | ||
| <UseDebugLibraries>false</UseDebugLibraries> | ||
| <PlatformToolset>v142</PlatformToolset> | ||
| <WholeProgramOptimization>true</WholeProgramOptimization> | ||
| <CharacterSet>Unicode</CharacterSet> | ||
| </PropertyGroup> | ||
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||
| <ConfigurationType>Application</ConfigurationType> | ||
| <UseDebugLibraries>true</UseDebugLibraries> | ||
| <PlatformToolset>v142</PlatformToolset> | ||
| <CharacterSet>Unicode</CharacterSet> | ||
| </PropertyGroup> | ||
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||
| <ConfigurationType>Application</ConfigurationType> | ||
| <UseDebugLibraries>false</UseDebugLibraries> | ||
| <PlatformToolset>v142</PlatformToolset> | ||
| <WholeProgramOptimization>true</WholeProgramOptimization> | ||
| <CharacterSet>Unicode</CharacterSet> | ||
| </PropertyGroup> | ||
| <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||
| <ImportGroup Label="ExtensionSettings"> | ||
| </ImportGroup> | ||
| <ImportGroup Label="Shared"> | ||
| </ImportGroup> | ||
| <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||
| <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||
| </ImportGroup> | ||
| <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||
| <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||
| </ImportGroup> | ||
| <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||
| <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||
| </ImportGroup> | ||
| <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||
| <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||
| </ImportGroup> | ||
| <PropertyGroup Label="UserMacros" /> | ||
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||
| <LinkIncremental>true</LinkIncremental> | ||
| </PropertyGroup> | ||
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||
| <LinkIncremental>true</LinkIncremental> | ||
| </PropertyGroup> | ||
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||
| <LinkIncremental>false</LinkIncremental> | ||
| </PropertyGroup> | ||
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||
| <LinkIncremental>false</LinkIncremental> | ||
| </PropertyGroup> | ||
| <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||
| <ClCompile> | ||
| <WarningLevel>Level3</WarningLevel> | ||
| <SDLCheck>true</SDLCheck> | ||
| <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
| <ConformanceMode>true</ConformanceMode> | ||
| <OpenMPSupport>true</OpenMPSupport> | ||
| <AdditionalOptions>/Zc:twoPhase- %(AdditionalOptions)</AdditionalOptions> | ||
| </ClCompile> | ||
| <Link> | ||
| <SubSystem>Console</SubSystem> | ||
| <GenerateDebugInformation>true</GenerateDebugInformation> | ||
| </Link> | ||
| </ItemDefinitionGroup> | ||
| <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | ||
| <ClCompile> | ||
| <WarningLevel>Level3</WarningLevel> | ||
| <SDLCheck>true</SDLCheck> | ||
| <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
| <ConformanceMode>true</ConformanceMode> | ||
| <OpenMPSupport>true</OpenMPSupport> | ||
| <AdditionalOptions>/Zc:twoPhase- %(AdditionalOptions)</AdditionalOptions> | ||
| </ClCompile> | ||
| <Link> | ||
| <SubSystem>Console</SubSystem> | ||
| <GenerateDebugInformation>true</GenerateDebugInformation> | ||
| </Link> | ||
| </ItemDefinitionGroup> | ||
| <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||
| <ClCompile> | ||
| <WarningLevel>Level3</WarningLevel> | ||
| <FunctionLevelLinking>true</FunctionLevelLinking> | ||
| <IntrinsicFunctions>true</IntrinsicFunctions> | ||
| <SDLCheck>true</SDLCheck> | ||
| <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
| <ConformanceMode>true</ConformanceMode> | ||
| <OpenMPSupport>true</OpenMPSupport> | ||
| <AdditionalOptions>/Zc:twoPhase- %(AdditionalOptions)</AdditionalOptions> | ||
| </ClCompile> | ||
| <Link> | ||
| <SubSystem>Console</SubSystem> | ||
| <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||
| <OptimizeReferences>true</OptimizeReferences> | ||
| <GenerateDebugInformation>true</GenerateDebugInformation> | ||
| </Link> | ||
| </ItemDefinitionGroup> | ||
| <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | ||
| <ClCompile> | ||
| <WarningLevel>Level3</WarningLevel> | ||
| <FunctionLevelLinking>true</FunctionLevelLinking> | ||
| <IntrinsicFunctions>true</IntrinsicFunctions> | ||
| <SDLCheck>true</SDLCheck> | ||
| <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
| <ConformanceMode>true</ConformanceMode> | ||
| <OpenMPSupport>true</OpenMPSupport> | ||
| <AdditionalOptions>/Zc:twoPhase- %(AdditionalOptions)</AdditionalOptions> | ||
| </ClCompile> | ||
| <Link> | ||
| <SubSystem>Console</SubSystem> | ||
| <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||
| <OptimizeReferences>true</OptimizeReferences> | ||
| <GenerateDebugInformation>true</GenerateDebugInformation> | ||
| </Link> | ||
| </ItemDefinitionGroup> | ||
| <ItemGroup> | ||
| <ClCompile Include="Source.cpp" /> | ||
| </ItemGroup> | ||
| <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||
| <ImportGroup Label="ExtensionTargets"> | ||
| </ImportGroup> | ||
| </Project> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
| <ItemGroup> | ||
| <Filter Include="Исходные файлы"> | ||
| <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> | ||
| <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> | ||
| </Filter> | ||
| <Filter Include="Файлы заголовков"> | ||
| <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> | ||
| <Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions> | ||
| </Filter> | ||
| <Filter Include="Файлы ресурсов"> | ||
| <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> | ||
| <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> | ||
| </Filter> | ||
| </ItemGroup> | ||
| <ItemGroup> | ||
| <ClCompile Include="Source.cpp"> | ||
| <Filter>Файлы ресурсов</Filter> | ||
| </ClCompile> | ||
| </ItemGroup> | ||
| </Project> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
| <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
| <PropertyGroup /> | ||
| </Project> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| Source.cpp | ||
| c1xx : error C2338: двухэтапный поиск имен не поддерживается для C++/CLI, C++/CX или OpenMP. Используйте /Zc:twoPhase- | ||
| c1xx : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| �� |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| #TargetFrameworkVersion=v4.0:PlatformToolSet=v142:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0 | ||
| Release|Win32|C:\App\CProjects\OpenMP\| |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,139 @@ | ||
| #include <iostream> | ||
| #include <omp.h> | ||
| #include <ctime> | ||
| #include <random> | ||
|
|
||
| using namespace std; | ||
|
|
||
| void PrintMatrix(double* matrix, int N) { | ||
|
|
||
| int M = N; | ||
| for (int i = 0; i < N; i++) { | ||
| for (int j = 0; j < M; j++) | ||
| { | ||
| cout << matrix[i * M + j] << " "; | ||
| for (int k = 0; k < (5 - log10((double)(matrix[i * M + j]))); k++) | ||
| cout << " "; | ||
| } | ||
| cout << endl; | ||
| } | ||
| cout << endl; | ||
| } | ||
|
|
||
| void MatrixCreate(double* A, double* B, double* C, double *CSeq, int size) { | ||
| for (int i = 0; i < size * size; ++i) { | ||
| A[i] = rand() % 10 + 1; | ||
| B[i] = rand() % 10 + 1; | ||
| C[i] = 0; | ||
| CSeq[i] = 0; | ||
| } | ||
| } | ||
|
|
||
| void Multiplication(double* Ablock, double* Bblock, double* Cblock, int _blockSize) | ||
| { | ||
| double temp; | ||
| for (int i = 0; i < _blockSize; i++) | ||
| for (int j = 0; j < _blockSize; j++) { | ||
| temp = 0; | ||
| for (int k = 0; k < _blockSize; k++) | ||
| temp += Ablock[i * _blockSize + k] * Bblock[k * _blockSize + j]; | ||
| Cblock[i * _blockSize + j] += static_cast<int>(temp * 100) / 100; | ||
| } | ||
| } | ||
|
|
||
| void SequentialAlgorithm(double* A, double* B, double* C, int size) { | ||
| for (int i = 0; i < size * size; ++i) | ||
| C[i] = 0; | ||
| Multiplication(A, B, C, size); | ||
| } | ||
|
|
||
| void Fox(double* A, double* B, double* C, int size, int procNum) { | ||
| int Grid = int(sqrt(procNum)); | ||
| int BlockSize = size / Grid; | ||
| omp_set_num_threads(procNum); | ||
| #pragma omp parallel | ||
| { | ||
| int numThreads = omp_get_thread_num(); | ||
| int RowIndex = numThreads / Grid; | ||
| int ColIndex = numThreads % Grid; | ||
| for (int iter = 0; iter < Grid; iter++) | ||
| { | ||
| for (int i = RowIndex * BlockSize; i < (RowIndex + 1) * BlockSize; i++) | ||
| { | ||
| for (int j = ColIndex * BlockSize; j < (ColIndex + 1) * BlockSize; j++) | ||
| { | ||
| for (int k = iter * BlockSize; k < (iter + 1) * BlockSize; k++) | ||
| { | ||
| C[i * size + j] += A[i * size + k] * B[k * size + j]; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } //pragma parallel | ||
| } | ||
|
|
||
| int main(int argc, char* argv[]) | ||
| { | ||
| double* A; | ||
| double* B; | ||
| double* CSeq; | ||
| double* CFox; | ||
|
|
||
| double StartFoxAlg = 0, FinFoxAlg = 0, StartSeqAlg = 0, FinSeqAlg = 0; //����� | ||
|
|
||
| int size = 16; //������ ������� | ||
| int procNum = 4; //���������� ��������� | ||
| int BlockSize = int(sqrt(procNum)); //������ ����� | ||
|
|
||
| if (BlockSize * BlockSize == procNum && size % BlockSize == 0) { | ||
|
|
||
|
|
||
| //������������� | ||
| A = new double[size * size]; | ||
| B = new double[size * size]; | ||
| CSeq = new double[size * size]; | ||
| CFox = new double[size * size]; | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Память из-под матриц нигде не освобождается. |
||
| MatrixCreate(A, B, CFox, CSeq,size); | ||
| // | ||
|
|
||
| //����� �� ����� | ||
| if (size < 30) { | ||
| cout << "Matrix A" << endl; | ||
| PrintMatrix(A, size); | ||
| cout << "Matrix B" << endl; | ||
| PrintMatrix(B, size); | ||
| } | ||
| // | ||
|
|
||
| //FoxAlgPar | ||
| if (procNum != 1) { | ||
| StartFoxAlg = omp_get_wtime(); //omp_get_wtime (); | ||
| Fox(A, B, CFox, size, procNum); | ||
| FinFoxAlg = omp_get_wtime(); | ||
| } | ||
| // | ||
|
|
||
| //FoxAlgSeq | ||
| StartSeqAlg = omp_get_wtime(); //omp_get_wtime (); | ||
| SequentialAlgorithm(A, B, CSeq, size); | ||
| FinSeqAlg = omp_get_wtime(); | ||
| // | ||
|
|
||
| //����� �� ����� | ||
| if (size < 30) { | ||
| cout << "Parallel Alg " << endl; | ||
| PrintMatrix(CFox, size); | ||
| } | ||
| if (size < 30) { | ||
| cout << "Seq Alg " << endl; | ||
| PrintMatrix(CSeq, size); | ||
| } | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Надо сделать автоматическое поэлементное сравнение результатов работы последовательного и параллельного алгоритмов, а не просто вывод результатов. |
||
| cout << "time of parallel alg is " << (FinFoxAlg - StartFoxAlg) << endl; | ||
| cout << "time of seq alg is " << (FinSeqAlg - StartSeqAlg) << endl; | ||
| // | ||
| } | ||
| else | ||
| { | ||
| cout << "Error" << endl; | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| d:\app\cprojects\openmp\x64\debug\vc142.pdb | ||
| d:\app\cprojects\openmp\x64\debug\vc142.idb | ||
| d:\app\cprojects\openmp\x64\debug\source.obj | ||
| d:\app\cprojects\openmp\x64\debug\openmp.exe | ||
| d:\app\cprojects\openmp\x64\debug\openmp.ilk | ||
| d:\app\cprojects\openmp\x64\debug\openmp.pdb | ||
| d:\app\cprojects\openmp\x64\debug\openmp.tlog\cl.command.1.tlog | ||
| d:\app\cprojects\openmp\x64\debug\openmp.tlog\cl.read.1.tlog | ||
| d:\app\cprojects\openmp\x64\debug\openmp.tlog\cl.write.1.tlog | ||
| d:\app\cprojects\openmp\x64\debug\openmp.tlog\link.command.1.tlog | ||
| d:\app\cprojects\openmp\x64\debug\openmp.tlog\link.read.1.tlog | ||
| d:\app\cprojects\openmp\x64\debug\openmp.tlog\link.write.1.tlog |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| Source.cpp | ||
| D:\App\CProjects\OpenMP\Source.cpp(61,11): warning C4244: инициализация: преобразование "double" в "int", возможна потеря данных | ||
| D:\App\CProjects\OpenMP\Source.cpp(96,16): warning C4244: инициализация: преобразование "double" в "int", возможна потеря данных | ||
| OpenMP.vcxproj -> D:\App\CProjects\OpenMP\x64\Debug\OpenMP.exe |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.25.28610:TargetPlatformVersion=10.0.18362.0: | ||
| Debug|x64|D:\App\CProjects\OpenMP\| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Странные входные данные для алгоритма Фокса. По смыслу в качестве аргументов командной строки должен использоваться размер матрицы (число строк=число столбцов) и размер блока. В предположении, что размер матрицы делится нацело на размер блока. Также в аргументах может задаваться количество потоков. В общем случае количество потоков не совпадает с общим числом блоков.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Если я правильно понял, то все вышеперечисленное и включено в эти аргументы, где size - размер матрицы, procNum - количество потоков, и BlockSize - размер блока. Их можно менять и программа будет работать.
Или требуется сделать ввод со стороны пользователя именно при запуске программы уже?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Надо реализовать передачу параметров через аргументы командной строки,чтобы не пересобирать программу перед запуском.